未充分利用平均CPU使用率

时间:2011-06-30 10:08:30

标签: windows-server-2008 cpu-usage

我们已经创建了一个多线程应用程序,可以同时处理/解析大文件(几百MB)。应用运行完美。但我的客户对使用机器核心的方式感到失望。他试图观察性能监视器并向我们报告。他的观点是,如果应用程序是多线程的,为什么CPU平均利用率低于25%。据他介绍,如果系统上没有运行任何文件处理需要时间,CPU利用率应该超过80-90%。我不确定答案或技术结果会让他满意。请建议。

修改

我有一个多线程应用程序从光盘加载文件。文件加载到内存后,我点击进程按钮,它开始解析内存中的文件。让我们假设现在,解析是在一个线程中完成的。虽然app正在解析数据,但我的平均CPU使用率并未完全使用。我可以给出什么理由来证明为什么没有完全使用CPU。任何类型的报告都可以,或者技术文档会有所帮助。

1 个答案:

答案 0 :(得分:1)

问题非常模糊,但这里有一些一般性指导原则。

磁盘IO是主要的瓶颈,除非文件处理真的很花哨。同时加载多个文件会使情况变得更糟,因为磁头需要跳转(对于非SSD驱动器),数据将进入内存甚至更慢。如果以100 MB的速度加载四个文件,那么串行完成后大约需要4秒 - 而并行完成则需要更长时间。您的程序可能会或可能不会在此期间等待,根本不处理数据。

因此,如果您的并行化主要是处理多个文件(每个工作线程一个文件),那么您可能希望在一个线程中序列化加载。

如果你一次可以处理一个文件,也许你的处理可以分解为在文件的不同部分工作,或者处理本身可以利用多个CPU(很大程度上取决于你的应用程序)。

如果你需要将数据写回磁盘 - 那么这也将成为游戏的一部分。

我认为这里的要点是最小化IO延迟(以及在不同CPU之间合理分配工作负载)。

编辑:

当然要考虑RAM - 如果你需要换掉,这会立即扼杀你的表现。

最好的办法当然是去分析......