Definição dessas métricas registradas em / proc / vmstat no RHEL 5.3 (paginação / troca?)

2

Esta pergunta está relacionada à definição de métricas específicas registradas em / proc / vmstat no RHEL 5.3.

Estou usando o nmon para monitorar um teste de carga que consiste em simular 2500 usuários realizando uma carga de trabalho em uma hora. Recentemente, vi um desempenho ruim e estou no processo de diagnosticar e excluir várias considerações.

Nós estamos rodando o servidor Red Hat Enterprise Linux versão 5.3 (Tikanga) no vmware ESX. O servidor físico estou focando em execuções e no Oracle Application Server (isso inclui o servidor HTTP Apache e o contêiner OC4J J2EE).

Os gráficos nmon que estou visualizando estão mostrando alocação consistente para a métrica pswpin. Resumido como; min = 4312; max = 245352; avg = 86734. Nmon mostra esses valores medidos em "kBytes por segundo"

As métricas a seguir são zero durante o teste;

  • pswpout
  • pgpgin
  • pgpgout

Estou confuso sobre o significado dessa combinação de métricas, considerando meu entendimento sobre paginação e troca.

Minhas perguntas:

  1. Alguém pode confirmar o que essas métricas representam?
  2. Alguma idéia de qual comportamento do sistema pode causar esse tipo de comportamento da VM?

No momento, estou tentando excluir problemas de memória virtual como causa de baixo desempenho.

EDITAR: Encontrei evidências de um grande número de chamadas fork () durante o teste. Eu suspeito que os daemons do Apache. Mas poderia processar a criação ser a causa dessas métricas?

EDITAR: adicionei uma amostra típica da saída da VM do nmon. Desculpas pela má formatação.

Agradecemos antecipadamente por qualquer resposta.

T0001   -1  22  -1  -1  -1  150 -1  -1  -1  5196046163  -1  0   30  100199751   3060    -1  0   -1  885 -1  -1  -1  46163   -1  -1  18  -1  828189171   -1  -1  3838    -1  -1  -1  -1  -1  165231  
03:07:23    Paging and Virtual Memory   nr_dirty    nr_writeback    nr_unstable nr_page_table_pages nr_mapped   nr_slab pgpgin  pgpgout pswpin  pswpout pgfree  pgactivate  pgdeactivate    pgfault pgmajfault  pginodesteal    slabs_scanned   kswapd_steal    kswapd_inodesteal   pageoutrun  allocstall  pgrotated   pgalloc_high    pgalloc_normal  pgalloc_dma pgrefill_high   pgrefill_normal pgrefill_dma    pgsteal_high    pgsteal_normal  pgsteal_dma pgscan_kswapd_high  pgscan_kswapd_normal    pgscan_kswapd_dma   pgscan_direct_high  pgscan_direct_normal    pgscan_direct_dma
03:07:33    -1  99  -1  -1  -1  241 0   0   0   77526   0   0   0   824 0   0   0   0   0   0   0   0   77526   0   0   0   0   0   0   0   78216   0   0   0   0   0   0   
03:07:43    -1  10  -1  -1  -1  262 0   0   0   21653   0   0   8   500 2   0   0   0   0   0   0   0   21653   0   0   0   0   0   0   0   17675   0   0   0   0   0   0   
03:07:53    -1  69  -1  -1  -1  257 0   0   0   115744  0   0   0   724 0   0   0   0   0   0   0   0   115744  0   0   0   0   0   0   0   -79544  0   0   0   0   0   0   
03:08:03    -1  69  -1  -1  -1  196 0   0   0   81202   0   0   0   628 0   0   0   0   0   0   0   0   81202   0   0   0   0   0   0   0   -18335  0   0   0   0   0   0   
03:08:13    -1  81  -1  -1  -1  205 0   0   0   29051   0   0   0   352 0   0   0   0   0   0   0   0   29051   0   0   0   0   0   0   0   24449   0   0   0   0   0   0   
03:08:24    -1  91  -1  -1  -1  131 0   0   0   122795  0   0   0   1172    0   0   0   0   0   0   0   0   122795  0   0   0   0   0   0   0   9640    0   0   0   0   0   0   
03:08:34    -1  6   -1  -1  -1  182 0   0   0   74914   0   0   4   372 1   0   0   0   0   0   0   0   74914   0   0   0   0   0   0   0   -24477  0   0   0   0   0   0   
03:08:44    -1  38  -1  -1  -1  200 0   0   0   42957   0   0   4   464 1   0   0   0   0   0   0   0   42957   0   0   0   0   0   0   0   42778   0   0   0   0   0   0   
03:08:54    -1  6   -1  -1  -1  141 0   0   0   89751   0   0   36  1000    9   0   0   0   0   0   0   0   89751   0   0   0   0   0   0   0   -9665   0   0   0   0   0   0   
03:09:04    -1  6   -1  -1  -1  171 0   0   0   74740   0   0   4   516 1   0   0   0   0   0   0   0   74740   0   0   0   0   0   0   0   -24583  0   0   0   0   0   0   
03:09:14    -1  10  -1  -1  -1  179 0   0   0   56063   0   0   0   500 0   0   0   0   0   0   0   0   56063   0   0   0   0   0   0   0   56384   0   0   0   0   0   0   
03:09:24    -1  6   -1  -1  -1  74  0   0   0   75623   0   0   0   696 0   0   0   0   0   0   0   0   75623   0   0   0   0   0   0   0   -23994  0   0   0   0   0   0   
03:09:34    -1  6   -1  -1  -1  137 0   0   0   75466   0   0   8   972 2   0   0   0   0   0   0   0   75466   0   0   0   0   0   0   0   -23837  0   0   0   0   0   0   
03:09:44    -1  3   -1  -1  -1  153 0   0   0   72535   0   0   4   460 1   0   0   0   0   0   0   0   -927465 0   0   0   0   0   0   0   -26880  0   0   0   0   0   0   
03:09:54    -1  6   -1  -1  -1  170 0   0   0   56775   0   0   0   284 0   0   0   0   0   0   0   0   56775   0   0   0   0   0   0   0   56895   0   0   0   0   0   0
03:10:04    -1  6   -1  -1  -1  166 0   0   0   74756   0   0   0   1116    0   0   0   0   0   0   0   0   74756   0   0   0   0   0   0   0   -24568  0   0   0   0   0   0
03:10:14    -1  6   -1  -1  -1  148 0   0   0   78043   0   0   0   432 0   0   0   0   0   0   0   0   78043   0   0   0   0   0   0   0   -21241  0   0   0   0   0   0
03:10:24    -1  64  -1  -1  -1  189 0   0   0   64057   0   0   0   412 0   0   0   0   0   0   0   0   64057   0   0   0   0   0   0   0   60788   0   0   0   0   0   0
    
