meu sistema atual: 14.04.4 LTS (GNU / Linux 3.13.0-85-genérico x86_64)
$ free
total used free shared buffers cached
Mem: 16366288 16090588 275700 4047472 1019652 5253144
-/+ buffers/cache: 9817792 6548496 Swap: 7813116 7308592 504524
$ cat /proc/sys/fs/file-nr
1196103 0 1624594
Por alguns meses (e um número de atualizações) eu tenho o problema que, de repente, depois de alguns dias trabalhando com minha caixa (e suspendendo diariamente) o uso da memória e o número de descritores de arquivos alocados é disparado. / p>
De repente, a memória "comprometida" aumenta, até cerca de 120 - 160 GB (!). Normalmente este valor fica em torno da minha RAM física. Outro sintoma é que toda a minha troca de RAM + está esgotada. O resultado é um sistema inutilizável. Por enquanto eu só poderia consertar essa situação, reiniciando. Matar quase todos os processos depois de desligar o X não ajudou a liberar o valor comprometido.
Um indicador strong parece ser o valor exageradamente alto do contador de arquivos abertos em / proc / sys / fs / file-nr - isso sobe acima de 2 milhões. Ultimamente eu tentei limitar isso para 1624594, mas o único resultado é (é claro) que eu não fique sem memória, mas sim fora dos FDs.
Tendo Munin no lugar, posso ver uma strong correlação temporal entre os FDs e o uso da memória.
Eu tenho alguns compartilhamentos CIFS montados e meu usuário tem seu gvfsd-fuse. O FS raiz é ext4.
Os resultados de lsof
e traversing / proc / list apenas 10% de / proc / sys / fs / file-nr.
Eu suspeitava que o MTP fosse a causa (quando eu conecto meu telefone Motorola), mas recentemente isso aconteceu sem ter usado o MTP desde a última reinicialização.
Sidenote: eu tenho drivers radeon para vídeo:
ii libdrm-radeon1:amd64 2.4.64-1~ubuntu14.04.1
ii libdrm-radeon1:i386 2.4.64-1~ubuntu14.04.1
ii radeontool 1.6.3-1
ii xserver-xorg-video-radeon 1:7.3.0-1ubuntu3.1
UPDATE
root:/proc$ (echo -n "0" ; for processid in [0-9]*; do echo -n "+$(ls /proc/$processid/fd/ | wc -l)"; done;echo)|bc
2597
root:/proc$ lsof -n|wc -l
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
84504
root:/proc$ sudo -u mdo lsof -n|wc -l
72170
Como posso descobrir o que está comendo todos esses FDs e minha memória?