Etkinlik Monitörü'ndeki Bellek Basıncı grafiğindeki Y değeri nasıl hesaplanır?


41

vm.memory_pressureOS 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


7
Harika soru Etkinlik Monitörü% 0 ile% 100 arasında bir ölçekte baskı gösteriyor, ancak bunun komut satırı yorumlarında referans bulamadım. Bakalım bu hafta cevap için yeteri kadar kazıp çıkaramayacağım. Yalnızca 10.10.x ile ilgilendiğinizi varsayabilir miyiz?
bmike

3
Teşekkür ederim. Ve evet, 10.10.2'deyim, yani bununla ilgilendiğim tek kişi bu.
Raugturi

5
Büyüleyici veri noktaları. Algoritmanın nasıl tasarlandığını veya kodlandığını hala belli etmiyor - veya versiyondan versiyona aynı kalsa bile. Bununla ilgili güzel yorum ve daha fazla veri için apple.stackexchange.com/questions/107126/… adresine bakın .
bmike

Yanıtlar:


2

Bu şu anda sadece kısmi bir cevaptır. Bu cevap bu cümle kaldırılana kadar tamamlanmadı.

Bu soru ile ilgili olan şey, yüzünde, Bellek Basıncı grafiğinin, OP tarafından belirtilen komutu kullanırken Terminal’de bildirilenlerle karşılaştırırken pek bir anlamı yoktur:

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

Ancak buradaki problem, bu komutun geri bildirdiği vm değerlerini sınırlandırmasıdır. Aslında, toplamda 105 değer var, ancak bu komut yalnızca aşağıdaki beş değeri bildirir:

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

NOT: Sayısal değerler normalde iki noktadan sonra görünür (:), ancak ben bunları eklemedim.

Açıkçası, 105 vm değerlerin ezici çoğunluğu, bellek basıncını belirleyen gerçek hesaplamanın bir parçası değildir, ancak buradaki sorun, yukarıdaki beş değerin bellek basıncını hesaplamak için kullanılanların olmamasıdır .

Örneğin, yukarıdaki çıktı çeşitli boş değerlerin bir kısmını sağlarken, etkin olmayan değerlerin hiçbirini sağlamaz .

Bu değerler önemlidir, çünkü bellek basıncı algoritması bu değerler arasındaki bir oranı hesaplar ve bu değerler arasındaki ilişki OP'nin sorusundaki komut tarafından üretilen çıktıdan açıkça görülmez.

Ben düşünüyorum Bu konuda daha fazla ışık tutabilir bazı teknik bilgiler olabilir. Bu cevabı haftada iki şekilde güncelleyeceğim.

[DURUM GÜNCELLEME]

Aradığım teknik bilgiyi bulamadım. Ancak, hala bazı emin değilim - muhtemelen bazı eski CDR / DVDR yedeklemeler. Bu cevabı bulduktan sonra güncelleyeceğim veya emin olduktan sonra bulamayacağım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.