Merge pull request #22147 from wxy/20210325-Identify-Linux-performance-bottlenecks-using-open-source-tools

PRF&PUB:20210325 identify linux performance bottlenecks using open source tools
This commit is contained in:
Xingyu.Wang 2021-06-07 00:04:18 +08:00 committed by GitHub
commit 104901b12a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,20 +3,20 @@
[#]: author: (Howard Fosdick https://opensource.com/users/howtech)
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-13462-1.html)
使用开源工具识别 Linux 的性能瓶颈
======
> 不久前,识别硬件瓶颈还需要深厚的专业知识。今天的开源 GUI 性能监视器使它变得相当简单。
![瓶子里的闪电][1]
![](https://img.linux.net.cn/data/attachment/album/202106/07/000141z5shv5nzxeln5y5c.jpg)
计算机是一个集成的系统,它的性能取决于最慢的硬件组件。如果一个组件的能力比其他组件差,落后不能跟上,它就会拖累你的整个系统。这就是一个 _性能瓶颈_。消除一个严重的瓶颈可以使你的系统飞起来。
计算机是一个集成的系统,它的性能取决于最慢的硬件组件。如果一个组件的能力比其他组件差,性能落后不能跟上,它就会拖累你的整个系统。这就是一个 _性能瓶颈_。消除一个严重的瓶颈可以使你的系统飞起来。
本文解释了如何识别 Linux 系统中的硬件瓶颈。这些技术同时适用于个人电脑和服务器。我强调的是个人电脑 —— 我不会涉及局域网管理或数据库系统等领域的服务器特定瓶颈。这些通常涉及专门的工具。
本文解释了如何识别 Linux 系统中的硬件瓶颈。这些技术同时适用于个人电脑和服务器。我强调的是个人电脑 —— 我不会涉及局域网管理或数据库系统等领域的服务器特定瓶颈。这些通常涉及专门的工具。
我也不会多谈解决方案。这对本文来说是个太大的话题。相反,我将写一篇关于性能调整的后续文章。
@ -37,7 +37,7 @@
如果任何一个资源表现不佳,就会产生一个性能瓶颈。为了识别瓶颈,你必须监测这六种资源。
开源提供了大量的工具来完成这项工作。我使用 [GNOME 系统监视器][2]。它的输出很容易理解,而且你可以在大多数软件库中找到它。
开源提供了大量的工具来完成这项工作。我使用 [GNOME 系统监视器][2]。它的输出很容易理解,而且你可以在大多数软件库中找到它。
启动它并点击“资源”标签。你可以马上发现许多性能问题。
@ -45,23 +45,23 @@
*图 1. 系统监控器发现问题。(Howard Fosdick, [CC BY-SA 4.0][4])*
在“资源”面板上显示三个部分CPU 历史、内存和交换历史,以及网络历史。一眼就能看出你的处理器是否不堪负荷了,或者你的电脑没有内存了,或者你的网络带宽被用光了。
在“资源”面板上显示三个部分CPU 历史、内存和交换历史,以及网络历史。一眼就能看出你的处理器是否不堪负荷了,还是你的电脑没有内存了,抑或你的网络带宽被用光了。
我将在下面探讨这些问题。现在,当你的电脑速度变慢时,首先检查系统监视器。它可以立即为你提供最常见的性能问题的线索。
现在让我们来探讨一下如何识别特定领域的瓶颈。
现在让我们来探讨一下如何识别特定方面的瓶颈。
### 如何识别处理器的瓶颈
要发现瓶颈,你必须首先知道你有什么硬件。开源为这个目的提供了几个工具。我喜欢 [HardInfo][5],因为它的屏幕显示很容易阅读,而且广泛流行。
启动 HardInfo。它的“计算机->摘要”面板可以识别你的 CPU 并告诉你它的核心、线程和速度。它还能识别你的主板和其他计算机部件。
启动 HardInfo。它的“计算机->摘要”面板可以识别你的 CPU 并告诉你它的核心、线程和速度。它还能识别你的主板和其他计算机部件。
![HardInfo Summary Panel][6]
*图 2. HardInfo 显示了硬件细节。(Howard Fosdick, [CC BY-SA 4.0][4])*
HardInfo 显示,这台计算机有一个物理 CPU 芯片。该芯片包含两个处理器(或称核心)。每个核心支持两个线程(或称逻辑处理器)。这就是总共四个逻辑处理器 —— 正是图 1 中系统监控器的 CPU 历史部分所显示的。
HardInfo 显示,这台计算机有一个物理 CPU 芯片。该芯片包含两个处理器(或称核心)。每个核心支持两个线程(或称逻辑处理器)。这就是总共四个逻辑处理器 —— 正是图 1 中系统监控器的 CPU 历史部分所显示的。
当处理器不能在其时间内对请求做出反应时,就会出现 _处理器瓶颈_,说明它们已经很忙了。
@ -83,7 +83,7 @@ HardInfo 显示,这台计算机有一个物理 CPU 芯片。该芯片包含两
在“进程”面板上一个名为“analytical_AI”的程序被确定为罪魁祸首。你可以在面板上右键单击它以查看其资源消耗的更多细节包括内存使用、它所打开的文件、其输入/输出细节,等等。
如果你的登录有管理员权限,你可以管理这个进程。你可以改变它的优先级,并停止、继续、结束或杀死它。因此,你可以在这里立即解决你的瓶颈问题。
如果你的登录会话有管理员权限,你可以管理这个进程。你可以改变它的优先级,并停止、继续、结束或杀死它。因此,你可以在这里立即解决你的瓶颈问题。
![系统监视器管理一个进程][9]
@ -95,7 +95,7 @@ HardInfo 显示,这台计算机有一个物理 CPU 芯片。该芯片包含两
在用系统监控器监控你的 CPU 时,你会遇到几种常见的瓶颈问题。
有时一个逻辑处理器出现瓶颈,而其他所有的处理器都处于低利用率。这意味着你有一个应用程序,它的码不够智能,无法利用一个以上的逻辑处理器,而且它已经把正在使用的那个处理器用完了。这个应用程序完成的时间将比使用更多的处理器要长。但另一方面,至少它能让你的其他处理器腾出手来做其他工作,而不会接管你的电脑。
有时一个逻辑处理器出现瓶颈,而其他所有的处理器都处于低利用率。这意味着你有一个应用程序,它的码不够智能,无法利用一个以上的逻辑处理器,而且它已经把正在使用的那个处理器耗尽了。这个应用程序完成的时间将比使用更多的处理器要长。但另一方面,至少它能让你的其他处理器腾出手来做别的工作,而不会接管你的电脑。
你也可能看到一个逻辑处理器永远停留在 100% 的利用率。要么它非常忙,要么是一个进程被挂起了。判断它是否被挂起的方法是,是看该进程是否从不进行任何磁盘活动(正如系统监视器“进程”面板所显示的那样)。
@ -103,7 +103,7 @@ HardInfo 显示,这台计算机有一个物理 CPU 芯片。该芯片包含两
### 如何识别内存瓶颈
鉴于现代 PC 中有大量的内存,内存瓶颈比以前要少得多。然而,如果你运行内存密集型程序,特别是当你的计算机不包含很多随机存取内存RAM你仍然可能遇到它们
鉴于现代 PC 中有大量的内存,内存瓶颈比以前要少得多。然而,如果你运行内存密集型程序,特别是当你的计算机没有很多的随机存取内存RAM你仍然可能遇到这些问题
Linux [使用内存][10] 既用于程序也用于缓存磁盘数据。后者加快了磁盘数据的访问速度。Linux 可以在它需要的任何时候回收这些内存供程序使用。
@ -115,24 +115,24 @@ Linux [使用内存][10] 既用于程序,也用于缓存磁盘数据。后者
*图 6. 一个内存瓶颈。(Howard Fosdick, [CC BY-SA 4.0][4])*
在内存的右边,你会注意到 [交换空间][12]。这是 Linux 在内存不足时使用的磁盘空间。它将内存写入磁盘以继续操作,有效地将交换空间作为你的内存的一个较慢的扩展。
内存的右边,你会注意到 [交换空间][12]。这是 Linux 在内存不足时使用的磁盘空间。它将内存写入磁盘以继续操作,有效地将交换空间作为你的内存的一个较慢的扩展。
你要注意的两个内存性能问题是:
1. 内存被大量使用,而且你看到交换空间的活动频繁或不断增加。
2. 内存和交换空间都被大量使用。
情况一意味着更慢的性能,因为交换空间总是比内存更慢。你是否认为这是一个性能问题,取决于许多因素(例如,你的交换空间有多活跃、它的速度、你的预期,等等)。我的看法是,对于现代个人电脑来说,交换空间任何超过象征性使用都是不可接受的。
情况一意味着更慢的性能,因为交换空间总是比内存更慢。你是否认为这是一个性能问题,取决于许多因素(例如,你的交换空间有多活跃、它的速度、你的预期,等等)。我的看法是,对于现代个人电脑来说,交换空间任何超过象征性使用都是不可接受的。
情况二是指内存和交换空间都被大量使用。这是一个 _内存瓶颈_。计算机变得反应迟钝。它甚至可能陷入一种“咆哮”的状态,在这种状态下,除了内存管理之外,它几乎不能完成其他任务。
上面的图 6 显示了一台只有 2GB 内存的旧电脑。当内存使用量超过 80% 时,系统开始向交换空间写入。响应速度下降了。这张截图显示了内存使用量超过 90%,而且这台电脑已经不可用。
上面的图 6 显示了一台只有 2GB 内存的旧电脑。当内存使用量超过 80% 时,系统开始向交换空间写入,响应速度下降了。这张截图显示了内存使用量超过了 90%,而且这台电脑已经无法使用。
解决内存问题的最终答案是要么少用内存,要么多买内存。我将在后续文章中讨论解决方案。
### 如何识别存储瓶颈
如今的存储有固态和机械硬盘等多个品种。设备接口包括 PCIe、SATA、雷电和 USB。无论有哪种类型的存储,你都要使用相同的程序来识别磁盘瓶颈。
如今的存储有固态和机械硬盘等多个品种。设备接口包括 PCIe、SATA、雷电和 USB。无论有哪种类型的存储你都要使用相同的程序来识别磁盘瓶颈。
从系统监视器开始。它的“进程”面板显示各个进程的输入/输出率。因此,你可以快速识别哪些进程做了最多的磁盘 I/O。
@ -140,7 +140,7 @@ Linux [使用内存][10] 既用于程序,也用于缓存磁盘数据。后者
要做到这一点,使用 [atop][13] 命令。它在大多数 Linux 软件库中都有。
只要在命令行提示符下输入`atop` 即可。下面的输出显示,设备 `sdb` `busy 101%`。很明显,它已经达到了性能极限,限制了你的系统完成工作的速度。
只要在命令行提示符下输入 `atop` 即可。下面的输出显示,设备 `sdb` 达到 `busy 101%`。很明显,它已经达到了性能极限,限制了你的系统完成工作的速度。
![atop 磁盘瓶颈][14]
@ -154,31 +154,31 @@ Linux [使用内存][10] 既用于程序,也用于缓存磁盘数据。后者
有些人整天都在使用他们的 USB 端口。然而他们从不检查这些端口是否被最佳地使用。无论你是插入外部磁盘、U 盘,还是其他东西,你都要确认你是否从 USB 连接的设备中获得了最大性能。
这个图表显示了原因。潜在的 USB 数据传输率差异_很大_。
这个图表显示了原因。潜在的 USB 数据传输率差异 _很大_
![USB 标准][15]
*图 8. (Howard Fosdick根据 [Tripplite][16] 和 [Wikipedia][17] 提供的数字,[CC BY-SA 4.0][4])的 USB 速度变化很大。*
*图 8. USB 速度变化很大。(Howard Fosdick根据 [Tripplite][16] 和 [Wikipedia][17] 提供的数字,[CC BY-SA 4.0][4])*
HardInfo 的“USB 设备”标签显示了你的计算机支持的 USB 标准。大多数计算机提供不止一种速度。你怎么知道一个特定端口的速度呢?供应商对它们进行颜色编码,如图表中所示。或者你可以在你的计算机的文档中查找。
HardInfo 的“USB 设备”标签显示了你的计算机支持的 USB 标准。大多数计算机提供不止一种速度。你怎么知道一个特定端口的速度呢?供应商对它们进行颜色编码,如图表中所示。或者你可以在你的计算机的文档中查找。
要看到你得到的实际速度,可以通过使用开源的 [GNOME 磁盘][18] 程序进行测试。只要启动 GNOME 磁盘,选择它的“磁盘基准”功能,然后运行一个基准测试。这将告诉你在一个端口插入特定设备时,你将得到的最大实际速度。
要看到你得到的实际速度,可以使用开源的 [GNOME 磁盘][18] 程序进行测试。只要启动 GNOME 磁盘,选择它的“磁盘基准”功能,然后运行一个基准测试。这将告诉你在一个端口插入特定设备时,你将得到的最大实际速度。
你可能会得到不同的端口传输速度,这取决于你将哪个设备插入它。数据速率取决于端口和设备的特定组合。
例如,一个可以以 3.1 速度运行的设备如果使用 2.0 端口就会以 2.0 的速度运行。(而且它不会告诉你它是以较慢的速度运行的!)相反,如果你把一个 USB 2.0 设备插入3.1端口,它能工作,但速度是 2.0 的速度。所以要获得快速的 USB你必须确保端口和设备都支持它。GNOME 磁盘为你提供了验证这一点的方法。
例如,一个可以以 3.1 速度运行的设备如果使用 2.0 端口就会以 2.0 的速度运行。(而且它不会告诉你它是以较慢的速度运行的!)相反,如果你把一个 USB 2.0 设备插入 3.1 端口,它能工作,但速度是 2.0 的速度。所以要获得快速的 USB你必须确保端口和设备都支持它。GNOME 磁盘为你提供了验证这一点的方法。
要确定 USB 的处理瓶颈,使用你对固态和硬盘所做的同样程序。运行 `atop` 命令来发现 USB 存储瓶颈。然后,使用系统监视器来获取违规进程的详细信息。
### 如何识别互联网带宽瓶颈
系统监控器的“资源”面板会实时告诉你你所经历的互联网连接速度(见图 1
系统监控器的“资源”面板会实时告诉你互联网连接速度(见图 1
有 [很好的 Python 工具][19] 可以测试你的最大网速,但你也可以在 [Speedtest][20]、[Fast.com][21] 和 [Speakeasy][22] 等网站进行测试。为了获得最佳结果,关闭所有东西,只运行 _速度测试_;关闭你的 VPN;在一天中的不同时间运行测试;并比较几个测试网站的结果。
有 [很好的 Python 工具][19] 可以测试你的最大网速,但你也可以在 [Speedtest][20]、[Fast.com][21] 和 [Speakeasy][22] 等网站进行测试。为了获得最佳结果,关闭所有东西,只运行 _速度测试_;关闭你的虚拟私有网络;在一天中的不同时间运行测试;并比较几个测试网站的结果。
然后将你的结果与你的供应商声称你得到的下载和上传速度进行比较。这样,你就可以确认你得到的是你所付款套餐的速度。
然后将你的结果与你的供应商声称的下载和上传速度进行比较。这样,你就可以确认你得到的是你所付的速度。
如果你有一个单独的路由器,在有和没有它的情况下进行测试。这可以告诉你,你的路由器是否是一个瓶颈。如果你使用 WiFi在有 WiFi 和没有 WiFi 的情况下进行测试(通过将你的笔记本电脑直接与调制解调器连接)。我经常看到人们抱怨他们的互联网供应商,而实际上他们有的只是一个 WiFi 瓶颈,他们可以自己解决。
如果你有一个单独的路由器,在有和没有它的情况下进行测试。这可以告诉你,你的路由器是否是一个瓶颈。如果你使用 WiFi在有 WiFi 和没有 WiFi 的情况下进行测试(通过将你的笔记本电脑直接与调制解调器连接)。我经常看到人们抱怨他们的互联网供应商,而实际上他们只是一个 WiFi 瓶颈,可以自己解决。
如果某些程序正在消耗你的整个互联网连接,你想知道是哪一个。通过使用 `nethogs` 命令找到它。它在大多数软件库中都有。
@ -198,7 +198,7 @@ HardInfo 的“PCI 设备”面板告诉你关于你的图形处理单元GPU
*图 10. HardInfo提供图形处理信息。(Howard Fosdick, [CC BY-SA 4.0][4])*
CPU 和 GPU [非常密切地][25]一起工作。简而言之CPU 为 GPU 准备渲染的帧,然后 GPU 渲染这些帧。
CPU 和 GPU [非常密切地][25] 一起工作。简而言之CPU 为 GPU 准备渲染的帧,然后 GPU 渲染这些帧。
当你的 CPU 在等待 100% 繁忙的 GPU 时,就会出现 _GPU 瓶颈_
@ -227,7 +227,7 @@ via: https://opensource.com/article/21/3/linux-performance-bottlenecks
作者:[Howard Fosdick][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出