使用开源工具识别 Linux 性能瓶颈使用开源工具识别 Linux 性能瓶颈使用开源工具识别 Linux 性能瓶颈使用开源工具识别 Linux 性能瓶颈
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

使用开源工具识别 Linux 性能瓶颈

不久前,识别硬件瓶颈需要深厚的专业知识。如今的开源 GUI 性能监视器使其变得非常简单。

计算机是集成系统,其运行速度与其最慢的硬件组件一样快。如果一个组件的能力不如其他组件(如果它落后并且无法跟上),它可能会阻碍整个系统的发展。这是一个性能瓶颈。消除严重的瓶颈可以使您的系统运行良好。

本文介绍如何识别 Linux 系统中的硬件瓶颈。这些技术适用于个人计算机和服务器。我的重点是 PC,我不会讨论 LAN 管理或数据库系统等领域中特定于服务器的瓶颈。这些通常涉及专门的工具。

我也不会过多谈论解决方案。对于本文来说,这个话题太大了。相反,我将撰写一篇有关性能调整的后续文章。

我将仅使用开源图形用户界面 (GUI) 工具来完成工作。大多数有关 Linux 瓶颈的文章都相当复杂。他们使用专门的命令并深入研究神秘的细节。

开源提供的 GUI 工具使识别许多瓶颈变得简单。我的目标是为您提供一种可以在任何地方使用的快速、简单的方法。

从哪儿开始

计算机由六种关键硬件资源组成:

  • 处理器
  • 记忆
  • 贮存
  • USB端口
  • 网络连接
  • 图形处理器

如果任何一种资源表现不佳,就会造成性能瓶颈。要识别瓶颈,您必须监控这六种资源。

开源提供了大量的工具来完成这项工作。我将使用 GNOME 系统监视器。它的输出很容易理解,您可以在大多数存储库中找到它。

启动它并单击资源选项卡。您可以立即识别许多性能问题。

图. 1. 系统监视器发现问题(Howard Fosdick,CC BY-SA 4.0)

资源面板显示三个部分:CPU历史记录、内存和交换历史记录和网络历史记录。快速浏览一下,您就可以立即知道您的处理器是否已不堪重负,或者您的计算机内存不足,或者您是否用完了所有互联网带宽。

下面我将探讨这些问题。现在,当您的计算机速度变慢时,请先检查系统监视器。它会立即提示您最常见的性能问题。

现在让我们探讨如何识别特定领域的瓶颈。

如何识别处理器瓶颈

要发现瓶颈,您必须首先知道您拥有什么硬件。开源为此提供了多种工具。我喜欢 HardInfo,因为它的屏幕易于阅读并且广受欢迎。

启动 HardInfo。其计算机 -> 摘要面板可识别您的 CPU 并告诉您有关其核心、线程和速度的信息。它还可以识别您的主板和其他计算机组件。

图. 2. HardInfo 显示硬件详细信息(Howard Fosdick,CC BY-SA 4.0)

HardInfo 透露,这台计算机有一个物理 CPU 芯片。该芯片包含两个处理器或内核。每个核心支持两个线程或逻辑处理器。总共有四个逻辑处理器 — 正是系统监视器的 CPU 历史记录部分如图 1 所示。

当处理器无法及时响应请求时,就会出现处理器瓶颈。他们已经很忙了。

当系统监视器显示逻辑处理器利用率持续超过 80% 或 90% 时,您可以识别这一点。下面是一个示例,其中四个逻辑处理器中的三个处于 100% 利用率。这是一个瓶颈,因为它不会为任何其他工作留下太多 CPU。

图. 3. 处理器瓶颈(Howard Fosdick,CC BY-SA 4.0)

哪个应用程序导致了问题?

您需要找出哪个程序正在消耗所有 CPU。单击系统监视器的进程选项卡。然后单击 % CPU 标题,按进程消耗的 CPU 数量对进程进行排序。您将看到哪些应用程序正在限制您的系统。

图. 4. 识别违规进程(Howard Fosdick,CC BY-SA 4.0)

前三个进程各自消耗总 CPU 资源的 24%。由于有四个逻辑处理器,这意味着每个逻辑处理器都会消耗整个处理器。如图 3 所示。

进程面板将名为analytical_AI的程序识别为罪魁祸首。您可以在面板中右键单击它以查看有关其资源消耗的更多详细信息,包括内存使用情况、它打开的文件、其输入/输出详细信息等等。

如果您的登录具有管理员权限,您可以管理该流程。您可以更改其优先级并停止、继续、结束或终止它。所以,你可以立即解决这里的瓶颈。

图. 5. 右键单击进程进行管理(Howard Fosdick,CC BY-SA 4.0)

