什么在使用我的交换空间?

Tot*_*tor 7 swap linux-kernel

在 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
Run Code Online (Sandbox Code Playgroud)

看看这个,我找不到使用的 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
Run Code Online (Sandbox Code Playgroud)

我只有 34 MB 的SwapCached

# grep -i swap /proc/meminfo
SwapCached:        34584 kB
SwapTotal:        499708 kB
SwapFree:         249388 kB
Run Code Online (Sandbox Code Playgroud)

内核文档对此说:

SwapCached:曾经被换出的内存,被换回但仍然在交换文件中(如果需要内存,它不需要再次换出,因为它已经在交换文件中。这样可以节省 I/O)

我如何知道哪个进程正在使用我的 Linux 系统上的交换空间?更准确地说:这 244 MB 的交换空间中的每一个都在哪里使用?

jll*_*gre 5

我如何知道 Linux 系统上哪个进程正在使用我的交换空间?

交换空间不一定由特定进程使用。

更准确地说:这 244 MB 的交换空间消耗在哪里?

存储在基于文件系统上的文件tmpfs可能正在使用它们(tmpfs首先使用 RAM 作为后端,但为了不浪费 RAM,可以分页到未主动使用的交换区域块)。

检查输出:

df -ht tmpfs
Run Code Online (Sandbox Code Playgroud)