Les lectures de mémoire OSX de vm_stat et Activity Monitor.app ne concordent pas


4

J'essaie d'écrire un script pour surveiller l'état de la mémoire. Voici ce que j'ai jusqu'à présent:

# Memory Usage
ramactive=$(vm_stat | grep "Pages active" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
ramwired=$(vm_stat | grep "Pages wired" | while read a b c d; do echo "$((${d%?}*4096/1024/1024))"; done)
ramspec=$(vm_stat | grep "Pages speculative" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
raminactive=$(vm_stat | grep "Pages inactive" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
ramfree=$(vm_stat | grep "Pages free" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
rampurge=$(vm_stat | grep "Pages purgeable" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)

printf "RAM\n"
printf "%-11s%'.f MB Used\n" "Active:" "$ramactive"
printf "%-11s%'.f MB Used\n" "Wired:" "$ramwired"

printf "%-11s%'.f MB Used\n" "Inactive:" "$raminactive"
printf "%-11s%'.f MB Used\n" "Spec:" "$ramspec"
printf "%-11s%'.f MB Used\n" "Cached:" "$(($ramspec+$raminactive))"

printf "%-11s%'.f MB Used\n" "Free:" "$ramfree"

printf "%-11s%'.f MB Used\n" "Total Used:" "$(($ramwired+$ramactive))"
printf "%-11s%'.f MB Used\n" "Used-Purge:" "$(($ramwired+$ramactive-$rampurge))"
printf "%-11s%'.f MB Used\n" "Total Free:" "$(($ramfree+$ramspec+$raminactive))"
printf "%-11s%'.f MB Used\n" "Total RAM:" "$(($ramactive+$ramwired+$ramspec+$raminactive+$ramfree))"

Je suis juste en train d'expérimenter ici, donc ce n'est pas le script final. Mais je ne parviens pas à faire correspondre les chiffres et le moniteur d'activité. Par exemple, la mémoire active + câblée indique ici une capacité de 9 Go sur mon ordinateur, alors qu'Activity Monitor affirme ne faire que 6,5 Go. La lecture de mémoire câblée correspond, mais pas la lecture active. Qu'est-ce que j'oublie ici?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.