系统慢?如何查看 Linux 是否受内存、CPU 或 IO 限制

您所在的位置:网站首页 cpu被限制 系统慢?如何查看 Linux 是否受内存、CPU 或 IO 限制

系统慢?如何查看 Linux 是否受内存、CPU 或 IO 限制

2024-05-05 07:56| 来源: 网络整理| 查看: 265

系统慢?如何查看 Linux 是否受内存、CPU 或 IO 限制

系统运行缓慢?如果是这样,您的系统将受内存、CPU 或 I/O 限制。本文将向您展示一种快速找出它是三者中的哪一个的方法,从而使您能够做出明智的系统性能增强。

内存、计算 (CPU) 还是 I/O 受限?

每当您的系统运行缓慢时,几乎总是由于系统中最慢的组件或组件链。这有时可能是由软件引起的,但通常是硬件才是罪魁祸首。

例如,如果您有一个非常旧且速度很慢的磁盘——例如,一个仍然有些常见的 5400 RPM 旋转磁盘,通常称为 HDD 或硬盘驱动器——该磁盘可能是瓶颈在你的系统中。

把它想象成有水流过的管道。将您系统的内存、计算单元(您的 CPU 或中央处理器 - 系统中的主芯片/处理器)和磁盘(作为 I/O 或输入/输出系统的一部分)想象成水管。现在,假设最慢的组件是一个较小的管道,而最快的组件是一个较大的管道。如果您需要通过每根管道传输 10L,最慢的管道将比最大的管道花费更长的时间。

在 Linux 上,主要瓶颈是内存 (RAM)、计算 (CPU) 或 I/O(磁盘操作)。就内存而言,速度可能是一个因素,但内存用完是个大问题。对于 CPU,如果您使用的是较旧的硬件,则每个 CPU 内核的工作速度都会慢很多,而且它们可能不够用。对于 I/O,从慢速硬盘驱动器读取以及过多的磁盘写入都可能是问题所在。

您可以使用一些工具轻松确定系统是否受内存、计算 (CPU) 或 I/O 限制。您只需要htop 和iotop 这两个半图形化工具,它们可以很容易地安装在Linux 上。

安装 htop 和 iotop

要在基于 Debian/Apt 的 Linux 发行版(如 Ubuntu 和 Mint)上安装 htop 和 iotop,请执行以下操作:

sudo apt install htop iotop

要在基于 RedHat/Yum 的 Linux 发行版(如 RedHat 和 Fedora)上安装 htop 和 iotop,请执行以下操作:

sudo yum install htop iotop

CPU绑定

很容易看出系统是否受 CPU 限制。只需在命令行中输入 \\htop\\ 并按回车键。然后查看屏幕顶部的彩色 CPU 条。如果您的处理器有 16 个线程,则会有 16 个条。

要回答的简单问题是它们是否都接近“满”(接近 100%),或者是否有足够的移动空间:

如果条形和满一样好,则系统显然受 CPU 限制。另请注意,内存 (Mem) 和交换 (Swp) 条绝不是满的:这不是内存相关的性能问题。

要了解更多信息和趋势,您接下来可以查看“平均负载”数字。虽然这个数字是非常随意的,但只要对您的系统有一点了解,并且普遍理解如果这三个数字中的任何一个超过系统中线程数的两倍,系统就很难跟上。

第一个平均负载数是 1 分钟的平均数,接下来是 5 分钟的平均数,最后一个数是 15 分钟的平均数。在这种情况下,1 分钟负载为 270,几乎是线程数的 17 倍:我们的系统严重依赖 CPU。

最后,要检查的一个有趣的数字是任务的数量(以及较小程度上的线程)。虽然确切的低水位线和高水位线取决于底层硬件/机器的功能,但如果任务数量过高,您的 CPU 可能会大量进行上下文切换(从处理一个任务切换到另一个任务)。

如果您想详细了解 htop 中的各种颜色表示什么,请参阅 htop 中的颜色条 - 它们是什么意思?

内存限制

访问 htop 后,很容易看出系统是否受内存限制。简单看一下前面提到的内存(Mem)和交换(Swp)条。

