Запуск ps -ax -O 'rss user %mem должен вызвать все процессы, которые в настоящее время вносят вклад в Active или Wired, в определениях Mac для

«Активный + Проводной + Неактивный + Свободный = Общая физическая память», верно?

Activity Monitor показывал высокое использование Active mem, а подсчет рук показывал низкие цифры, поэтому я пересчитал с помощью приведенного ниже скрипта awk.

Обратите внимание на скриншот 1 монитора активности для «Активный» и «Проводной». Во время захвата «корневые» процессы показывают ~ 377 МБ, а общее количество без root ~ 1805 МБ близко.

total: root  376632 KiB, and  active  1805476 KiB , percent :  51.9
% root  8.4
% active  43.5

Скриншот

Однако закрытие Chrome делает проблему более понятной. У меня есть скриншот 2 монитора активности с выводом скрипта. Здесь ни Активная, ни Проводная память не совпадают.

total: root  365968 KiB, and  active  643880 KiB , percent :  23.6
% root  8.2
% active  15.4

Скриншот

mem_count.sh:

 3 ps -axmc -O 'rss user %mem' | awk '
 4 
 5 BEGIN { 
 6     root = 0 ; active = 0 ; percent_root = 0.0 ;
 7     percent_active = 0.0  ; percent = 0.0 ; 
 8 } 
 9 
10 { 
11 percent += $4
12 if ( $3 == "root")  {  
13     root += $2 
14     percent_root  += $4 ; 
15 } 
16 else {  
17     active += $2  
18     percent_active  += $4 ; 
19 } 
20 
21 } 
22 END {
23     print "total: root ", root, "KiB, and  active ", active , "KiB , percent : ", percent  ; 
24     print "% root " , percent_root      
25     print "% active " , percent_active    
26 }'

образец вывода

$ ps -axmc -O 'rss user %mem'
PID    RSS USER             %MEM   TT  STAT      TIME COMMAND
37 160964 root              3.8   ??  Ss    20:22.92 mds 
...

Это вызывает небольшую головную боль. Ссылка на изображение:

1 ответ1

0

ps отображает статистику только для пользовательских процессов. Он не сообщает статистику о ядре. Так что не ожидайте, что память, о которой сообщает ps, когда-либо будет составлять общую физическую память.

Вы также, кажется, неправильно поняли некоторые ключевые понятия Unix-подобных операционных систем и управления памятью OSX. Я не могу сказать, что именно, но здесь

  1. корень!= kernel: root также пользователь.
  2. проводная память!= память, используемая корневыми процессами
  3. активная память!= память, используемая вашими процессами
  4. неактивная память работает не так, как можно подумать: она также включает память запущенных процессов. Прочитайте этот вопрос, который дает некоторое представление о неактивной памяти.

Суть в том, что нет никакой тривиальной корреляции между совокупной статистикой памяти монитора активности и статистикой использования памяти, сообщаемой ps.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .