我正在运行 openSUSE TW、32 GiB RAM、64 GiB 交换 (SSD)。
在 RAM 完全被缓存填满之前,交换空间的使用量为零。
我正在使用 htop 来监控它。黄色/橙色 = 缓存
我的系统将使用 2 GiB 的 RAM,但其余的(30 GiB)都是缓存,然后,不是在需要时丢弃一些缓存来为其他数据腾出空间 - 它开始使用交换,只有几个 MiB,但我我发誓我会注意到轻微的冻结,并且系统有时会明显变慢。
这是为什么?我能做什么?
我愿意提供任何要求的信息。
vm.swappiness = 1
vm.dirty_ratio = 20
vm.dirty_background_ratio = 10
答案1
你可以将 swappiness 设置为 0。Linux 文档说:
“此控制用于定义内核交换内存页面的积极性(原文如此)。较高的值将增加积极性,较低的值会减少交换量。0 值指示内核不要启动交换,直到空闲量和文件支持的页面小于区域中的高水位线。
默认值为 60。”
请注意,将 swappiness 设置为 0 并不能完全消除交换,它仍然会在条件下进行交换。
但交换有问题吗?我认为,只是一些几乎不使用的换出页面值得换出。要查看交换是否存在问题,请运行vmstat 60
一段时间并查看si
和so
列。您可能会发现它们大多数时候都是 0。另外,您的专栏swpd
可能不会有太大变化。这意味着交换不是问题。
swapoff
您是否有足够的内存来完成您正在做的事情,并且出于某种特殊的原因(交换空间),您绝对不想使用交换空间。
请注意,如果使用这些参数导致系统冻结,则不太可能是由交换引起的。当然,除非输出中的四列si
和so
列vmstat
很高。
- 编辑 -
您的vmstat
输出表明有几页被换出。这并不是什么值得担心的事情;没有发生大的交换。当然不足以导致系统冻结。