Como ver o que está comendo meu espaço de troca no linux

0

Eu tenho uma situação única aqui, onde um aplicativo Java que eu escrevi está sufocando quando bifurca e cria alguns processos filhos. De acordo com os logs de erro, estou vendo que há um método java.lang.UNIXProcess aloca espaço para o processo pai e filho fora da JVM no espaço de troca do sistema. Os erros estão sendo lançados porque não há espaço de troca suficiente para conter o processo pai e filho ao mesmo tempo.

O Systems está jogando um ajuste e não quer aumentar o espaço de troca sem uma boa razão, então estou tentando ver se existem processos desonestos que estão entrando no espaço de swap disponível ao mesmo tempo em que esse forking é ocorrendo. Se eu puder provar que o espaço de troca precisa ser aumentado para lidar com meus processos pai / filho, bem como com qualquer outra coisa que os sistemas precisem executar (como uma verificação de segurança, etc.), posso obter meu tíquete aprovado e ir para casa.

O que o SuperUser faria?

Editar : devo observar que esses erros são somente ocorrendo em nossa máquina de controle de qualidade compartilhada que tem muitos outros projetos / aplicativos em execução. Em nossa máquina de desenvolvimento isolada, isso funciona como um encanto, e essa máquina de desenvolvimento é um espelho do controle de qualidade de uma perspectiva de hardware / memória virtual / disco. Então, se passar em dev e falhando em QA, isso indica strongmente que meu aplicativo está simplesmente competindo por espaço de troca que simplesmente não está disponível porque alguém o está usando.

    
por pnongrata 13.06.2012 / 20:38

1 resposta

0

No Solaris, não importa se o armazenamento de apoio para a memória virtual que um processo está usando, ou está solicitando, for RAM física ou espaço de troca. Você precisa observar quanta memória está em uso no sistema inteiro, não o que realmente é paginado no momento. Isto INCLUI o sistema de arquivos / tmp.

NOTA: O Solaris usa um sistema de arquivos baseado em memória para / tmp, por padrão. Os arquivos & A estrutura de diretórios em / tmp usa a memória virtual do pool do sistema. O espaço disponível em / tmp é determinado pela quantidade de memória virtual disponível em todo o sistema.

No Solaris 9 e posterior, use prstat -c -s size -n <# of processes to show> 0 1 para obter uma lista de todos os processos em execução, classificados em ordem decrescente pela quantidade de memória virtual que cada um está usando. Veja a coluna "SIZE" para a memória virtual total em uso por cada processo.

    
por 27.09.2012 / 18:39