如果内存条已满,而交换条已满(例如 50%),则系统几乎肯定正在大量交换。 Swapping 是因为磁盘已满(使用特殊的 Swap 文件或 Swap 分区)与磁盘交换主存内容的过程,而且通常来说超级慢。一旦系统启动并继续交换,它将变得非常慢。

当您开始耗尽内存时很容易看到,因为该条将变满。然而,交换空间的使用有时会有点模糊。

例如,20% 可能正在使用中,但还有足够的内存剩余。这可能表明操作系统已将一些低频率使用的内存区域移至磁盘以优化主内存。由于仍有大量内存可用,因此这种情况很好,无需担心。

还有一个内存条看起来挺满的例外,那就是缓存。您的系统可能设置为保留 x 内存量用于缓存。

另一种快速检查这一点的方法是在命令行运行 free -g(或 free -m 用于内存量较小的机器,如 Raspberry Pi):

这很容易阅读:62 GB 内存,25 GB 正在使用,12 GB 空闲,24 GB 当前分配给缓冲区和高速缓存。可用的 32 是实际空闲 (12) 和分配给缓冲区和高速缓存的任何内容 (24) 减去已使用的内容(未显示)的近似总数,或者换句话说,12 + 24=36 和 32 可用,因此大约 4 GB 用于缓冲区和缓存。

请注意,我们还可以看到保留了多少交换空间(10 GB)以及此处使用了多少:当前为 0,因此有 10 个可用。

I/O 限制

假设你正在检查 htop 并看到这个:

系统看起来很忙,但还没有忙到被认为是 CPU 密集型的程度。已用/可用内存和交换栏看起来也不错。接下来让我们检查iotop。为此,您需要使用 sudo iotop 启动 iotop,因为 iotop 需要 sudo。

顶部的两个柱状图最有助于快速分析系统是否正在与磁盘吞吐量作斗争并因此受到 I/O 限制。

虽然就现代 SSD 而言,M/s 数字并不是很高,但每秒不断地向慢速 HDD 驱动器读取和写入数兆字节是相当密集的 I/O!

观察一下这个数字,连同它下面的进程列表(查看排名靠前的用户是谁),以及 htop 输出的顶部部分(就 CPU 和内存而言)给出了一个很好的整体感觉是否是一个系统受内存、CPU 或 I/O 限制。

缓解性能问题

缓解性能问题所需的系统更改始终特定于系统以及所经历的特定情况。几个例子:

系统是否磁盘/IO 绑定?停止一些重写日志服务、升级 I/O 系统(例如通过在旧计算机中添加 SATA 卡)、更改为更快的存储设备(例如基于 NVMe 的磁盘而不是HDD),或者简单地找到更快的 SSD。

系统是否内存/交换绑定?例如,运行更少的虚拟机、运行更少的内存密集型进程或添加更多的物理硬件内存模块可能是有意义的。

系统是否 CPU 受限?使用 htop 中底部的进程列表来查找占用 CPU 的进程。您甚至可以使用 F9 键直接从 htop 中终止它。

如果问题出在 CPU 本身(即 CPU 显然跟不上与系统相关的最基本任务),则更改硬件会稍微复杂一些。人们需要找到一个更快的 CPU,仍然与主板上的插槽兼容,即使在那种情况下,性能改进也可能很小。可能是时候全面升级系统了。

不止一个性能瓶颈?

回到我们的水管类比,请记住,有时瓶颈可能是由各种组件的组合引起的。

例如,如果一个旧的或便宜的 I/O 控制器卡需要 80% 的 CPU 时间来处理数据,并且连接到它的磁盘是慢速 HDD 驱动器,它已经使用了它 80% 的能力,即使吞吐量是更便宜的 I/O 卡,那么两者都会产生一个整体问题,解决其中任何一个都无法解决。在系统再次变得高效之前,两者都需要修复。

包起来

无论您是 DevOps 工程师还是家庭计算机 Linux 用户,知道如何快速分析您的系统是否受内存、CPU 或 I/O 限制将帮助您实施更好的软件和硬件更改以解决遇到的性能问题。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3