在 Debian Linux 3.16 机器上,我使用了 244 MB 的交换空间:
# 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
看着这个,我找不到使用的 244 MB。
# 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
我只有 34 MB 的SwapCached
:
# grep -i swap /proc/meminfo
SwapCached: 34584 kB
SwapTotal: 499708 kB
SwapFree: 249388 kB
内核文档对此进行了说明:
SwapCached:曾经被换出的内存,被换回但仍然在交换文件中(如果需要内存,则不需要再次换出,因为它已经在交换文件中。这样可以节省 I/O)
我如何知道哪个进程正在使用我的 Linux 系统上的交换空间?更准确地说:这 244 MB 的交换空间分别在哪里消耗?