ps - Resumindo os usos da memória

1

Quanto mais eu leio, mais confuso fico. Eu quero gerar uma lista de processos e seu consumo de memória (físico + virtual).

Até agora, foi o que fiz:

  • Eu tomo o VSZ de cada processo e multiplico com 1024 (em bytes)
  • Eu pego o RSS e faço o mesmo
  • Então eu subtraio o VSZ com o RSS, já que o VSZ já contém RSS

Em vez de mostrar todos os tópicos, eu resumi os processos com o mesmo usuário + comm.

Isso me dá uma lista semelhante a esta:

MEM        VMEM       PMEM        User       Command
16.27 GB   15.47 GB   811.73 MB   apache     httpd          
2.37 GB    2.19 GB    186.12 MB   mysql      mysqld         
372.99 MB  320.18 MB  52.81 MB    memcached  memcached      
985.78 MB  954.60 MB  31.18 MB    root       httpd  

A coluna MEM é basicamente VMEM (VSZ - RSS) + PMEM (o RSS).

Mas fiquei um pouco confuso com isso. O Apache gera ~ 10 threads, e essa lista diz que está consumindo 16 GB de memória. O disco rígido é de apenas ~ 14 GB e temos 8 GB de RAM.

Então eu pensei: "Embora o VSZ seja diferente para cada thread, talvez seja um valor absoluto para cada thread". Então, se eu peguei a coluna VSZ e subtrai o RSS de cada thread, eu entendi:

MEM        VMEM       PMEM        User       Command
1.38 GB    680.54 MB  737.68 MB   apache     httpd          
2.55 GB    2.37 GB    186.09 MB   mysql      mysqld         
425.80 MB  372.99 MB  52.81 MB    memcached  memcached      
1016.96 MB 985.78 MB  31.18 MB    root       httpd  

E eu pensei: "Bem, isso deve ser verdade!".

A pergunta é, estou certo? Eu simplesmente não consigo acreditar que o apache esteja consumindo 16 GB de memória.

Estou fazendo algo horrível errado aqui?

Atualizado: estou obtendo os mesmos valores ao usar top . É também uma máquina do CentOS.

    
por DavidS 04.02.2013 / 18:19

0 respostas

Tags