por mathewbutler 07.12.2009 / 17:07

1 resposta

1
pgpgin      -  Number of kilobytes the system has paged in from disk per second.
pgpgout     -  Number of kilobytes the system has paged out to disk per second.
pswpin      -  Number of kilobytes the system has swapped in from disk per second.
pswpout     -  Number of kilobytes the system has swapped out to disk per second.

Tenho 87% de certeza de que cada página que aumenta o contador pswpim também deve aumentar o pgpgin. Você diz que não é. Hmmm

Isso pode ser muito simplista para checar (desculpe!) mas ... Você tem 200% de certeza, que a métrica que você observa é pswpin, não pgpgin? O mais tarde traduziria para: process está lendo alguns arquivos.

Outra explicação é que a aplicação foi strongmente trocada antes do teste, então o sistema obteve muita memória livre. E durante o teste você está observando como está "voltando à vida" (constantemente se alternando - conforme a execução do código progride), sem ler / gravar nenhum arquivo. Mas por que, nesse cenário, o pgpgin não é aumentado ao longo do caminho está além da minha compreensão.

Talvez seus gráficos sejam alterados, então o pswpin é subtraído do pgpgin? Um ponto para confirmar isso é que ambas as métricas são tipicamente em páginas (em / proc / vmstat), e você as converte em KB / s.

EDIT: Isso pode ser relacionado ao ESX. Meu palpite é que isso é um efeito colateral de um compartilhamento de página transparente (TPS). Você pode analisar via esxtop no ESX ? Aqui está outro guia do esxtop .

EDIT: Suas estatísticas nmon parecem quebradas. Em primeiro lugar, há mais nomes de coluna do que métricas reais (ou seja, você não tem dados para a última coluna pgscan_direct_dma ). Existem muitos valores -1 ou 0 nas métricas que devem estar lá em um sistema ocupado, não apenas o pgpgin está ausente. Pgsteal e pgrotated estão lá, mas às vezes negativos, o que não é possível.

Então, veja / proc / vmstat, o que está acontecendo lá? E use outras ferramentas para confirmar as estatísticas do nmon.

    
por 07.12.2009 / 23:24