如何解决处理瓶颈?除了实时管理违规流程之外,您还可以防止瓶颈的发生。例如,您可以用另一个应用程序替换违规者,解决它,改变您使用该应用程序时的行为,安排应用程序在非工作时间,解决潜在的内存问题,调整应用程序或系统软件的性能,或者升级你的硬件。这里涉及的内容太多,因此我将在下一篇文章中探讨这些选项。

常见的处理器瓶颈

使用系统监视器监视 CPU 时,您会遇到几个常见的瓶颈。

有时,一个逻辑处理器出现瓶颈,而所有其他逻辑处理器的利用率都较低。这意味着您的应用程序的编码不够智能,无法利用多个逻辑处理器,并且它已经耗尽了正在使用的处理器。与使用更多处理器相比,该应用程序需要更长的时间才能完成。另一方面,至少它让您的其他处理器可以自由地进行其他工作,并且不会接管您的计算机。

您还可能会看到逻辑处理器永远停留在 100% 利用率。要么非常繁忙,要么进程挂起。判断进程是否挂起的方法是进程是否从未执行任何磁盘活动(如系统监视器进程面板将显示的那样)。

最后,您可能会注意到,当所有处理器都出现瓶颈时,您的内存也会得到充分利用。内存不足有时会导致处理器出现瓶颈。在这种情况下,您需要解决底层内存问题,而不是有症状的 CPU 问题。

如何识别内存瓶颈

鉴于现代 PC 具有大量内存,内存瓶颈比以前不再那么常见。然而,如果您运行内存密集型程序,您仍然可能会遇到它们,特别是如果您的计算机不包含太多随机存取存储器 (RAM)。

Linux 使用内存来存储程序和缓存磁盘数据。后者加速磁盘数据访问。 Linux 可以在程序需要时随时回收该内存。

系统监视器的资源面板显示您的总内存以及已使用的内存量。在进程面板中,您可以查看各个进程的内存使用情况。

以下是系统监视器资源面板中跟踪聚合内存使用情况的部分:

图. 6. 内存瓶颈(Howard Fosdick,CC BY-SA 4.0)

在内存右侧,您会注意到交换。这是 Linux 在内存不足时使用的磁盘空间。它将内存写入磁盘以继续操作,有效地使用交换作为 RAM 的较慢扩展。

您需要注意的两个内存性能问题是:

  1. 内存似乎被大量使用,并且您会看到交换空间上的活动频繁或不断增加。
  2. 内存和交换空间都已大量使用。

情况 1 意味着性能较慢,因为交换总是比内存慢。您是否认为这是性能问题取决于许多因素(例如,交换空间的活跃程度、速度、您的期望等)。我的观点是,对于现代个人计算机来说,除了代币交换之外的任何事情都是不可接受的。

情况 2 是内存和交换区都大量使用的情况。这是内存瓶颈。计算机变得无响应。它甚至可能陷入一种颠簸的状态,在这种状态下它除了内存管理之外什么也做不了。

上图 6 显示了一台只有 2GB RAM 的旧计算机。当内存使用率超过80%时,系统开始写入交换区。反应能力下降。此屏幕截图显示内存使用率超过 90%,并且计算机无法使用。

解决内存问题的最终答案是要么少用,要么多买。我将在后续文章中讨论解决方案。

如何识别存储瓶颈

如今的存储有多种固态硬盘和机械硬盘。设备接口包括 PCIe、SATA、Thunderbolt 和 USB。无论您拥有哪种类型的存储,都可以使用相同的过程来识别磁盘瓶颈。

从系统监视器开始。其进程面板显示各个进程的输入/输出速率。因此,您可以快速识别哪些进程正在执行最多的磁盘 I/O。

但该工具不会显示每个磁盘的总数据传输率。您需要查看特定磁盘上的总负载以确定该磁盘是否是存储瓶颈。

为此,请使用 atop 命令。大多数 Linux 存储库中都提供了它。

只需在命令行提示符处输入 atop 即可。下面的输出显示设备 sdb 处于 busy 101%。显然,它已经达到了性能极限,并且限制了系统完成工作的速度。

图. 7. atop 命令识别磁盘瓶颈(Howard Fosdick,CC BY-SA 4.0)

请注意,其中一个 CPU 85% 的时间正在等待磁盘来完成其工作 (cpu001 w 85%)。当存储设备成为瓶颈时,这是典型的情况。事实上,许多人首先查看 CPU I/O 等待来发现存储瓶颈。

因此,要轻松识别存储瓶颈,请使用 atop 命令。然后使用系统监视器上的进程面板来识别导致瓶颈的各个进程。

如何识别 USB 端口瓶颈

有些人整天使用 USB 端口。然而,他们从不检查这些端口是否得到最佳使用。无论您插入外部磁盘、记忆棒还是其他设备,您都需要验证 USB 连接设备是否能发挥最大性能。

该图表显示了原因。潜在的 USB 数据传输速率差异很大。

图. 8. USB 速度差异很大(Howard Fosdick,基于 Tripplite 和 Wikipedia 提供的数据,CC BY-SA 4.0)

