Pertukaran tampaknya terjadi ketika halaman RAM tidak aktif sebenarnya aktif.
( Pembaruan: seperti yang telah diklarifikasi dalam komentar, ini bukan kasus Anda. Jadi, orang dengan masalah yang sama dapat beralih ke aturan horizontal .)
Yaitu Anda memiliki banyak program yang berjalan dan kernel menukar beberapa halaman. Kemudian Anda berhenti dari beberapa program. Kernel menandai halaman RAM mereka sebagai tidak aktif. Tetapi itu tidak akan menukar halaman kembali ke RAM sampai halaman ini diperlukan. Ini menghasilkan halaman yang tidak aktif dan tidak aktif.
Mengapa tidak terlebih dahulu bertukar halaman? Karena itu akan bertaruh melawan peluang: dalam jangka panjang Anda kalah. Mari kita pikirkan contoh sederhana: Dua program A dan B yang tidak sesuai dengan RAM secara bersamaan. Program A masih berjalan dan semua halaman yang ditukar menjadi milik A. Program B telah berhenti dan semua halaman tidak aktif milik B.
Jika kernel terlebih dahulu bertukar halaman A dan segera setelahnya:
- Program A perlu mengakses halamannya -> Anda menang - halaman sudah ada dalam RAM.
- Anda meluncurkan B lagi -> Anda kehilangan - Anda "membayar" biaya untuk membawa halaman ke RAM dan sekarang Anda harus mengirimnya kembali.
- Anda meluncurkan program lain C -> Anda kehilangan jika A dan C tidak sesuai dengan RAM pada saat yang sama. Jika cocok, Anda seimbang.
Juga pertimbangkan bahwa menukar (menulis ke disk) lebih mahal daripada menukar (membaca dari disk). Yang membuat "taruhan" ini bahkan lebih tidak menarik.
Singkatnya: percayai kernel Anda dan jangan mencoba mengakali itu.
Pembaruan:
Ternyata memori tidak aktif tidak berfungsi karena Menggunakan Activity Monitor untuk membaca artikel Memori Sistem telah membuat banyak orang percaya itu berfungsi. Definisi yang diberikan dalam artikel untuk memori tidak aktif benar:
Informasi ini dalam RAM tetapi tidak aktif digunakan, ini baru saja digunakan.
Tetapi contoh berikut ini benar-benar menyesatkan dan terlalu disederhanakan (seperti contoh saya jujur):
Misalnya, jika Anda telah menggunakan Mail dan kemudian berhenti, RAM yang digunakan Mail ditandai sebagai Memori tidak aktif. Memori tidak aktif tersedia untuk digunakan oleh aplikasi lain, seperti halnya memori bebas. 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 memuatnya dari drive yang lebih lambat.
Saya mencari lebih banyak sumber daring dan berakhir di utas ini di milis darwin kernel yang cukup informatif. Mengutip Jim Magee (dari tim darwin - saya pikir):
Singkatnya, sistem VM kernel ketika berhadapan dengan tekanan memori memindai melalui halaman yang digunakan dan mencoba untuk menjaga mereka dalam keseimbangan antara tanda aktif dan tidak aktif. Halaman tidak aktif dipindai untuk digunakan kembali sementara ditandai sebagai tidak aktif. Jika mereka telah digunakan kembali, mereka ditandai sebagai aktif dan beberapa halaman lain harus pindah dari status aktif ke tidak aktif untuk mendeteksi jika sedang digunakan. Jadi, tidak aktif adalah keliru. Ini adalah singkatan untuk "mungkin tidak aktif, mari kita coba verifikasi itu."
Seperti yang Anda temukan, keseimbangan internal yang kami (saat ini) perjuangkan adalah sekitar 2/3 aktif vs 1/3 tidak aktif ...
Ini menjelaskan perilaku yang Anda amati. Yaitu halaman tidak aktif yang Anda lihat milik menjalankan program yang belum digunakan baru-baru ini. Jadi, ketika Anda menjalankan program baru, halaman tidak aktif diganti. Pada saat yang sama halaman dari program lain ditandai sebagai tidak aktif untuk mempertahankan rasio 2/1 dari aktif dan tidak aktif.
The benang juga berisi beberapa saran untuk mempelajari lebih lanjut tentang internal darwin. Ada juga beberapa saran jika Anda mulai menyelidiki penggunaan memori karena masalah bola pantai (yang biasanya tidak ada hubungannya dengan itu).
Kesimpulannya tetap sama: Percayai kernel Anda dan jangan mencoba mengakali itu. :-)