我不明白为什么我的swap在我的Ubuntu16.04上变得满了,尽管我有很多可用的内存:


在查看实际使用swap的进程时:
************************************
Swap's process in count 1
systemd : 1 : VmSwap: 520 kB
otrs.Daemon.pl : 21002 : VmSwap: 3324 kB
systemd-journal : 2326 : VmSwap: 2356 kB
lvmetad : 2353 : VmSwap: 8 kB
systemd-udevd : 2358 : VmSwap: 3052 kB
/usr/sbin/apach : 25162 : VmSwap: 176 kB
/usr/sbin/apach : 28879 : VmSwap: 176 kB
bash : 30064 : VmSwap: 1460 kB
/usr/sbin/apach : 34334 : VmSwap: 180 kB
otrs.Daemon.pl : 36841 : VmSwap: 3708 kB
otrs.Daemon.pl : 36847 : VmSwap: 2976 kB
/usr/sbin/apach : 39489 : VmSwap: 176 kB
/usr/sbin/apach : 39491 : VmSwap: 176 kB
/usr/sbin/apach : 39493 : VmSwap: 176 kB
/usr/sbin/apach : 39494 : VmSwap: 176 kB
/opt/otrs/bin/c : 39496 : VmSwap: 176 kB
/usr/sbin/apach : 39497 : VmSwap: 176 kB
/usr/sbin/apach : 39498 : VmSwap: 176 kB
otrs.Daemon.pl : 43266 : VmSwap: 4320 kB
sshd : 43477 : VmSwap: 12 kB
sshd : 43555 : VmSwap: 72 kB
bash : 43556 : VmSwap: 1328 kB
bash : 43577 : VmSwap: 212 kB
ldapsearch : 43623 : VmSwap: 672 kB
ldapsearch : 43625 : VmSwap: 648 kB
ldapsearch : 43741 : VmSwap: 636 kB
sshd : 44183 : VmSwap: 12 kB
sshd : 44257 : VmSwap: 48 kB
bash : 44258 : VmSwap: 1044 kB
otrs.Daemon.pl : 44373 : VmSwap: 5912 kB
otrs.Daemon.pl : 45169 : VmSwap: 4344 kB
lxcfs : 4987 : VmSwap: 2208 kB
vmtoolsd : 4991 : VmSwap: 27168 kB
cron : 5044 : VmSwap: 136 kB
snapd : 5053 : VmSwap: 4728 kB
systemd-logind : 5055 : VmSwap: 48 kB
accounts-daemon : 5057 : VmSwap: 52 kB
dbus-daemon : 5059 : VmSwap: 4 kB
rsyslogd : 5082 : VmSwap: 44 kB
otrs.Daemon.pl : 50961 : VmSwap: 4348 kB
sshd : 5141 : VmSwap: 588 kB
polkitd : 5149 : VmSwap: 4 kB
mysqld : 5153 : VmSwap: 675748 kB
mdadm : 5162 : VmSwap: 4 kB
master : 5459 : VmSwap: 360 kB
qmgr : 5462 : VmSwap: 68 kB
otrs.Daemon.pl : 57161 : VmSwap: 4324 kB
systemd : 57265 : VmSwap: 896 kB
(sd-pam) : 57274 : VmSwap: 572 kB
otrs.Daemon.pl : 57937 : VmSwap: 56068 kB
/usr/sbin/apach : 8414 : VmSwap: 176 kB
************************************
Swap's process in count 2
systemd : 1 : VmSwap: 520 kB
otrs.Daemon.pl : 21002 : VmSwap: 3324 kB
systemd-journal : 2326 : VmSwap: 2356 kB
lvmetad : 2353 : VmSwap: 8 kB
systemd-udevd : 2358 : VmSwap: 3052 kB
/usr/sbin/apach : 25162 : VmSwap: 176 kB
/usr/sbin/apach : 28879 : VmSwap: 176 kB
bash : 30064 : VmSwap: 1460 kB
/usr/sbin/apach : 34334 : VmSwap: 180 kB
otrs.Daemon.pl : 36841 : VmSwap: 3708 kB
otrs.Daemon.pl : 36847 : VmSwap: 2976 kB
/usr/sbin/apach : 39489 : VmSwap: 176 kB
/usr/sbin/apach : 39491 : VmSwap: 176 kB
/usr/sbin/apach : 39493 : VmSwap: 176 kB
/usr/sbin/apach : 39494 : VmSwap: 176 kB
/usr/sbin/apach : 39496 : VmSwap: 176 kB
/usr/sbin/apach : 39497 : VmSwap: 176 kB
/usr/sbin/apach : 39498 : VmSwap: 176 kB
otrs.Daemon.pl : 43266 : VmSwap: 4320 kB
sshd : 43477 : VmSwap: 12 kB
sshd : 43555 : VmSwap: 72 kB
bash : 43556 : VmSwap: 1328 kB
bash : 43577 : VmSwap: 212 kB
ldapsearch : 43623 : VmSwap: 672 kB
ldapsearch : 43625 : VmSwap: 648 kB
ldapsearch : 43741 : VmSwap: 636 kB
sshd : 44183 : VmSwap: 12 kB
sshd : 44257 : VmSwap: 48 kB
bash : 44258 : VmSwap: 1044 kB
otrs.Daemon.pl : 44373 : VmSwap: 5912 kB
otrs.Daemon.pl : 45169 : VmSwap: 4344 kB
lxcfs : 4987 : VmSwap: 2208 kB
vmtoolsd : 4991 : VmSwap: 27168 kB
cron : 5044 : VmSwap: 136 kB
snapd : 5053 : VmSwap: 4728 kB
systemd-logind : 5055 : VmSwap: 48 kB
accounts-daemon : 5057 : VmSwap: 52 kB
dbus-daemon : 5059 : VmSwap: 4 kB
rsyslogd : 5082 : VmSwap: 44 kB
otrs.Daemon.pl : 50961 : VmSwap: 4348 kB
sshd : 5141 : VmSwap: 588 kB
polkitd : 5149 : VmSwap: 4 kB
mysqld : 5153 : VmSwap: 675748 kB
mdadm : 5162 : VmSwap: 4 kB
master : 5459 : VmSwap: 360 kB
qmgr : 5462 : VmSwap: 68 kB
otrs.Daemon.pl : 57161 : VmSwap: 4324 kB
systemd : 57265 : VmSwap: 896 kB
(sd-pam) : 57274 : VmSwap: 572 kB
otrs.Daemon.pl : 57937 : VmSwap: 56068 kB
/usr/sbin/apach : 8414 : VmSwap: 176 kB
************************************
Swap's process in count 3
systemd : 1 : VmSwap: 520 kB
otrs.Daemon.pl : 21002 : VmSwap: 3324 kB
systemd-journal : 2326 : VmSwap: 2356 kB
lvmetad : 2353 : VmSwap: 8 kB
systemd-udevd : 2358 : VmSwap: 3052 kB
/usr/sbin/apach : 25162 : VmSwap: 176 kB
/usr/sbin/apach : 28879 : VmSwap: 176 kB
bash : 30064 : VmSwap: 1460 kB
/usr/sbin/apach : 34334 : VmSwap: 180 kB
/usr/sbin/apach : 39489 : VmSwap: 176 kB
/usr/sbin/apach : 39491 : VmSwap: 176 kB
/usr/sbin/apach : 39493 : VmSwap: 176 kB
/usr/sbin/apach : 39494 : VmSwap: 176 kB
/usr/sbin/apach : 39496 : VmSwap: 176 kB
/usr/sbin/apach : 39497 : VmSwap: 176 kB
/usr/sbin/apach : 39498 : VmSwap: 176 kB
otrs.Daemon.pl : 43266 : VmSwap: 4320 kB
sshd : 43477 : VmSwap: 12 kB
sshd : 43555 : VmSwap: 72 kB
bash : 43556 : VmSwap: 1328 kB
bash : 43577 : VmSwap: 212 kB
ldapsearch : 43623 : VmSwap: 672 kB
ldapsearch : 43625 : VmSwap: 648 kB
ldapsearch : 43741 : VmSwap: 636 kB
sshd : 44183 : VmSwap: 12 kB
sshd : 44257 : VmSwap: 48 kB
bash : 44258 : VmSwap: 1044 kB
otrs.Daemon.pl : 44373 : VmSwap: 5912 kB
otrs.Daemon.pl : 45169 : VmSwap: 4344 kB
lxcfs : 4987 : VmSwap: 2208 kB
vmtoolsd : 4991 : VmSwap: 27168 kB
cron : 5044 : VmSwap: 136 kB
snapd : 5053 : VmSwap: 4728 kB
systemd-logind : 5055 : VmSwap: 48 kB
accounts-daemon : 5057 : VmSwap: 52 kB
dbus-daemon : 5059 : VmSwap: 4 kB
rsyslogd : 5082 : VmSwap: 44 kB
otrs.Daemon.pl : 50961 : VmSwap: 4348 kB
sshd : 5141 : VmSwap: 588 kB
polkitd : 5149 : VmSwap: 4 kB
mysqld : 5153 : VmSwap: 675748 kB
mdadm : 5162 : VmSwap: 4 kB
master : 5459 : VmSwap: 360 kB
qmgr : 5462 : VmSwap: 68 kB
otrs.Daemon.pl : 57161 : VmSwap: 4324 kB
systemd : 57265 : VmSwap: 896 kB
(sd-pam) : 57274 : VmSwap: 572 kB
otrs.Daemon.pl : 57937 : VmSwap: 56068 kB
/usr/sbin/apach : 8414 : VmSwap: 176 kB
************************************
Swap's process in count 4
systemd : 1 : VmSwap: 520 kB
otrs.Daemon.pl : 21002 : VmSwap: 3324 kB
systemd-journal : 2326 : VmSwap: 2356 kB
lvmetad : 2353 : VmSwap: 8 kB
systemd-udevd : 2358 : VmSwap: 3052 kB
/usr/sbin/apach : 25162 : VmSwap: 176 kB
/usr/sbin/apach : 28879 : VmSwap: 176 kB
bash : 30064 : VmSwap: 1460 kB
/usr/sbin/apach : 34334 : VmSwap: 180 kB
/usr/sbin/apach : 39489 : VmSwap: 176 kB
/usr/sbin/apach : 39491 : VmSwap: 176 kB
/usr/sbin/apach : 39493 : VmSwap: 176 kB
/usr/sbin/apach : 39494 : VmSwap: 176 kB
/usr/sbin/apach : 39496 : VmSwap: 176 kB
/usr/sbin/apach : 39497 : VmSwap: 176 kB
/usr/sbin/apach : 39498 : VmSwap: 176 kB
otrs.Daemon.pl : 43266 : VmSwap: 4320 kB
sshd : 43477 : VmSwap: 12 kB
sshd : 43555 : VmSwap: 72 kB
bash : 43556 : VmSwap: 1328 kB
bash : 43577 : VmSwap: 212 kB
ldapsearch : 43623 : VmSwap: 672 kB
ldapsearch : 43625 : VmSwap: 648 kB
ldapsearch : 43741 : VmSwap: 636 kB
sshd : 44183 : VmSwap: 12 kB
sshd : 44257 : VmSwap: 48 kB
bash : 44258 : VmSwap: 1044 kB
otrs.Daemon.pl : 44373 : VmSwap: 5912 kB
otrs.Daemon.pl : 45169 : VmSwap: 4344 kB
lxcfs : 4987 : VmSwap: 2208 kB
vmtoolsd : 4991 : VmSwap: 27168 kB
cron : 5044 : VmSwap: 136 kB
snapd : 5053 : VmSwap: 4728 kB
systemd-logind : 5055 : VmSwap: 48 kB
accounts-daemon : 5057 : VmSwap: 52 kB
dbus-daemon : 5059 : VmSwap: 4 kB
rsyslogd : 5082 : VmSwap: 44 kB
otrs.Daemon.pl : 50961 : VmSwap: 4348 kB
sshd : 5141 : VmSwap: 588 kB
polkitd : 5149 : VmSwap: 4 kB
mysqld : 5153 : VmSwap: 675748 kB
mdadm : 5162 : VmSwap: 4 kB
master : 5459 : VmSwap: 360 kB
qmgr : 5462 : VmSwap: 68 kB
otrs.Daemon.pl : 57161 : VmSwap: 4324 kB
systemd : 57265 : VmSwap: 896 kB
(sd-pam) : 57274 : VmSwap: 572 kB
otrs.Daemon.pl : 57937 : VmSwap: 56068 kB
/usr/sbin/apach : 8414 : VmSwap: 176 kB有人能解释一下我为什么会发生这种事吗?即使有足够的可用内存,进程本身也可以交换吗?
编辑:
运行vmstat显示了两个si和so的0(注意输出被截断了,我已经运行了相当长的时间):

