Come viene calcolato il valore Y per il grafico della pressione della memoria in Monitoraggio attività?

41

In che modo il valore di vm.memory_pressure è limitato / calcolato su OS X 10.10.2 - Yosemite?

Ho studiato diversi risponde a questa domanda e sto provando alcune cose sulla riga di comando per ottenere valori esatti piuttosto che guardare i grafici in Activity Monitor.

Con il sistema in condizioni di carico leggero:

~ ❯❯❯ 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

Il kern.memorystatus_vm_pressure_level sembra giusto e sembra essere quello che usa per colorare il grafico (verde per 1-NORMAL, giallo per 2-WARN, rosso per 4-CRITICAL). Tuttavia, vm.memory_pressure è 0 e il grafico ha una certa quantità di verde, ed è frastagliato, il che significa che il valore cambia chiaramente nel tempo, non solo seduto a 0.

In condizioni di carico pesante, appare come segue:

❯❯❯ 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

O questo ...

~ ❯❯❯ 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

O questo ...

~ ❯❯❯ 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

Ecco dove sono confuso. Nessuno di questi valori da solo potrebbe essere il valore Y del grafico per un paio di motivi.

Innanzitutto, vm.memory_pressure si trova a 0 quasi tutto il tempo sotto carico normale e il grafico non si trova a 0.

In secondo luogo, non sono coerenti tra loro. Guardando il valore memory_pressure, è inferiore quando effettivamente voleva pagine (3220 voluto e pressione di solo 1) rispetto a quando aveva 5431 libero e nessuno voleva (la pressione era 277). E in qualche modo è anche una pressione inferiore rispetto a quando aveva 32572 gratis (e aveva una pressione di 1693).

Quindi, quando traccia questo grafico, qual è il calcolo per il valore Y e come posso ottenere i dati che mi servono per calcolarlo dalla riga di comando? Sto cercando di creare uno strumento a linea di comando che sputerà una percentuale di quanto alta sarà la linea corrente su quel grafico, quindi ho bisogno di sapere come calcolare il valore in un dato momento, così come quale intervallo di i valori possibili sono.

    
posta Raugturi 02.02.2015 - 21:48
fonte

1 risposta

2

Questa è attualmente solo una risposta parziale. Questa risposta non è completa fino alla rimozione di questa frase.

La questione di questa domanda è che, a prima vista, il grafico della pressione della memoria non ha senso quando lo si confronta con ciò che è riportato in Terminal quando si utilizza il comando delineato dall'OP:

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

Tuttavia, il problema qui è che questo comando limita i valori di vm che sta segnalando. In realtà, ci sono in realtà 105 valori in totale, ma questo comando riporta solo i seguenti cinque valori:

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

NOTA: i valori numerici normalmente appaiono dopo i due punti (:), tuttavia non li ho inclusi.

Ovviamente, la stragrande maggioranza dei valori di 105 vm non fa parte del calcolo effettivo che determina la pressione della memoria, ma il problema qui è che i cinque valori sopra indicati non sono gli unici usati per calcolare la pressione della memoria .

Ad esempio, mentre l'output sopra riportato fornisce alcuni dei vari valori gratuiti , non fornisce nessuno dei valori inattivi, ecc.

Questi valori sono importanti perché l'algoritmo di pressione della memoria calcola un rapporto tra questi valori, e la relazione tra tali valori non è evidente dall'output prodotto dal comando nella domanda dell'OP.

I penso potrei avere alcune informazioni tecniche che possono far luce su questo. Aggiornerò questa risposta in entrambi i modi entro la settimana.

[STATUS UPDATE]

Non sono riuscito a trovare le informazioni tecniche che stavo cercando. Tuttavia, sono abbastanza sicuro di averlo ancora, probabilmente su alcuni vecchi backup CDR / DVDR. Aggiornerò questa risposta una volta trovata, o dopo che sono certo che non la troverò.

    
risposta data 11.09.2017 - 11:52
fonte

Leggi altre domande sui tag