Em uma máquina Debian Linux 3.16, tenho 244 MB de espaço de troca usado:
# free -h
total used free shared buffers cached
Mem: 94G 36G 57G 1.9G 3.8G 11G
-/+ buffers/cache: 20G 73G
Swap: 487M 244M 243M
Olhando para isso, não consigo encontrar 244 MB usados.
# for file in /proc/*/status ; do grep VmSwap $file; done | sort -nk 2 | tail
VmSwap: 0 kB
VmSwap: 0 kB
VmSwap: 0 kB
VmSwap: 0 kB
VmSwap: 0 kB
VmSwap: 0 kB
VmSwap: 4 kB
VmSwap: 12 kB
VmSwap: 16 kB
VmSwap: 36 kB
E eu só tenho 34 MB de SwapCached
:
# grep -i swap /proc/meminfo
SwapCached: 34584 kB
SwapTotal: 499708 kB
SwapFree: 249388 kB
Kernel doc diz sobre isso:
SwapCached: Memória que uma vez foi trocada, é trocada de volta, mas ainda está no arquivo de troca (se a memória for necessária, ela não precisa ser trocada NOVAMENTE porque já está no arquivo de troca. Isso economiza E/S)
Como posso saber qual processo está usando meu espaço de troca no meu sistema Linux? Mais precisamente: Onde são consumidos cada um desses 244 MB de swap?
Tentar
Saída de exemplo:
Isso realmente diz que o mysql está usando mais swap.
free
a saída de não parece muito ruim no meu casoO espaço de troca não é necessariamente usado por processos específicos.
Arquivos armazenados em sistemas de
tmpfs
arquivos baseados podem estar usando-os (tmpfs
primeiro usa RAM como back-end, mas, para não desperdiçar RAM, pode paginar para os blocos da área de troca que não são usados ativamente).Verifique a saída de:
Isso imprimirá cada PID que atualmente usa memória de troca: