我的第一台 CentOS 7 KVM 主机安装已经大约一年了,它是一台双四核机器,物理内存为 32GB。我有十几个虚拟机在运行,总共分配了 23GB 的内存。该系统有 4GB 的交换空间,以下是当前的使用情况详情……
KiB Mem: 32773552 total, 32564628 used, 208924 free, 2224 buffers
KiB Swap: 4603836 total, 3262108 used, 1341728 free. 9606248 cached Mem
我读到过你真的不想要大量的交换空间,因为如果它根本不应该使用交换空间。我相信上面显示现在使用了超过 3GB,这是正常的吗?我没有遇到此服务器的任何性能问题。我目前正在构建一个新服务器,并进行比较,看看在应该具有类似负载的新服务器上使用的最佳交换量是多少?
答案1
它并不像乍看起来那么简单。未使用的内存是浪费的内存,Linux 甚至对“未使用的已使用”内存也采取这种方法。这意味着实际分配但一段时间未使用的内存可能会被换出。由于最近不需要它,因此推测它不会对性能产生很大影响。实际上,还有一点。Linux 会尝试提前换出未使用的数据(当它处于空闲状态时),同时仍将其保留在 RAM 中。这样,RAM 可以几乎立即释放(当需要分配更多内存时),同时不会对从交换中检索数据(以防不需要这些旧数据)的性能产生影响。这称为交换缓存,可以通过运行 来找到cat /proc/meminfo | grep SwapCached
。
Linux 交换行为由以下项控制sysctl vm.swappiness
(请参阅维基百科)。其范围从 0(完全不交换)、1(在较新的内核中,仅在绝对必要时才交换)到 100(非常积极地交换数据)。
如果您的服务器运行良好,没有出现性能问题的迹象,请保持原样。如果您发现任何问题,可以尝试调整此值。