gpt4 book ai didi

c# - 多核服务器上工作进程的 CPU 使用率

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:23 29 4
gpt4 key购买 nike

设置

我们编写了一个 Windows 服务,它会触发单独的工作进程来执行各种 CPU 密集型任务。服务器和工作人员通过 IPC 命名管道进行通信。

目前,我们通过简单的 Process.Start() 调用创建工作人员。

当我们在相当低规范的双核服务器 VM 上运行多个 worker 时,任务管理器告诉我们每个 worker 使用大约 2 - 3% 的 CPU。

但是(这让我们感到困惑),当我们在非常强大的八核 服务器上执行相同的测试时,我们仍然看到每个工作进程使用 2 - 3% 的 CPU。现在,因为有更多可用的 CPU“能力”,我希望看到每个工作人员使用的 CPU 百分比要小得多。

这也意味着在低功率服务器上,我们在创建 30 个左右的工作进程后达到了 100% 的 CPU。但是在高性能 CPU 上,我们在使用相同数量的 worker 后达到了相同的极限。我们期望能够运行更多的工作器。

问题

所以,我有几个问题:

  • 我们是否误解了任务管理器告诉我们的值? CPU % 值是所有内核消耗的 CPU 时间量?如果是这样,为什么它在截然不同的硬件上是一样的?

  • 我们是否应该做一些特殊/不同的事情来将我们的工作进程正确地分布到多个内核上?目前,这些进程具有默认的处理器关联性(因此它们能够在任何内核上运行)。

任何帮助、建议、链接,我们将不胜感激。


给留言者的一些额外信息:

我最初没有提到它,因为我不一定想为我的问题增加额外的复杂性,但我们的工作进程正在对实时视频流进行视频转码。因此,没有工作人员会“完成”其任务 - 只要有客户端连接,它就会一直工作。

本质上:

  • 客户端连接到服务器
  • 服务器触发连接到远程视频流的工作进程
  • 当从所述视频流接收到视频时,工作人员对其进行转码并将转码后的视频发送回客户端。

不确定这对其他建议是否有帮助?感谢到目前为止的所有评论。

最佳答案

进程使用 2-3% 的 CPU 这一事实表明您的进程不受 CPU 限制,但很可能受 IO 限制或有其他一些限制。

2 核服务器 VM 上的 IO 可能比 8 核服务器慢很多,这反过来会限制那里的行为。这可能就是为什么明显的 CPU 使用率是相同的,尽管我怀疑完整的服务器可能总体上更快地完成任务。

关于c# - 多核服务器上工作进程的 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827153/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com