Kev*_*n M 14 linux memory iscsi storage-area-network swap
我有一个用作 SAN 存储的 linux 盒子。它配备了 14 个 SATA HDD,它运行的唯一软件是 iSCSI 目标和 zabbix 代理。这是物理盒子,不是虚拟机。
安装的 RAM 大小为 128 GB,swap 被安排为 4 GB,当 RAM 很大时没有人关心它的大小,但是随着机器运行(正常运行时间为 694 天)swap 越来越多地使用,现在它用于~80%。
htop 不会显示任何不好的东西,看起来操作系统使用 RAM 作为缓存等swappiness
设置为 10,然后设置为 1,没有任何帮助。当然我可以完全禁用交换,但看起来这将是一个糟糕的举动。
所以我的问题很简单,如何将盒子设置为使用 RAM 而不是使用交换,以及为什么它在 RAM 足够的情况下完全使用交换?
这是 SAN,所以它服务的是块而不是文件,所以缓存可以基于块来完成,如果 RAM 有限,可以轻松减少,无论如何它不会影响 iSCSI 的逻辑。
Zabbix 说现在我有可用的 RAM = 123.22 GB(嘿,几乎都是 128 GB!),使用的交换是 3.24 GB 的 4 GB。
Ove*_*ind 23
没有问题。即使还有可用的 RAM,Linux 内核也会将几乎从未使用过的内存页移动到交换空间中。
最好将一段时间不活动的内存页换出,将经常使用的数据保留在缓存中;这是内核所需的情况。
您可以通过使用vfs_cache_pressure
(它控制内核回收用于缓存目录和 inode 对象的内存的趋势) 和swappiness
(它控制内核交换内存页面的积极性:更高的值将增加积极性)对此有更多的控制,较低的值会减少交换量)。
您可以在 中找到这些设置 /etc/sysctl.conf
。