'echo :: memstat | mdb -k 'muito lento em certas máquinas

1

Como afirmado no título, quando executo echo ::memstat | mdb -k em certas máquinas, é muito lento. Meus gráficos munin mostram uma carga de CPU muito maior quando eu o executo regularmente. Eu pretendo usar ::memstat como entrada para gráficos munin, então ele precisa ser executado com freqüência.

Enquanto o processo está em execução, vejo isso na prstat output:

   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP       
  6865 root       14M   12M cpu2     0    0   0:00:26  23% mdb/1
  6868 root       14M   12M cpu1     0    0   0:00:26  23% mdb/1

Como você pode ver, ele já está em funcionamento há 26 segundos. O monitoramento prstat mostra um uso crescente da CPU durante os processos em tempo de execução. Precisa de cerca de 30 segundos para terminar.

Em outra máquina (concedida, em termos de hardware, ela é mais robusta), ela é executada muito mais rapidamente. O ponto é que ele é executado muito mais rápido, como seria de esperar da comparação das especificações de hardware (8 GB versus 12 GB de memória, 8 núcleos vs 4 núcleos, SunOS 5.10 Generic_147441-01 i86pc i386 i86pc vs SunOS 5.10 Generic_127128-11 i86pc i386 i86pc ). Mas esse não é o ponto real. Meu principal problema é que echo ::memstat | mdb -k leva 30 segundos para ser concluído.

Alguém pode explicar o que está acontecendo aqui? O que poderia explicar a "lentidão"?

    
por exhuma 26.04.2012 / 15:19

1 resposta

2

As versões mais antigas do Solaris têm uma operação ::memstat muito mais lenta, devido principalmente a um grande número de disparos de TLB necessários. (E o fato de que ninguém ainda se importou em criar o perfil e otimizá-lo.) As versões mais recentes (Solaris 10 Update 8) têm uma versão otimizada. Veja os comentários.

    
por 27.04.2012 / 01:40