如何在 C# 中获取每个核心的 CPU 负载?

2024-03-06

如何在 C# 中获取每个核心(四核 cpu)的 CPU 负载?

谢谢 :)


您可以使用 WMI 或 System.Diagnostics 命名空间。从那里您可以获取任何您想要的性能计数器(但是需要一秒钟(1-1.5秒)来初始化这些计数器 - 读取值是可以的,只是初始化很慢)

代码可以如下所示:

    using System.Diagnostics;

    public static Double Calculate(CounterSample oldSample, CounterSample newSample)
    {
        double difference = newSample.RawValue - oldSample.RawValue;
        double timeInterval = newSample.TimeStamp100nSec - oldSample.TimeStamp100nSec;
        if (timeInterval != 0) return 100*(1 - (difference/timeInterval));
        return 0;
    }

    static void Main()
    {
        var pc = new PerformanceCounter("Processor Information", "% Processor Time");
        var cat = new PerformanceCounterCategory("Processor Information");
        var instances = cat.GetInstanceNames();
        var cs = new Dictionary<string, CounterSample>();

        foreach (var s in instances)
        { 
            pc.InstanceName = s;
            cs.Add(s, pc.NextSample());
        }

        while (true)
        {
            foreach (var s in instances)
            {
                pc.InstanceName = s;
                Console.WriteLine("{0} - {1:f}", s, Calculate(cs[s], pc.NextSample()));
                cs[s] = pc.NextSample();
            }
            System.Threading.Thread.Sleep(500);
        }
    }

重要的是,你不能依赖本机 .net 计算 100nsInverse 性能计数器(对我来说只返回 0 或 100 ... bug?),但你必须自己计算它,为此你需要每个实例的最后一个 CounterSamples 的存档(实例代表一个核心或这些核心的总和)。

这些实例似乎有一个命名约定:

0,0 - 第一个CPU第一个核心 0,1 - 第一个 cpu 第二个核心 0,_Total - 第一个 cpu 的总负载 _Total - 所有cpu的总负载

(未经验证 - 在进一步调查完成之前不建议依赖它)...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中获取每个核心的 CPU 负载? 的相关文章

