在 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 的交换空间分别在哪里消耗?
尝试
示例输出:
这实际上说mysql正在使用最多的交换。
free
的输出在我的情况下似乎并没有太多交换空间不一定由特定进程使用。
存储在
tmpfs
基于文件系统的文件可能正在使用它们(tmpfs
首先使用 RAM 作为后端,但为了不浪费 RAM,可以分页到未主动使用的交换区域块)。检查输出:
这将打印当前使用交换内存的每个 PID: