Bagaimana nilai Y untuk grafik Tekanan Memori di Activity Monitor dihitung?

41

Bagaimana vm.memory_pressure Nilai terikat / dihitung pada OS X 10.10.2 - Yosemite?

Saya sudah meneliti beberapa jawaban untuk pertanyaan ini dan saya mencoba beberapa hal di baris perintah untuk mendapatkan nilai yang tepat daripada melihat grafik di Activity Monitor.

Dengan sistem di bawah beban ringan:

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 2683717
vm.memory_pressure: 0
kern.memorystatus_vm_pressure_level: 1

The kern.memorystatus_vm_pressure_level terlihat benar, dan tampaknya apa yang digunakan untuk mewarnai grafik (hijau untuk 1-NORMAL, kuning untuk 2-WARN, merah untuk 4-KRITIS). Namun, vm.memory_pressure adalah 0 dan grafik memiliki sejumlah hijau untuk itu, dan itu bergerigi, artinya nilainya berubah dengan jelas dari waktu ke waktu, tidak hanya duduk di 0.

Di bawah beban berat terlihat seperti ini:

❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 32572
vm.memory_pressure: 1693
kern.memorystatus_vm_pressure_level: 4

Atau ini...

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 5431
vm.memory_pressure: 277
kern.memorystatus_vm_pressure_level: 4

Atau ini...

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 3220
vm.page_free_count: 805
vm.memory_pressure: 1
kern.memorystatus_vm_pressure_level: 4

Di sinilah aku bingung. Tidak satu pun dari nilai-nilai ini saja yang bisa menjadi nilai Y dari grafik karena beberapa alasan.

Pertama, vm.memory_pressure hanya duduk di 0 hampir sepanjang waktu di bawah beban normal, dan grafik tidak duduk di 0.

Kedua, mereka tidak konsisten satu sama lain. Melihat nilai memory_pressure, itu lebih rendah ketika itu sebenarnya ingin halaman (3220 ingin dan tekanan hanya 1) daripada ketika itu memiliki 5431 gratis dan tidak ada yang diinginkan (tekanan 277). Dan entah bagaimana tekanan itu bahkan lebih rendah daripada ketika ia memiliki 32572 gratis (dan memiliki tekanan 1693).

Jadi, ketika plot grafik itu, apa perhitungan untuk nilai Y, dan bagaimana saya bisa mendapatkan data yang saya butuhkan untuk menghitungnya dari baris perintah? Saya ingin membuat alat baris perintah yang akan memuntahkan persentase seberapa tinggi garis saat ini pada grafik itu, jadi saya perlu tahu cara menghitung nilai pada waktu tertentu, serta berapa kisaran nilai yang mungkin adalah.

Raugturi
sumber
7
Pertanyaan bagus Monitor Aktivitas menunjukkan tekanan pada skala dari 0% hingga 100% tetapi saya belum menemukan referensi pada komentar baris perintah ini. Saya akan melihat apakah saya dapat menggali cukup untuk jawaban minggu ini. Bisakah kami menganggap Anda hanya tertarik pada 10.10.x?
bmike
3
Terima kasih. Dan ya, saya di 10.10.2, jadi itu satu-satunya yang saya khawatirkan untuk ini.
Raugturi
5
Poin data yang menarik. Masih belum jelas bagi saya bagaimana algoritma dirancang atau dikodekan - atau bahkan jika itu tetap sama dari versi ke versi. Lihat apple.stackexchange.com/questions/107126/… untuk komentar yang bagus dan lebih banyak data tentang ini.
bmike

Jawaban:

2

Saat ini hanya sebagian jawaban. Jawaban ini tidak lengkap sampai kalimat ini dihapus.

Satu hal tentang pertanyaan ini adalah bahwa di hadapannya, grafik Tekanan Memori tidak cukup masuk akal ketika membandingkannya dengan apa yang dilaporkan di Terminal saat menggunakan perintah yang diuraikan oleh OP:

sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level

Namun, masalahnya di sini adalah bahwa perintah ini membatasi nilai vm yang dilaporkan kembali. Sebenarnya, sebenarnya ada 105 nilai secara total tetapi perintah ini hanya melaporkan lima nilai berikut:

vm.vm_page_free_target:
vm.page_free_wanted:
vm.page_free_count:
vm.memory_pressure:
kern.memorystatus_vm_pressure_level:

CATATAN: Nilai numerik biasanya akan muncul setelah titik dua (:), namun saya belum menyertakan ini.

Jelas, sebagian besar dari nilai 105 vm bukan bagian dari perhitungan aktual yang menentukan tekanan memori, tetapi masalahnya di sini adalah bahwa lima nilai di atas bukan satu-satunya yang digunakan untuk menghitung tekanan memori .

Misalnya, sementara output di atas menyediakan beberapa variasi bebas nilai, itu tidak menyediakan apapun non-aktif nilai, dll.

Nilai-nilai ini penting karena algoritma tekanan memori menghitung rasio antara nilai-nilai itu, dan hubungan antara nilai-nilai itu tidak terlihat dari output yang dihasilkan oleh perintah dalam pertanyaan OP.

saya berpikir Saya mungkin memiliki beberapa informasi teknis yang dapat menjelaskan hal ini. Saya akan memperbarui jawaban ini dalam minggu ini.

[UPDATE STATUS]

Saya tidak dapat menemukan informasi teknis yang saya cari. Namun, saya cukup yakin saya masih memilikinya - mungkin pada beberapa cadangan CDR / DVDR lama. Saya akan memperbarui jawaban ini setelah saya menemukannya, atau setelah saya yakin saya tidak akan menemukannya.

Monomeeth
sumber