我有一个在 Linux (Ubuntu 12.14) 上用 C++ 编写的应用程序,它可以解码音频并找到峰值。此计算在后台线程上运行。从主 UI 线程中,我多次调用后台线程。当这个后台线程运行时,我看到 CPU 利用率约为 100%;也就是说,只有第一个核心的使用率达到 100%,其余 3 个核心处于空闲状态(四核处理器)。
那么应用程序利用 100% CPU 是好的行为吗?我读过一些帖子,其中指出,“通常,进程使用 100% 的 CPU 是一件好事。这意味着它会更快完成。”
我读过的另一则声明是,“如果您在满载情况下或有主要应用程序正在运行时,75% 到 100% 的 CPU 使用率并不算太糟糕;但是,如果这是空闲时或您不使用 PC/笔记本电脑时的读数,那么这就是一个担心。”
答案1
这取决于您的应用程序是计算应用程序(像这样)还是交互式应用程序。
对于计算应用程序,充分利用 CPU 是您的目标,因为这意味着结果可以更快准备好。任何导致利用率下降的因素都是改进的机会(例如等待 I/O)。
对于交互式应用程序,CPU 使用的任何时间都是未用于准备响应用户输入的时间。您希望您的使用率较低。
一些应用程序(例如多媒体编辑器)既是计算性的又是交互式的。好的将工作划分到不同的线程中,以便它们可以响应交互,同时实现高吞吐量。这似乎就是你正在做的事情。
您可能需要考虑的一件事是为您的工作负载使用更多线程(假设它是可整除的),以便让更多核心忙于计算。如果其中一些闲置,那就是资源浪费!
答案2
当然好。 CPU的唯一存在的理由供应用程序使用。整个硬件+操作系统组合就是为了这个单一目的而存在的。为什么消耗与系统中一样多的 cpu 不是好事呢?
答案3
操作系统的目的就是为你处理这个问题,Windows、Mac OS、Linux,它们的两个基本目的是调度和硬件接口。这个问题与Linux或Unix无关。