设置
我们编写了一个Windows服务,它触发单独的工作进程来执行各种CPU密集型任务。服务器和工作人员通过IPC命名的管道进行通信。
目前,我们通过一个简单的Process.Start()调用创建工人。
当我们在一个相当低规格的双核服务器VM上运行一些工作人员时,任务管理器告诉我们,每个工作人员大约使用2-3%的CPU。
然而(这是让我们困惑的事情),当我们在一个非常强大的八核服务器上执行相同的测试时,我们仍然看到每个工作进程使用2-3%的CPU。现在,由于有更多的CPU“能力”可用,我希望看到每个工作人员使用的CPU百分比要小得多。
这也意味着,在低性能服务器上,在创建了30个工作进程之后,我们达到了100%的CPU。但是在高性能的CPU上,我们在相同数量的工人之后达到了同样的极限。我们希望能够管理更多的工人。
问题
所以,我有几个问题:
任何帮助,建议,链接,将不胜感激。
给那些留言的人提供一些额外的信息:
我一开始没有提到它,因为我不一定想给我的问题增加额外的复杂性,但是我们的工作流程正在做实时视频流的视频转换。因此,没有任何员工能够“完成”它的任务--只要连接到客户端,它就能正常工作。
实质上:
不确定这是否对其他建议有帮助?谢谢你到目前为止的所有评论。
发布于 2012-03-22 17:20:37
进程使用CPU的2-3%这一事实表明,您的进程不是CPU绑定的,而是可能是IO绑定的,或者有其他限制的。
2核心服务器VM上的IO可能比您的8核心服务器慢很多,这反过来又限制了那里的行为。这可能是为什么表面上的CPU使用率是相同的,尽管我怀疑整个服务器可能会更快地完成任务。
https://stackoverflow.com/questions/9827153
复制相似问题