发布于 2018-03-23 09:26:17
是的,即使有可用内存,进程也可以交换。这是由虚拟内存swappiness值控制的,如您所示,该值在您的系统上设置为60 (许多安装的默认设置)。红帽文件有一个很好的解释(这适用于任何Linux):
从0到100的值,它控制系统支持匿名内存或页缓存的程度。高值提高了文件系统的性能,同时积极地将较少活动的进程从物理内存中交换出来.低值可避免将进程从内存中交换出来,这通常会降低延迟,而代价是I/O性能。默认值为60。对于数据库工作负载,建议使用一个较低的替换值。例如,对于Oracle数据库,Red建议交换值为10。
如果要将其设置为较低的值,请例如编辑/etc/sysctl.conf并添加如下一行:
vm.swappiness=10请注意,对于较新版本的systemd,您需要在/etc/sysctl.d/中编辑/创建文件。正如在Arch Wiki中所解释的:
注意:从207和21x版本,systemd只应用来自
/etc/sysctl.d/*.conf和/usr/lib/sysctl.d/*.conf的设置。如果您已经定制了/etc/sysctl.conf,则需要将它重命名为/etc/sysctl.d/99-sysctl.conf。如果您有例如/etc/sysctl.d/foo,则需要将其重命名为/etc/sysctl.d/foo.conf。
然而,请记住,交换并不一定是一个问题。这完全取决于你的机器在做什么。在Ask Ubuntu上有一个优美而详细的答案解决了这个问题,我建议您阅读。基本上,除非你的机器感觉迟钝,否则就让它来吧。
进一步读:
https://unix.stackexchange.com/questions/433016
复制相似问题