我有几个CentOS6.5 x64 服务器,配备 64 GB RAM,运行大量虚拟机 VPS。
有些服务器根本没有使用交换空间,而有些则有。我已将交换空间设置为零。但是,有些服务器即使有大量可用内存,仍会使用交换空间。
有问题的*程序是 qemu-kvm - VPS 是 KVM 虚拟机。
这是输出top
按交换顺序排列(Op Enter):
top - 10:47:31 up 14 days, 1:25, 1 user, load average: 0.05, 0.10, 0.13
Tasks: 325 total, 1 running, 324 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.4%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 65940252k total, 41202572k used, 24737680k free, 9129148k buffers
Swap: 5240808k total, 1039544k used, 4201264k free, 10935732k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
11653 qemu 20 0 1437m 725m 4968 S 0.0 1.1 24:23.56 51m qemu-kvm
4873 qemu 20 0 1451m 743m 4968 S 0.0 1.2 22:32.94 50m qemu-kvm
14265 qemu 20 0 1443m 742m 4968 S 0.0 1.2 27:21.25 47m qemu-kvm
5928 qemu 20 0 1445m 751m 4968 S 0.0 1.2 24:56.82 45m qemu-kvm
11294 qemu 20 0 1436m 718m 5004 S 0.0 1.1 23:35.45 45m qemu-kvm
10016 qemu 20 0 1438m 741m 4968 S 0.0 1.2 24:58.07 45m qemu-kvm
8028 qemu 20 0 1445m 725m 4968 S 0.0 1.1 22:49.86 44m qemu-kvm
13449 qemu 20 0 1439m 738m 5008 S 0.3 1.1 25:49.07 43m qemu-kvm
9065 qemu 20 0 1439m 738m 4968 S 0.0 1.1 22:35.70 41m qemu-kvm
5173 qemu 20 0 1443m 748m 4968 S 0.3 1.2 24:57.27 41m qemu-kvm
6833 qemu 20 0 1445m 735m 4968 S 0.3 1.1 24:43.94 40m qemu-kvm
12901 qemu 20 0 1447m 754m 4968 S 0.7 1.2 26:46.74 39m qemu-kvm
12508 qemu 20 0 1435m 737m 4968 S 0.0 1.1 24:07.60 37m qemu-kvm
8197 qemu 20 0 1449m 752m 4968 S 0.0 1.2 23:15.54 37m qemu-kvm
7394 qemu 20 0 1444m 745m 5008 S 0.3 1.2 22:20.29 36m qemu-kvm
7783 qemu 20 0 1435m 739m 4996 S 0.0 1.1 24:02.63 36m qemu-kvm
14733 qemu 20 0 1448m 753m 5000 S 0.3 1.2 28:58.61 35m qemu-kvm
14323 qemu 20 0 1448m 750m 4968 S 0.0 1.2 26:02.34 35m qemu-kvm
9381 qemu 20 0 1426m 728m 4968 S 0.0 1.1 23:27.13 35m qemu-kvm
5472 qemu 20 0 1443m 743m 4968 S 0.3 1.2 22:14.22 35m qemu-kvm
13293 qemu 20 0 1428m 727m 4968 S 0.0 1.1 24:51.03 34m qemu-kvm
11697 qemu 20 0 1449m 756m 4968 S 0.0 1.2 24:46.59 33m qemu-kvm
4566 qemu 20 0 1432m 747m 5008 S 0.0 1.2 23:28.19 30m qemu-kvm
9752 qemu 20 0 1439m 743m 4968 S 0.3 1.2 22:56.10 30m qemu-kvm
6533 qemu 20 0 1438m 747m 4968 S 0.0 1.2 22:38.61 30m qemu-kvm
6234 qemu 20 0 1418m 724m 4968 S 0.3 1.1 23:14.90 28m qemu-kvm
1 root 20 0 19232 1524 1232 S 0.0 0.0 0:02.86 0 init
现在您可以看到 qemu-kvm 正在交换。这些机器运行最新更新的操作系统。还请注意,那里有很多可用的 RAM。
我怎样才能完全防止交换?这让我很烦恼,而且更令人困惑的是,我还有更多这样的服务器,而且有些服务器从不交换。永远。
答案1
vm.swappiness = 0
并不能完全阻止交换。要完全关闭交换,您可以swapoff -a
使用 root 权限发出该命令。但是,完全禁用交换通常是不安全的——当内存不足的极端情况发生时,系统可能会崩溃。此外,该swapoff
操作本身会从交换(缓慢)复制到 RAM,因此它可能与实际交换一样影响性能。
尽管有明显的“空闲”内存,但内核往往会换出长期不活动且占用内存的进程。这样可以释放 RAM 用于缓存,从而提高响应能力。除非您有性能下降的真正证据,否则我建议您不要再担心并爱上内核 ;)