随机推荐

  • 正则表达式在最后一个冒号之后查找字符串

    以下是一些示例输入 lt 210 gt DW AT name indirect string offset 0x55 double
  • C#,使用 OpenXmlWriter 和 Open XML SDK 编写 XLSX

    在 C 中 以下程序编译并运行 但它不会在 Excel 输出文件中写入任何内容 我让它工作没有OpenXmlWriter但我开始内存不足 所以我必须切换到OpenXmlWriter根据这个http blogs msdn com b bria
  • Python 虚拟环境 (venv):使用和开发/测试环境中的共享库

    我是 python venv 的新手 很抱歉可能提出愚蠢的问题 我正在开发一个小型图书馆 我已经创建了开发虚拟环境 其中包含库使用所需的所有包 并将所有版本的需求冻结到requirements txt 我还想创建requirements t
  • 从异步 F# 在主线程上执行代码

    我正在 F 中实现以下 Swift 方法 func downloadCachedImage url URL if let cachedImage imageCache object forKey url absoluteString as
  • 从 URL 检索参数

    给定如下 URL 如何解析查询参数的值 例如 在这种情况下我想要的值some key some path some key some value 我在我的环境中使用 Django 有没有一种方法request可以帮助我的对象吗 我尝试使用s
  • 使用 JavaScript 将带有时区的日期字符串转换为本地时间的日期对象

    我的日期字符串的格式如下所示 yyyy MM ddTHH mm ss 0Z00 实施例1 2010 03 05T07 03 51 0800 实施例2 2010 07 01T20 23 00 0700 我需要使用这些日期字符串创建一个日期对象
  • 以编程方式为 UITableViewController 设置 UIActivityIndi​​catorView

    我有一个常规的UITableViewController and a UITableView作为它唯一的观点 我想要一个UIActivittyIndicatorView除了表视图之外 所以我需要一个像这样的视图结构 view UIView
  • 仅从我的应用程序访问私有 S3 内容

    我有一个在 AWS S3 中存储图像的应用程序 这就像一个个人资料图片上传案例 上传个人资料图片后 图像将存储在AWS S3中 并且S3链接将存储在数据库中 然后 应用程序将使用数据库中的该链接显示个人资料图片 目前 由于存储桶是私有的 因
  • 给定条件并行或顺序执行 foreach 循环

    我经常会得到几个嵌套的结果foreach循环 有时在编写通用函数 例如 对于包 时 没有明显可以并行化的级别 有什么方法可以实现下面的模型所描述的内容吗 foreach i 1 I if I lt J do else dopar forea
  • 即使在 onclick="return false;" 之后,IE 也会跟踪链接

    我正在编写 Rails 2 3 8 应用程序 并使用标准link to帮手 我有合理数量的链接 这些链接是使用 GET 以外的方法使用的 因此我传递了一个 method gt whatever选项link to 它会生成一个带有 oncli
  • 类型“e”不存在,通过 php codeigniter 中的 Postgresql 连接器进行 Redshift

    我通过 Postgresql 连接器使用 Redshift 在 php codeigniter 3 x php 版本 7 0 中查询时出现以下错误 模型如下 subQuery select max button history id as
  • 可以在 Inno Setup 脚本中使用环境变量吗?

    我需要找到一种方法来引用 Inno Setup 脚本文件 iss 中的环境变量 我发现了很多关于从 iss 修改环境的参考资料 但没有关于如何实际使用它的参考资料 这可能吗 当我尝试在 Files 部分中指定文件的源位置时 我遇到了同样的问
  • 在 Liquibase 中添加复合唯一约束

    我正在创建一个包含 3 列的链接表 id 产品 id 锦标赛 id 向 id 列添加 uniqueConstraint 很简单 但我想确保任何一对 product id tournament id 都是唯一的 Liquibase org 上
  • 手动验证 ASP.NET Identity 中的密码重置令牌

    我想手动验证 ASP NET Identity 2 0 中的密码重置令牌 我正在尝试创建我自己的版本UserManager ResetPasswordAsync string userId string token string newPa
  • 使用 Spring MVC 在表单中显示验证错误

    我已经搜索了这个论坛的几个教程和答案 试图解决我的问题 我想使用 spring MVC 在我的表单中显示我的 bean 的验证错误 无论我如何尝试 我都无法让它发挥作用 我没有使用重定向 我的绑定结果直接在模型类之后 等等 这是我到目前为止
  • 网络桌面 - 您觉得有趣吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 作为一名近几年转向 Web 开发的 win32 开发人员 我发现基于 extjs 的网络桌面非常有趣 酷莱特桌面 http examples c
  • jhipster liquibase 不更新数据库

    我正在尝试添加一个新实体 但不使用完整的热重载 因此我创建了一个 db changelog 002 xml 文件 其中包含要在文件的变更集中创建的新表 然后我运行了 mvn spring boot run 但我的数据库没有使用新表进行更新
  • 如何使用 MonkeyRunner 将 Extra 传递给 Android 意图?

    我正在尝试使用测试我的应用程序猴跑者 http developer android com guide developing tools monkeyrunner concepts html工具 我正在尝试为我的活动添加额外内容 pytho
  • Matlab指纹细节提取

    目前我对指纹验证和细节点提取很感兴趣 我在网上找到了以下代码 不知道是否有人可以解释一下 我查过质心 区域属性等 我对这些有一点了解 但下面的代码让我感到困惑 fun minutie L nlfilter K 3 3 fun Termina
  • 如何在 C# 中获取每个核心的 CPU 负载?

    如何在 C 中获取每个核心 四核 cpu 的 CPU 负载 谢谢 您可以使用 WMI 或 System Diagnostics 命名空间 从那里您可以获取任何您想要的性能计数器 但是需要一秒钟 1 1 5秒 来初始化这些计数器 读取值是可以