为什么apt-get 不使用100%无论是CPU,磁盘或网络-或者甚至接近呢?即使在慢速系统(Raspberry Pi 2+)上,我也最多只能获得 30% 的 CPU 负载。我只是想,无论它是被人为扼杀,或者它应该最大程度的发挥的东西,而它的工作...或者它应该能够做它的东西比它更快。
编辑:我只是通过面板中的 cpu/disk/net 监视器和 Ubuntu MATE 的系统监视器应用程序进行粗略测量。
请解释为什么我错了。:-)
更新:我知道apt-get需要获取其更新(并且可能受到上游/提供商带宽的限制)。但是一旦它“解包”等等,CPU 使用率至少应该上升(如果不是最大的话)。在我相当不错的家用工作站上,它的主驱动器使用 SSD,/tmp 使用 ramdisk,但情况并非如此。
或者也许我需要仔细看看。
PSk*_*cik 29
如果应用程序受 CPU 限制,应用程序只会最大化CPU。一个应用程序是CPU密集型的,如果它可以迅速得到所有的数据,并等待什么的是处理数据的处理器。
apt-get,另一方面,是IO-bound。这意味着它可以相当快地处理其数据,但加载数据(从磁盘或从网络)需要时间,在此期间处理器可以做其他事情或在没有其他进程需要时闲置。
通常,所有 IO 请求(磁盘、网络)都很慢,每当应用程序线程发出请求时,内核都会将其从处理器中删除,直到数据加载到内核中(=这些 IO 请求称为阻塞请求)。
A.L*_*A.L 16
即使在慢速系统(Raspberry Pi 2+)上,我也最多只能获得 30% 的 CPU 负载。
Raspberry Pi 2+ 有 4 个内核。对于某些监控工具,100% 的使用率对应于所有内核的使用率为 100%。如果在四码处理器中仅使用一个内核,则 CPU 负载为 25%。您提到的 30% CPU 负载大约是一个内核以 100% 使用,而一些进程正在其他内核上运行:
(100% on one core out of 4 = 100 / 4 = 25%) + some processes ? 30%
Run Code Online (Sandbox Code Playgroud)
由于apt-get不是多线程,它永远不会使用超过一个处理器,占所有 CPU 资源的 25%。
这是我运行 Ubuntu 的8 核(带有超线程的4 核)机器上的示例,我使用该cat /dev/zero > /dev/null命令启动了一个线程,以创建一个完全利用一个内核的无限进程。
现在,如果我们看一下 中的图表htop,我们可以看到平均负载 ( Avgbar) 是12.7%,对应于 100% 使用的一个核心,这也是所有 CPU 资源的 1/8:
(100% = 100 / 8 = 12.5%) + some background processes ? 12.7%.
Run Code Online (Sandbox Code Playgroud)
还可以注意到该命令100%在CPU%列中有一个值,这是因为它是相对于一个核心而不是所有核心。
| 归档时间: |
|
| 查看次数: |
6675 次 |
| 最近记录: |