Como o htop “Swp” é calculado?

5

Quando eu executo o htop (no OS X 10.6.8), vejo algo assim:

  1  [|||||||                    20.0%]     Tasks: 70 total, 0 running
  2  [|||                         7.2%]     Load average: 1.11 0.79 0.64 
  3  [|||||||||||||||||||||||||||81.3%]     Uptime: 00:30:42
  4  [||                          5.8%]
  Mem[|||||||||||||||||||||3872/4096MB]
  Swp[                           0/0MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command                                                                      
  284 501       57   0 15.3G 1064M     0 S  0.0  6.5  0:01.26 /Applications/Firefox.app/Contents/MacOS/firefox -psn_0_90134                
  437 501       57   0 14.8G  785M     0 S  0.0  4.8  0:00.18 /Applications/Thunderbird.app/Contents/MacOS/thunderbird -psn_0_114716
  428 501       63   0 12.8G  351M     0 S  1.0  2.1  0:00.51 /Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/
  696 501       63   0 11.7G  175M     0 S  0.0  1.1  0:00.02 /System/Library/Frameworks/QuickLook.framework/Resources/quicklookd.app/Conte
   38 0         33   0 11.1G  422M     0 S  0.0  2.6  0:00.59 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framewo
  183 501       48   0 10.9G  137M     0 S  0.0  0.8  0:00.03 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

Como posso ter Processos usando Gigabytes de memória VIRT e ainda 0MB de Swap usado?

    
por Weier 30.09.2012 / 11:01

2 respostas

6

VIRT não tem nada a ver com a memória usada (virtual ou não), mas com o espaço de endereço usado , que não é tão relacionado quanto você possa imaginar.

Os sistemas operacionais modernos (incluindo o OSX) têm um recurso chamado solicitação de paging , que funciona informando ao sistema operacional para mapear um determinada região do espaço de endereço virtual para um arquivo (como uma biblioteca / DLL compartilhada). É somente quando um programa tenta ler os endereços virtuais que o arquivo é carregado na memória.

Se essas bibliotecas compartilhadas forem de fato compartilhadas, o sistema operacional compartilhará a memória física em vários processos; Isso quer dizer que muitas dessas dezenas de gigabytes não são apenas bibliotecas suportadas por arquivos, mas também as bibliotecas suportadas por arquivos mesmo .

Além disso, se a memória temporária for necessária (para dados, configurações, bitmaps, sons etc.) e não houver páginas físicas não usadas, o sistema operacional descartará o conteúdo dessas regiões com backup de arquivo e as concederá. à sua aplicação. Se essas páginas forem necessárias novamente, o sistema operacional pode simplesmente recarregá-las do disco.

Trocar ( SWP ) é uma região especial suportada por arquivos para essa memória temporária. Criar um espaço de troca permitirá que o sistema operacional mova essa memória temporária para o disco em vez de bibliotecas compartilhadas (utilizadas por mais processos em execução), geralmente melhorem o desempenho e, talvez o mais surpreendente de tudo, produza menos troca do que não ter nenhum espaço de troca.

    
por 30.09.2012 / 12:30
3

Você ainda tem memória de sobra. O sistema não está sendo trocado porque ainda não precisou ... mas, novamente, percebo algo estranho - pelo que sei, você não tem espaço de troca configurado. Em um dos meus sistemas (linux), ele lê

  CPU[||||||||||||||||||||     63.2%]     Tasks: 89, 114 thr; 1 running
  Mem[|||||||||||||||||   167/1001MB]     Load average: 0.19 1.13 0.75 
  Swp[                      0/1021MB]     Uptime: 00:06:54

por exemplo.

Não tenho certeza se isso é um capricho do OS X ou algum outro problema. Você pode querer verificar isso com o monitor de atividades

    
por 30.09.2012 / 11:12