首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高iowait,交换几乎总是充分使用。

高iowait,交换几乎总是充分使用。
EN

Server Fault用户
提问于 2022-09-14 13:05:32
回答 2查看 273关注 0票数 0

在多个用户同时使用的大型服务器上,我经常感到速度缓慢,有许多CPU (72)和相当数量的ram (125 of )。

当然,服务器运行了很多东西,因此负载很大,但是几乎从来没有发生过接近所有CPU同时使用的情况。拉姆的使用率经常上升到80%左右。我注意到,iowait经常会变得很高(大多数时候是15%,我见过20%以上),而且交换似乎总是完全被100%利用。交换值为4gb。

为了解决速度慢的问题,你有什么建议?

以下是我考虑过的一些选择:

  1. 增加掉期
  2. 将交换减少到例如10 (目前设置为60),这样至少在有足够RAM可用时,交换空间就不会一直满

很高兴得到你对这些选择的想法。

我不是这个领域的专家,所以任何其他的建议也是非常欢迎的。

编辑:根据评论中的讨论添加详细信息。见下文:

vmstat向我展示了一个非常高的交换数字,使用glances,我看到了一个警告(ongoing) MEMSWAP (100.0)

EN

回答 2

Server Fault用户

发布于 2022-09-14 16:20:22

首先,我会得到一些类似于性能副试点的安装,这样您就可以了解服务器上的使用趋势。此外,我只需要坐一段时间来了解哪些进程是最活跃的,以及它们使用了多少内存。

第二,增加掉期,甚至取消互换,似乎是合理的。对于这么大的服务器来说,4gb几乎毫无价值。人们会永久地关闭交换,这样在内存压力下,VM就不能开始篡改页面,并为此目的使用过多的CPU。当然,在内存不足时,仍然有大量不需要的脏页和缓冲区缓存,VM可以开始逐出它们,但是这些会转到文件系统中。如果内核没有经常删除内存不足的进程,那么可能内存利用率主要是文件系统缓存。

总之,删除交换设备,添加pcp,尝试获得内存如何使用的句柄,如果您添加回交换,请确保它的大小是正确的。理想情况下,您希望在交换中休眠进程,并且所有活动进程都能够适应可用的RAM。如果活动进程都在长时间内交换页面,那么更多的交换将使服务器超出其能力范围。

票数 1
EN

Server Fault用户

发布于 2022-09-16 19:43:02

然而,有一件事是很清楚的,就是当内存至少还剩下20/30 is的时候,交换就会被填满(100%),通常会更多。

不要删除交换。你的虚拟内存用完了。增加交换大小最多1-2 x RAM.交换用于将当前不需要的虚拟内存页从RAM交换到磁盘。

您可能有空闲的物理RAM,但同时也没有虚拟内存。

比较

代码语言:javascript
运行
复制
# The amount of memory presently allocated on the system. The committed memory is a sum of all of the memory which has been allocated by processes, even if it has not been “used” by them as of yet. 
cat /proc/meminfo | grep Committed_AS

使用

代码语言:javascript
运行
复制
# This is the total amount of memory currently available to be allocated on the system, expressed in kilobytes. 
cat /proc/meminfo | grep CommitLimit

如果Committed_AS不断接近CommitLimit和高交换内存,则添加更多内存。

还有压力失速信息

https://docs.kernel.org/accounting/psi.html

https://facebookmicrosites.github.io/psi/docs/overview

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1110715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档