Como devo monitorar o uso / desempenho da memória no SunOS / Solaris?

2

Na semana passada, decidimos adicionar algumas máquinas SunOS ( uname -a = SunOS bbs-sam-belair 5.10 Generic_127128-11 i86pc i386 i86pc ) em nossa instância munin em execução. Em primeiro lugar, as máquinas são aparelhos pré-configurados, portanto, quero evitar tocar demais no sistema sem a supervisão do provedor de serviços.

Mas adicioná-lo ao munin foi bastante fácil escrevendo um pequeno serviço de soquete (se alguém estiver interessado, eu o coloco no github: link )

Ontem, implementei / adaptei os plugins necessários para nossas máquinas. E aqui as perguntas começam:

Primeiro, não encontrei uma maneira de determinar valores detalhados de uso de memória. Eu obtenho a memória total executando prtconf | grep Memory e a memória livre usando vmstat . Lançando um plug-in munin, dá-me o seguinte gráfico:

Issoémuitopoucoinformativo.Compareissocomopluginpadrãoparanóslinuxquetemmuitomaisdetalhes:

Mais importante, isso me mostra quanta memória é realmente usada por aplicativos.

Então, primeira pergunta: É possível obter informações detalhadas da memória no SunOS com as ferramentas padrão do sistema (ou seja, não usando top )?

No próximo quebra-cabeça: Vendo os gráficos, notei atividade nos gráficos "Paging in / out", mesmo que o gráfico de memória ainda tenha memória não usada :

Após investigação adicional, descobri que df informa que /tmp está montado em swap . Pesquisando na Web, eu entendi que df exibirá swap , mas na verdade, ele é montado como um %código%. Agora não sei se isso explica a atividade de troca.

O padrão munin-plugin para o solaris usa tmpfs para obter esses valores. Eu acho estranho que isso esteja usando o módulo kstat -p -c misc -m cpu_stat . Então, talvez eu simplesmente interprete mal os gráficos de "paginação"?

Segunda pergunta: Os gráficos de paginação indicam que partes da memória são paginadas para o disco? Ou a atividade é causada por operações de arquivo em cpu_stat ?

    
por exhuma 11.04.2012 / 11:09

2 respostas

2

primeira pergunta: É possível obter informações detalhadas sobre a memória no SunOS com as ferramentas padrão do sistema (ou seja, sem usar o topo)?

É definitivamente possível obter estatísticas detalhadas de memória e mais com as ferramentas padrão do Solaris (o SunOS é apenas o nome do kernel atualmente). Além do já mencionado echo ::memstat | mdb -k , você pode ter estatísticas de memória por processo e por usuário com prstat -a e por zona com prstat -Z .

O kernel também está fornecendo numerosas estatísticas através da interface do kstat (a munin as está usando).

Por exemplo, se você deseja exibir o total de RAM, a parte dele usada pelo kernel, pelo cache do ZFS (parte da memória usada do kernel) e a memória livre, você pode executar este comando:

kstat -T d -p :::physmem :::pp_kernel zfs:::size :::pagesfree 1 3

Se você estiver procurando pelo uso da memória virtual, use o comando swap -s .

Segunda pergunta: Os gráficos de paginação indicam que partes da memória são paginadas para o disco? Ou a atividade é causada por operações de arquivo em / tmp?

Nenhuma das opções acima. Ter essa atividade não significa necessariamente falta de memória RAM e de página. Ao contrário, seu gráfico mostra o valor de sr ficando em 0. Isso significa que o scanner de páginas não tem atividade e, portanto, você tem RAM suficiente instalada. A atividade de paginação é simplesmente porque os arquivos mapeados na memória estão sendo lidos e gravados. Nada para se preocupar. Os arquivos que estão em / tmp estão presentes apenas na RAM (no seu caso), portanto, não há paginação ao acessá-los.

Tenha em mente que o Solaris usa o termo swap para nomear a parte do disco usada para armazenar páginas de memória paginadas da RAM ou para nomear todo o espaço da memória virtual, ou seja, a área de troca mais a parte da RAM que não está bloqueada lá.

    
por 18.04.2012 / 22:50
2

Não tão detalhado quanto o seu exemplo do Linux, mas você poderia usar a macro :: memstat em mdb :

# echo ::memstat | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     178001              1390   69%
Anon                        52748               412   21%
Exec and libs                1905                14    1%
Page cache                  16115               125    6%
Free (cachelist)             6654                51    3%
Free (freelist)              1452                11    1%

Total                      256875              2006
Physical                   255662              1997

Kernel : memória usada para alocações de kernel não-pagináveis

Anon : memória anônima (processa pilhas, empilha, compartilha mapeamentos de memória etc. etc.)

Exec e libs : memória usada para arquivos mapeados, como executáveis e bibliotecas

Cache de páginas : quantidade de cache de páginas não mapeadas, incluindo dados armazenados em / tmp

Gratuito (cachelist) : quantidade de cache de páginas na lista livre, a maioria usada pelos caches do sistema de arquivos

Grátis (freelist) : quantidade de memória realmente livre

Os dois livros sobre Solaris Internals (Solaris Internals, 2ª Edição e Solaris Performance and Tools), de McDougall e Mauro, são extremamente úteis para entender o Solaris e como observá-lo.

    
por 18.04.2012 / 21:05