你是如何显示CPU利用率的?
如果您使用任务管理器,我建议您使用Sysinternal Process Explorer。这有一个系统信息窗口,你可以打开它显示完全CPU使用,或一个复选框,以显示每个处理器核心的利用率。
事实上你引用CD翻录和文件压缩作为CPU利用率达到25%左右的情况对我来说,你正在做的任务是由一个CPU限制的。例如,压缩文件的性能受限于两件事:
大多数压缩无法利用多个核心,因为它本身就是单线程的线程任务。因此,并行添加更多处理器将不会更快。如果您查看每个核心的处理器利用率,您将看到一个平坦的,其他的几乎空闲。现在,一个100%和3个0%的平均值约为25% - 所以这类似于你所看到的。
同样,CD翻录受限于数据从CD中拉出的速度,然后是你用它做什么。如果您(例如)将音频转换为MP3作为rip的一部分,那么该转换也几乎是单线程的,这意味着将不再使用多个CPU内核(或使整个作业更快地完成)。您的限制将由单个CPU的读取速度或速度设置。
这听起来就像你看到的那样20% - 25%是因为你进行测量的工作被限制在一个单独的CPU上运行得非常平坦,其他人都在闲置,因为你正在做的任务不能利用多个处理器。
要查看总处理器利用率是否会更高,您需要运行可以利用多个CPU的任务。(当然没有人告诉你他们的程序是否这样做。)
在这里选择其他一个答案提出的观点:一些问题适合于并行性,如果一个程序(对于那个问题)写得正确,可以利用多个CPU。有些问题无法利用这种并行性。我很确定,例如,在所有常见的zip类型文件中使用的LZ样式压缩CANT利用并行性,因为算法需要按顺序读取源文件以创建压缩文件。像这样的顺序处理不能轻易地分布在多个线程上(然后可以将线程分配给物理处理器)。