Antes de realmente perguntar, só para esclarecer: sim, eu sei sobre cache de disco e não, não é o meu caso :) Desculpe, por este preâmbulo :)
Estou usando o CentOS 5. Todos os aplicativos do sistema estão trocando bastante, e o sistema está muito lento. Quando eu faço free -m
, aqui está o que eu tenho:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Então, eu tenho apenas 42 Mb para usar! Tanto quanto eu entendo, -/+ buffers/cache
na verdade não conta o cache do disco, então eu só tenho 42 Mb, certo? Eu pensei que poderia estar errado, então tentei desligar o cache do disco e não teve efeito - a imagem permaneceu a mesma.
Então, decidi descobrir quem está usando toda a minha RAM e usei top
para isso. Mas, aparentemente, ele relata que nenhum processo está usando minha RAM. O único processo no meu topo é o MySQL, mas ele está usando 0,1% de RAM e 400Mb de swap. A mesma imagem quando tento executar outros serviços ou aplicativos - todos trocados, top
mostra que o MEM não é usado (máximo de 0,1% para qualquer processo).
top - 15:09:00 up 2:09, 2 users, load average: 0.02, 0.16, 0.11
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4046868k total, 4001368k used, 45500k free, 748k buffers
Swap: 16777208k total, 68840k used, 16708368k free, 16632k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
3214 ntp 15 0 23412 5044 3916 S 0.0 0.1 0:00.00 17m ntpd
2319 root 5 -10 12648 4460 3184 S 0.0 0.1 0:00.00 8188 iscsid
2168 root RT 0 22120 3692 2848 S 0.0 0.1 0:00.00 17m multipathd
5113 mysql 18 0 474m 2356 856 S 0.0 0.1 0:00.11 472m mysqld
4106 root 34 19 251m 1944 1360 S 0.0 0.0 0:00.11 249m yum-updatesd
4109 root 15 0 90152 1904 1772 S 0.0 0.0 0:00.18 86m sshd
5175 root 15 0 90156 1896 1772 S 0.0 0.0 0:00.02 86m sshd
Reiniciar não ajuda, e, a propósito, é muito lento, o que eu normalmente não esperaria nesta máquina (4 núcleos, 4Gb RAM, RAID1).
Então, com isso - tenho certeza de que esse não é um cache de disco, que está usando a RAM, porque normalmente deveria ter sido reduzido e deixado que outros processos usassem a RAM, em vez de trocar.
Então, finalmente, a questão é: se alguém tem alguma idéia de como descobrir qual processo está realmente usando a memória com tanta força?
fonte
irc.freenode.org
. Eu criei uma sala de bate - papo para uma discussão prolongada aqui .free -m
, mas o tamanho dele pode ser consultado no Linuxcat /proc/spl/kstat/zfs/arcstats | grep data_size
.Respostas:
No Linux, no
top
processo, você pode pressionar a<
tecla para mudar a classificação da exibição de saída para a esquerda. Por padrão, ela é ordenada pelo%CPU
modo; se você pressionar a tecla 4 vezes, será classificada de acordo comVIRT
o tamanho da memória virtual, fornecendo sua resposta.Outra maneira de fazer isso é:
deve fornecer a você e a saída classificadas por tamanho virtual dos processos.
Aqui está a versão longa:
fonte
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
no servidor Ubuntu 11.10.-o
opções. RHEL4 isso funciona. RHEL5:ps -e -o pid,vsz,comm= | sort -n -k 2
funciona. Tentarei 11h10 mais tarde esta noite, mas se você encontrar as opções de classificação corretas antes, informe-me.ps -e -o pid,vsz,comm | sort -n -k 2
pode funcionar, mas não tenho um local para verificar no momento.-ef
opção. Mas isso parece produzir uma saída razoável:sudo ps axo pid,vsz,comm=|sort -n -k 2
<
eu não sabia que era possível, fedoraps -e --format=pid,rss,args | sort --numeric-sort --key=2
Mostre a memória dos processos em megabytes e o caminho do processo.
fonte
Apenas uma nota lateral em um servidor mostrando os mesmos sintomas, mas ainda mostrando a exaustão da memória. O que acabou localizando foi um sysctl.conf de uma caixa com 32 GB de RAM e configuração para um banco de dados com páginas enormes configuradas para 12000. Esta caixa possui apenas 2 GB de RAM, portanto, estava atribuindo toda a RAM livre às páginas grandes (apenas 960 deles). Definir páginas enormes para 10, como nenhuma delas foi usada, liberou toda a memória.
Uma verificação rápida de / proc / meminfo para procurar as configurações de HugePages_ pode ser um bom começo para solucionar problemas de pelo menos um problema de memória inesperado.
fonte
No meu caso, o problema era que o servidor era um servidor virtual VMware com o
vmw_balloon
módulo ativado:Corrida:
Portanto, cerca de 5 GB de memória foram recuperados pelo host. Portanto, apesar de ter 8 GB para minha VM "oficialmente", na prática era muito menos:
fonte
Você também pode usar o comando ps para obter mais informações sobre o processo.
fonte
Eu faço referência a isso e memória total usada pelo processo Python? - Stack Overflow , essa é a minha resposta. Agora, recebo uma ferramenta específica de contagem de processos (python).
Anexe minha lista de processos.
Referência
fonte
Faça um script chamado
show-memory-usage.sh
com conteúdo:fonte
Isso também pega a identificação do processo, classifica por MB usado e descreve o comando (que criou o processo):
ps aux | awk '{print $6/1024 " MB\t\t" $2 "\t" $11}' | sort -n
fonte
Meu servidor ubuntu DISTRIB RELEASE = 18.04 no Hyper-V tinha a maior parte da memória usada, mas todos os processos estavam corretos. (Admiti que removi pacotes snapd e upattended-upgr, mas 95% da memória ainda era usada.)
A resposta é que o Hyper-V possui memória dinâmica; portanto, foi preciso memória para o uso do sistema principal e o ubuntu sinalizou-a como usada.
Espero que ajude alguém.
fonte