我的应用程序可以利用 ~100% CPU

Har*_*ris 3 linux process cpu-usage

我有一个在 Linux (Ubuntu 12.14) 上用 C++ 编写的应用程序,它解码音频并找到峰值。此计算在后台线程上运行。在主 UI 线程中,我多次调用后台线程。当这个后台线程运行时,我看到大约 100% 的 CPU 利用率;也就是说,只有第一个内核的使用率为 100%,其余 3 个内核处于空闲状态(四核处理器)。

那么应用程序使用 100% 的 CPU 是好的行为吗?我读过一些帖子,其中指出:“通常,进程使用 100% 的 CPU 是一件好事。这意味着它会更快完成。”

我读过的另一个声明是,“如果您在满载或有主要应用程序运行时获得 75% 到 100% 的 CPU 使用率还不错;但是,如果这是在空闲时或不在时的读数使用个人电脑/笔记本电脑,这很令人担忧。”

Tob*_*ght 18

这取决于您的应用程序是计算应用程序(像这样)还是交互式应用程序。

对于计算应用程序,您的目标是充分利用 CPU,因为这意味着结果可以更快地准备就绪。任何导致利用率下降的事情都是改进的机会(例如,等待 I/O)。

对于交互式应用程序,在 CPU 中使用的任何时间都是未准备好响应用户输入的时间。您希望使用率较低。

一些应用程序,例如多媒体编辑器,既是计算的又是交互式的。好的将工作划分到不同的线程中,以便它们可以响应交互,同时实现高吞吐量。这似乎是你在做什么。

您可能需要考虑的一件事是为您的工作负载使用更多线程(假设它是可分的),以便让更多内核忙于您的计算。如果其中一些闲置,那就是浪费资源!