HardInfo 的USB 设备选项卡显示您的计算机支持的USB 标准。大多数计算机提供不止一种速度。如何知道特定端口的速度?供应商对它们进行颜色编码,如图表所示。或者您可以查看计算机的文档。

要查看您获得的实际速度,请使用开源 GNOME Disks 程序进行测试。只需启动 GNOME Disks,选择其基准磁盘功能,然后运行基准测试即可。这告诉您插入特定设备的端口可以获得的最大实际速度。

您可能会获得不同的端口传输速度,具体取决于您插入的设备。数据速率取决于端口和设备的特定组合。

例如,可以以 3.1 速度飞行的设备将使用 2.0 端口(速度为 2.0)(如果您将其插入该端口)。 (而且它不会告诉您它正在以较慢的速度运行!)相反,如果您将 USB 2.0 设备插入 3.1 端口,它也可以工作,但速度为 2.0。因此,要获得快速 USB,您必须确保端口和设备都支持它。 GNOME Disks 为您提供了验证这一点的方法。

要确定 USB 处理瓶颈,请使用与固态硬盘和硬盘相同的过程。运行 atop 命令来发现 USB 存储瓶颈。然后,使用系统监视器获取有关违规进程的详细信息。

如何识别互联网带宽瓶颈

系统监视器资源面板实时告诉您正在体验的互联网连接速度(见图1)。

有一些很棒的 Python 工具可以测试您的最大互联网速度,但您也可以在 Speedtest、Fast.com 和 Speakeasy 等网站上进行测试。为了获得最佳结果,请关闭所有内容并仅运行速度测试;关闭您的 VPN;在一天的不同时间进行测试;并比较几个测试站点的结果。

然后将您的结果与供应商声称的下载和上传速度进行比较。这样,您就可以确认您获得了您所支付的速度。

如果您有单独的路由器,请在使用和不使用它的情况下进行测试。这可以告诉您路由器是否是瓶颈。如果您使用 WiFi,请在使用和不使用 WiFi 的情况下进行测试(通过将笔记本电脑直接连接到调制解调器)。我经常看到人们抱怨他们的互联网供应商,但他们实际上拥有的是可以自行修复的 WiFi 瓶颈。

如果某个程序占用了您的整个互联网连接,您想知道是哪个程序。使用 nethogs 命令查找它。它在大多数存储库中都可用。

有一天,我的系统监视器突然显示我的互联网访问量激增。我只需在命令行中输入 nethogs,它就会立即将带宽消耗者识别为 Clamav 防病毒更新。

图. 9. Nethogs 识别带宽消费者(Howard Fosdick,CC BY-SA 4.0)

如何识别图形处理瓶颈

如果您将显示器插入台式计算机背面的主板,则您正在使用板载显卡。如果将其插入背面的卡中,您就拥有了专用的图形子系统。大多数人将其称为视频卡或图形卡。对于台式计算机,附加卡通常比主板显卡更强大且更昂贵。笔记本电脑始终使用板载显卡。

HardInfo 的 PCI 设备 面板会告诉您有关图形处理单元 (GPU) 的信息。它还显示您拥有的专用视频内存量(查找标记为“可预取”的内存)。

图. 10. HardInfo 的图形处理信息(Howard Fosdick,CC BY-SA 4.0)

CPU 和 GPU 紧密配合工作。为了简化,CPU 准备帧供 GPU 渲染,然后 GPU 渲染帧。

当您的 CPU 等待 100% 繁忙的 GPU 时,GPU 瓶颈就会出现。

要确定这一点,您需要监控 CPU 和 GPU 利用率。如果 Conky 和 Glances 等开源显示器的扩展与您的图形芯片组兼容,那么它们就可以做到这一点。

看看 Conky 的这个例子。你可以看到这个系统有很多可用的CPU。 GPU 仅繁忙 25%。想象一下,如果 GPU 数量接近 100%。然后您就会知道 CPU 正在等待 GPU,并且您会遇到 GPU 瓶颈。

图. 11. Conky 显示 CPU 和 GPU 利用率(图片由 AskUbuntu 论坛提供)

在某些系统上,您需要特定于供应商的工具来监视 GPU。它们都可以从 GitHub 下载,并在有关 GPU 监控和诊断命令行工具的文章中进行了描述。

概括

计算机由一系列集成硬件资源组成。如果其中任何一个在工作负载上远远落后于其他,就会造成性能瓶颈。这可能会阻碍您的整个系统。您需要能够识别并纠正瓶颈以实现最佳性能。

不久前,识别瓶颈需要深厚的专业知识。如今的开源 GUI 性能监视器使其变得非常简单。

在我的下一篇文章中,我将讨论提高 Linux PC 性能的具体方法。同时,请在评论中分享您自己的经历。

©2015-2025 艾丽卡 support@alaica.com