Por que os processos no Mac não somam a memória física total?

0

A execução de ps -ax -O 'rss user %mem deve invocar todos os processos que atualmente contribuem para o Active ou o Wired, nas definições do Mac

"Ativo + Com fio + Inativo + Livre = Memória física total", certo?

O Monitor de Atividades estava exibindo um alto uso de mems Ativo e a contagem de mãos mostrava números baixos, então eu contei novamente com o script awk abaixo.

Observe a tela do Activity Monitor 1 para 'Ativo' e 'Com fio'. No momento da captura, os processos 'root' mostram ~ 377MiB e o total não-root ~ 1805MiB está próximo.

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

No entanto, fechar o Chrome torna o problema mais claro. Eu tenho uma tela Activity Monitor 2 , com saída de script. Aqui, nem a memória Ativo nem a Wired correspondem.

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 }'

exemplo de saída

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

Isso está causando dor de cabeça. Ref da imagem:

    
por HeyWatchThis 23.08.2012 / 09:09

1 resposta

0

O ps exibe estatísticas apenas para processos do usuário . Não reporta estatísticas sobre o kernel . Portanto, não espere que a memória reportada pelo ps some ao total da memória física.

Você também parece ter entendido mal alguns conceitos-chave de sistemas operacionais semelhantes a unix e gerenciamento de memória OSX. Eu não sei dizer exatamente, mas aqui

  1. root! = kernel : root também é um usuário.
  2. memória com fio! = memória usada pelos processos raiz
  3. memória ativa! = memória usada pelos seus processos
  4. A memória inativa não funciona da maneira que se pode pensar : inclui também a memória dos processos em execução. Leia esta questão que fornece algumas dicas sobre a memória inativa.

A conclusão é que não há correlação trivial entre as estatísticas de memória agregada do Activity Monitor e as estatísticas de uso de memória relatadas por ps.

    
por 24.08.2012 / 21:28