【问题标题】:How to find the number of cores which are currently being utilized by Windows Service?如何查找 Windows 服务当前正在使用的内核数量?
【发布时间】:2021-01-09 10:56:42
【问题描述】:

我创建了一个通过 Windows 服务运行的多线程应用程序。早些时候,我的系统中有 2 个核心,我已增加到 6 个核心。即使在增加内核数量之后,我的应用程序的性能也没有得到优化 我尝试了线程和任务来在我的应用程序中实现多线程,但我的应用程序的性能没有显着差异。 如何找到我的应用程序在我的系统中运行或正在使用的线程和内核的数量,以便我可以知道我的所有内核是否都在使用?

【问题讨论】:

  • 您要求的内容比 Environment.ProcessorCount 更具体?
  • “我的应用程序的性能没有显着差异。” - 首先,你确认CPU是瓶颈了吗?如果您的问题是例如受 I/O 限制,有多少内核可用并不重要。
  • Environment.ProcessorCount 告诉核心的数量,而不是没有使用的操作系统核心

标签: c# multithreading windows-services task-parallel-library threadpool


【解决方案1】:

这取决于操作系统的调度程序。您的 Windows 服务并不是机器上唯一运行的服务。操作系统决定如何为所有需要运行的线程分配 CPU 时间。

如果您想让您的应用程序更加“多核友好”,您需要分享有关它的更多详细信息以及它的作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多