vm.memory_pressure
OS X 10.10.2 - Yosemite'de değer nasıl sınırlanır / hesaplanır?
Bu sorunun birkaç yanıtını araştırdım ve Aktivite İzleyicisi'ndeki grafiklere bakmak yerine, tam değerleri elde etmek için komut satırında birkaç şey deniyorum.
Sistem hafif yük altındayken:
~ ❯❯❯ 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
Kern.memorystatus_vm_pressure_level doğru görünüyor ve grafiği renklendirmek için kullandığı gibi görünüyor (1-NORMAL için yeşil, 2-WARN için sarı, 4-KRİTİK için kırmızı). Bununla birlikte, vm.memory_pressure 0'dır ve grafikte yeşil bir miktar miktar bulunur ve pürüzlüdür, yani değer yalnızca 0'da oturmak yerine zaman içinde açıkça değişir.
Ağır yük altında bu gibi görünüyor:
❯❯❯ 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
Veya bu...
~ ❯❯❯ 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
Veya bu...
~ ❯❯❯ 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
İşte kafam karıştı. Bu değerlerin hiçbiri tek başına muhtemelen birkaç nedenden dolayı grafiğin Y değeri olamaz.
İlk önce, vm.memory_pressure normal yük altında neredeyse her zaman sadece 0'da oturur ve grafik 0'da durmaz.
İkincisi, birbirleriyle tutarlı değillerdir. Memory_pressure değerine baktığımızda, sayfalar (3220 istedi ve sadece 1 baskı) gerçekte 5431 boş ve hiçbiri istenmediklerinden (baskı 277) olduğundan daha düşüktü. Ve bir şekilde bu, 32572 serbestken (ve 1693 basıncında) olduğundan daha düşük bir basınç oluşturuyor.
Öyleyse, bu grafiği çizdiğinde, Y değerinin hesaplanması nedir ve onu hesaplamak için gereken verileri komut satırından nasıl alabilirim? Şu anki çizginin o grafikte ne kadar yüksek olacağını gösteren bir komut satırı aracı yapmak istiyorum, bu nedenle, değerin herhangi bir zamanda nasıl hesaplanacağını ve ne kadarlık bir aralıkta hesaplanacağını bilmem gerekiyor olası değerler