![Resumo:](https://rvso.com/image/36008/Resumo%3A.png)
Pergunta: como podemos relatar o uso REAL de memória (semo cache!) usandonmonouvmstatousvmonno AIX 6?
nmon:
vmstat:
svmon:
Assim como no Linux, podemos usar o comando free, mas ele não está disponível no AIX:
[user@notebook ~]$ free -m
total used free shared buffers cached
Mem: 7797 4344 3453 0 219 2745
-/+ buffers/cache: 1379 6417
Swap: 2047 0 2047
[user@notebook ~]$ free -m | grep cache: | awk '{print $3}'
1379
[user@notebook ~]$
Responder1
Versão curta: veja as páginas em uso clnt
+ pers
na svmon -G
saída (a unidade tem 4k páginas) se você quiser saber todo o cache de arquivos, ou veja vmstat -v
e veja "páginas de arquivo" para cache de arquivos, excluindo executáveis (mesma unidade).
Você deve verificar o seguinte artigo se quiser uma boa visão geral do que está acontecendo:Visão Geral da Substituição de Página AIX.
Para um resumo extremamente breve, a memória no AIX é classificada de duas maneiras:
Memória de trabalho vs memória permanente
A memória de trabalho é um processo (pilha, heap, memória compartilhada) e memória do kernel. Se esse tipo de memória precisar ser eliminada, ela será trocada.
A memória permanente é o cache de arquivos. Se precisar ser paginado, ele volta para o sistema de arquivos de onde veio (para páginas sujas, as páginas limpas são simplesmente recicladas). Isso é subdividido em páginas não-cliente (ou persistentes) para sistemas de arquivos JFS e páginas cliente para JFS2, NFS e possivelmente outros.
Páginas computacionais versus não computacionais.
As páginas computacionais são novamente dados de processo e de kernel, além de dados de texto de processo (ou seja, páginas que armazenam em cache o executável/código).
Os outros não computacionais são: cache de arquivos que não é executável (ou biblioteca compartilhada).
svmon -G
(aliás, svmon -G -O unit=MB
é um pouco mais amigável) oferece trabalho em vez de páginas permanentes. A work
coluna é, bem, memória de trabalho. Você obtém a memória permanente somando as colunas pers
(JFS) e clnt
(JFS2).
No seu caso, você tem cerca de 730 MB de páginas permanentes, apoiadas por seus sistemas de arquivos (186.151 * 4k páginas).
Agora, o topas
"widget" superior direito FileSystemCache (numperm)
mostra algo um pouco diferente, e você obteria os mesmos dados com vmstat -v
: são apenas páginas permanentes não computacionais. ou seja, a mesma coisa que acima, mas excluindo páginas para executáveis.
No seu caso, são cerca de 350 MB (2,2% de 16G).
De qualquer forma, isso não é muito cache.
Responder2
O comando que você está procurando (imho) é:
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
As principais opções aqui são:
- 'filtertype=working' # também conhecido como, sem cache;
- 'segment=off' # na verdade é o padrão ao usar -O
- 'filtercat=exclusive' # não inclui memória compartilhada ou kernel atm
- 'unit=MB' # quem deseja calcular a partir de # páginas ??
E você vai querer dar uma olhada em outras opções, como -C (relacionado ao nome do comando, alguns exemplos abaixo) e talvez -U (relacionado ao usuário)
++++ início do comentário ++++
inserindo o que eu teria inserido como comentário à sua pergunta, mas não tenho reputação - como um novo usuário aqui.
Sua saída vmstat me diz mais do que apenas sua situação atual - já que é a saída de linha única - é histórica - e suspeito que você esteja tendo problemas de memória, pois mostra um histórico de pi/po (espaço de paginação página in/ espaço de paginação saída de página)
Outras colunas de interesse são as colunas fr/sr:
- fr: páginas liberadas por lrud (daemon menos usado recentemente, também conhecido como ladrão de páginas)
- sr: páginas digitalizadas/pesquisadas pelo lrud em busca de uma página ‘antiga’
- sr/fr: proporção que expressa quantas páginas devem ser “digitalizadas” para liberar 1
O que considero preocupante são os valores pi/po fornecidos aqui - e completamente fora de linha com os dados dos outros comandos - também sem tempo de atividade aqui, é tão difícil saber o que para 'teste' gerou esses números.
- pi: espaço de paginação na página (ou seja, lê a memória do aplicativo do espaço de paginação)
- po: rouba memória e grava a memória do aplicativo (também conhecida como de trabalho) no espaço de paginação - apenas a memória de trabalho vai para/do espaço de página
Na sua apresentação você mostra pi=22 e po=7. Isso significa que, em média, o sistema lia informações do espaço de paginação (depois de escritas) 3x mais frequentemente do que gravava dados. Isso é uma indicação de um sistema faminto porque os dados estão sendo lidos (pi) e depois roubados novamente (sr/fr) antes de serem tocados (referenciados, também conhecidos como usados) - ou lidos e removidos novamente antes que o aplicativo 'espere' por isso sempre tiver a chance de acessá-lo.
Resumindo, os dados apresentados não estão 'sincronizados' com os momentos de 'dor' - embora isso possa explicar por que apenas 2,2% da sua memória é agora usada para armazenamento em cache (pode até ser 'computacional, também conhecido como os programas carregados').
Tão longe quantovmstatvai Eu também sugiro os sinalizadores -I (capital:i que adiciona 'fi' e 'fo' - atividade fileIn e fileOut) e -w (largo) para que os números fiquem melhor posicionados sob os cabeçalhos textuais.
++++ fim do 'comentário'
Então, vamos ver um trecho usando -P (visualização de processo)
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB | head -15
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
14614630 httpd 21.5 0.06 0 21.5
11272246 httpd 21.4 0.06 0 21.4
12779758 httpd 21.2 0.06 0 21.2
17760476 httpd 20.9 0.06 0 20.9
11796712 httpd 20.8 0.06 0 20.8
17039454 httpd 20.6 0.06 0 20.6
11862240 httpd 20.6 0.06 0 20.6
14680090 httpd 20.5 0.06 0 20.5
10747970 httpd 20.5 0.06 0 20.5
11141286 httpd 20.5 0.06 0 20.5
4718766 mysqld 13.6 0.02 0 13.6
Quando você não é root, você vê apenas os comandos em seu ambiente.
$ svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
5505172 svmon 10.7 0.19 0.44 11.4
6553826 ksh 0.57 0.02 0 0.57
9175288 ksh 0.55 0.02 0 0.55
12910710 sshd 0.55 0.02 0 0.55
15204356 sshd 0.52 0.02 0 0.52
12779760 head 0.18 0.02 0 0.18
Você pode querer dar uma olhada em um comando específico - então volte ao root para ver httpd
Resumo:
svmon -C httpd -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 227.44 0.69 0 227.44
Detalhes: trecho
# svmon -C httpd -O filtertype=working,segment=category,filtercat=exclusive,unit=MB >
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 230.62 0.81 0 230.62
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
230.62 0.81 0 230.62
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
81a203 3 work working storage m 24.6 0 0 24.6
parent=883990
8b82d7 3 work working storage m 18.8 0 0 18.8
parent=834226
8b9d37 3 work working storage m 18.2 0 0 18.2
parent=884fb0
8915f2 f work shared library data m 2.00 0 0 2.00
parent=898373
89abb3 f work shared library data m 2.00 0 0 2.00
parent=84b9a9
824ea4 f work shared library data m 2.00 0 0 2.00
Isso não mostra bem o 'segmento = categoria', então agora com um comando mais simples - tail - e mostra um resumo e detalhes de cada tipo de 'segmento' de memória - mas ainda apenas a memória 'de trabalho' (também conhecida como sem cache)
# svmon -C tail -O filtertype=working,segment=category,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
tail 82.5 52.6 5.12 90.6
...............................................................................
SYSTEM segments Inuse Pin Pgsp Virtual
34.1 33.1 2.38 35.8
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 34.1 33.1 2.38 35.8
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
0.18 0.02 0 0.18
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
88b4f1 f work working storage sm 0.09 0 0 0.09
82d005 2 work process private sm 0.07 0.02 0 0.07
8e0c9c 3 work working storage sm 0.02 0 0 0.02
...............................................................................
SHARED segments Inuse Pin Pgsp Virtual
48.2 19.5 2.75 54.6
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
9000 d work shared library text m 48.2 19.5 2.75 54.6
Responder3
nmon e pressione "m" mostrará rapidamente alguns grandes usos de memória
ipcs -am
A memória compartilhada usada por muitos aplicativos como DB2 e Oracle - verifique o tamanho do SEGSZ no ipcs -am
comando. A coluna Proprietário geralmente informa para que ela é usada, como o usuário oracle para SGA ou db2inst1 para o cache de buffer do DB2.
Então tudo se resume aos processos e isso fica complicado. Todos os processos que executam o mesmo arquivo de programa compartilharão as páginas de código como somente leitura. Eles também podem compartilhar alguns ou quase todos os dados e páginas de saco se os processos forem iniciados por um processo comum que então se bifurcou como, por exemplo, RDBMS e coisas como Apache. Isto também se aplica às dezenas de bibliotecas de que os processos também necessitam e que são em grande parte invisíveis para nós.
Devido a esse compartilhamento desconhecido, muitas vezes acontece que se você somar toda a memória de todos os processos, é obviamente muito maior que a memória.
Se você usar nmon
"t" para os principais processos e depois "4" para ordenar o tamanho do processo, verá a memória do processo.
- Tamanho KB = o tamanho encontrado no arquivo do programa no disco.
- Tamanho do conjunto residente = quão grande é na memória (excluindo as páginas ainda no sistema de arquivos (como código) e algumas partes nos discos de paginação)".
- A coluna ResText são as páginas de código do Conjunto Residente
- A coluna ResData são os dados e as páginas de pilha do conjunto residente
Responder4
O topas
comando mostra a memória real e a porcentagem de memória do computador. Deve estar disponível por padrão no AIX e é semelhante (mas fornece muito mais informações) top
no Linux.
A inicialização topas
mostra muitas informações (principais processos que usam CPU, resumo de uso de memória, etc.) por padrão, e pressionar hmostra um texto de ajuda embutido com outras teclas e suas funções (por exemplo, pressionar cvárias vezes percorrerá diferentes maneiras de exibir o uso da CPU) .