centos – kswap使用100%的CPU,即使有100GB的RAM也可用

前端之家收集整理的这篇文章主要介绍了centos – kswap使用100%的CPU,即使有100GB的RAM也可用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行Centos 7 ESXi VM,具有近300GB的RAM和24个vcpu.

平均负载为3,应用程序几乎从不使用超过150GB的RAM.其余的可用内存由Linux用于缓存.

问题是,当缓存填满可用的RAM时,两个kswapd进程将开始使用100%的cpu,突然我看到所有cpu显示99%的sys使用率(它不是等待或用户,它主要是sys).

这将导致高负载(100)几分钟,直到系统恢复并且负载再次降至3.

此刻我没有交换分区,但即使我有一个这个问题发生了.

我找到的一个“解决方案”是每天执行以下命令:

echo 3 > /proc/sys/vm/drop_caches

它会丢弃缓冲区/缓存.这将“解决”问题,因为缓存使用率从未达到100%.

我的问题是:

>这个问题有真正的解决方案吗?@H_301_18@> Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

毕竟,根据我的理解,RAM内存的主要功能是应用程序使用.缓存只是一个辅助功能,如果没有足够的内存,可以丢弃/忽略.

我的内核版本是3.10.0-229.14.1.el7.x86_64.

这听起来好像你在一个NUMA节点上耗尽了RAM,并且系统正在试图释放该节点上的内存.如果您使用大量内存的单个进程(默认情况下)优先分配在运行该进程的节点上,则会发生这种情况.

看看这是否有帮助:

sysctl -w vm.zone_reclaim_mode=0

有关大多数系统上默认NUMA策略可能出现的问题的详细说明,请参阅https://engineering.linkedin.com/performance/optimizing-linux-memory-management-low-latency-high-throughput-databases

猜你在找的CentOS相关文章