Tekanan memori bukan ukuran sederhana dari persentase memori bebas dan tampaknya menjadi grafik 0 hingga 100%. The sysctl
nilai vm.memory_pressure
dihitung dalam kaitannya dengan target dihitung yang melacak rasio antara halaman memori bebas dan aktif ke halaman kabel dan aktif. Penghitung absolut dilihat menggunakan vm_stat
alat baris perintah untuk memeriksa alokasi rinci memori virtual. Jonathan Levin memiliki dokumentasi yang sangat baik di http://newosxbook.com/articles/MemoryPressure.html yang meliputi memori virtual macOS dan iOS dan bagaimana mereka menghitung tekanan memori serta tindakan yang diambil ketika indeks tekanan tinggi.
Memori virtual yang relevan (vm) yang memberi makan perhitungan vm.memory_pressure
adalah:
vm.page_free_count
- jumlah absolut halaman gratis
vm.vm_page_free_target
- target atau sasaran yang dihitung untuk situasi "bebas tekanan"
vm.page_free_wanted
- apa yang ingin dibebaskan oleh sistem vm untuk meringankan indeks tekanan yang dihitung saat ini
Jadi - jika Anda melacak tekanan memori Anda dengan Monitor aktivitas (atau saya memeriksa nilai sysctl secara terprogram atau di shell baris perintah) Anda sebaiknya melihat empat nilai ini:
sysctl -a vm | egrep "page_free|pressure"
Ada perintah baru yang memory_pressure
diperkenalkan dengan Mavericks dan ketika saya menjalankannya untuk mengarahkan subsistem memori ke status peringatan - Anda dapat melihat tekanan memori meningkat menjadi rentang kuning.
Alat ini dialokasikan sekitar 4 GB memori untuk alat seperti grafik tekanan meningkat terus ke negara ini di mana tampaknya "peringatan" level grafiknya: sudo memory_pressure -l warn
. Seperti yang Anda lihat, sistem sebelum tekanan digunakan 5,9 GB dan setelah itu digunakan hingga 7,99 GB yang bahkan tidak perlu ditambah karena swapping dan kompresi.
Setelah menonton bagaimana vm_stat 15
menunjukkan hasil peringatan tanpa paging yang terukur, saya keluar dari alat (Control-C) dan kemudian menjalankan kembali alat untuk membuat tekanan memori menjadi kritis:sudo memory_pressure -l critical
Saya tidak membiarkan ini berjalan lebih dari beberapa menit karena paging mulai dan begitu alat mengatakan saya punya 5 GB RAM untuk disk, saya tidak ingin mengisi drive saya dan keluar dari alat.
Anda dapat mengamati seberapa cepat sistem membebaskan RAM setelah peringatan itu berakhir dan juga bagaimana ia merambah ke wilayah "merah" untuk menunjukkan bahwa sistem memori virtual tidak dapat mengompres halaman yang cukup untuk menghindari pertukaran ke disk. Tebakan saya yang berpendidikan merah pada tekanan menunjukkan swapping dan alokasi berlebihan yang dramatis dan / atau waktu di mana halaman gratis di bawah jumlah yang disukai sistem dan secara aktif membersihkan halaman tidak aktif dan / atau halaman swapping yang diharapkan akan digunakan untuk bertukar. Demikian pula, sistem dengan cepat pulih setelah alokasi dirilis dan tekanan diambil dari sistem memori virtual.