Sebuah fenomena umum dalam penggunaan sehari-hari saya (dan beberapa lainnya menurut berbagai posting di internet) dari OS X, sistem tampaknya menjadi lambat setiap kali tidak ada lagi memori "Gratis" yang tersedia. Seharusnya, ini karena swapping, karena aktivitas hard disk sudah jelas dan vm_stat melaporkan banyak pageouts. (Koreksi saya dari yang salah)
Namun, jumlah ram "Tidak Aktif" biasanya sekitar 12,5% -25% dari semua memori yang tersedia (^ 1.) Ketika bertukar mulai / terjadi / berakhir.
Menurut http://support.apple.com/kb/ht1342 :
Memori tidak aktif
Informasi ini dalam memori tidak sedang digunakan secara aktif, tetapi baru-baru ini digunakan.
Misalnya, jika Anda telah menggunakan Mail dan kemudian berhenti, RAM yang digunakan Mail ditandai sebagai Memori tidak aktif. Memori tidak aktif ini tersedia untuk digunakan oleh aplikasi lain, sama seperti memori Gratis. Namun, jika Anda membuka Mail sebelum memori tidak aktifnya digunakan oleh aplikasi yang berbeda, Mail akan terbuka lebih cepat karena memori tidak aktif dikonversi ke memori aktif, daripada memuat email dari hard disk yang lebih lambat.
Dan menurut http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html :
Daftar tidak aktif berisi halaman yang saat ini ada dalam memori fisik tetapi belum diakses baru-baru ini. Halaman-halaman ini berisi data yang valid tetapi dapat dilepaskan dari memori kapan saja .
Jadi, pada dasarnya: Ketika sebuah program telah berhenti, ingatannya menjadi tidak aktif dan harus dapat diklaim kapan saja. Namun, OS X akan lebih memilih untuk mulai menukar memori ke file Swap daripada hanya mengklaim memori ini, setiap kali "Gratis" memori menjadi rendah.
Mengapa? Apa keuntungan dari perilaku ini, katakanlah, secara instan melepaskan memori tidak aktif dan bahkan tidak menyentuh file swap? Beberapa sumber (^ 2.) Menunjukkan bahwa OS X akan mengeluarkan memori "Tidak Aktif" untuk bertukar sebelum melepaskannya, tetapi itu tidak masuk akal sekarang apakah itu jika memori dapat dilepaskan dari memori kapan saja ? Bertukar itu mahal, melepaskan itu murah, kan?
Bisakah perilaku ini diubah menggunakan beberapa preferensi atau peretasan yang dikenal? (Lebih disukai yang tidak termasuk menonaktifkan swap / dynamic_pager sama sekali dan memulai kembali ...)
Saya sangat menghargai perintah pembersihan , serta konsep Memperbaiki izin disk untuk memaksa beberapa memori Gratis, tetapi itu adalah cara untuk secara paksa memaksa lebih banyak memori Gratis daripada benar-benar memperbaiki logika keputusan swap / release ...
Btw pertanyaan serupa ditanyakan di sini: http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/ dan di sini: http: //hintsforums.macworld .com / showthread.php? t = 87688 tetapi meskipun OP kembali menanyakan pertanyaan inti, tidak ada jawaban yang menjawabnya ...
^ 1. UPDATE 17-mar-2012 Sejak saya pertama kali memposting pertanyaan ini, saya telah beralih dari 4GB menjadi 8GB ram yang terpasang, dan masalahnya tetap ada. Jumlah ram "Tidak Aktif" adalah 0,5gb-1,0gb sebelumnya dan sekarang biasanya sekitar 1,0-2,0GB ketika bertukar mulai / terjadi / berakhir, yaitu tampaknya sekitar 12,5% -25% ram disimpan sebagai Tidak Aktif oleh osx logika kernel.
^ 2. Misalnya https://apple.stackexchange.com/questions/4288/what-does-it-mean-if-i-have-lots-of-inactive-memory-at-the-end-of-a-work- hari :
Setelah semua memori Anda digunakan (memori bebas adalah 0), OS akan menuliskan memori tidak aktif ke swapfile untuk membuat lebih banyak ruang dalam memori aktif.
PEMBARUAN 17-mar-2012
Berikut adalah ringkasan metode yang telah disarankan untuk membantu sejauh ini:
The purge perintah
"Digunakan untuk memperkirakan kondisi boot awal dengan cache buffer hard disk untuk analisis kinerja. Ini tidak memengaruhi memori anonim yang telah dialokasikan melalui malloc, vm_allocate, dll".
Ini berguna untuk mencegah osx untuk menukar cache disk (yang konyol bahwa OSX sebenarnya melakukannya di tempat pertama), tetapi dengan downside bahwa cache disk dilepaskan, artinya jika cache disk tidak akan menjadi swap, seseorang hanya akan berakhir dengan cache buffer disk dingin, mungkin mempengaruhi kinerja negatif.
The FreeMemory aplikasi dan / atau Perbaikan izin disk untuk memaksa beberapa memori Gratis
Tidak membantu melepaskan memori apa pun, hanya memindahkan beberapa gigabytes isi memori dari ram ke hd. Pada akhirnya, ini menyebabkan banyak swap-in ketika saya mencoba untuk menggunakan aplikasi yang terbuka saat membebaskan memori, karena banyak vm-nya sekarang di swap.
Mempercepat alokasi swap menggunakan dynamicpagerwrapper
Tampaknya hal yang baik untuk dilakukan dalam rangka mempercepat penggunaan swap, tetapi tidak membahas masalah swapping osx di tempat pertama sementara masih ada memori tidak aktif.
Menonaktifkan swap dengan menonaktifkan dynamicpager dan memulai kembali
Ini akan memaksa osx untuk tidak menggunakan swap dengan harga tergantung sistem ketika semua memori digunakan. Bukan alternatif yang layak ...
Menonaktifkan swap menggunakan dynamicpager yang diretas
Mirip dengan menonaktifkan dynamicpager di atas, beberapa kutipan dari komentar ke posting blog menunjukkan bahwa ini bukan solusi yang layak: "Memori Tidak Aktif tinggi seperti biasa". "ketika sistem Anda kehabisan memori, seluruh os hang ...", "jika Anda mengkonsumsi seluruh jumlah memori mac, mesin kemungkinan akan hang"
Singkatnya, saya masih tidak mengetahui cara menonaktifkan Mac OS X dari menggunakan swap ketika masih ada memori "tidak aktif". Jika tidak memungkinkan, mungkin setidaknya ada penjelasan di suatu tempat mengapa osx lebih memilih untuk menukar memori yang dapat dilepaskan dari memori kapan saja ?