这篇文章我们分享一种如何在 .NETCore 中获取 CPU使用率的方法, 它所报告的这个值和 任务管理器 中报告的 CPU 使用值 差不多是一致的。

.NET Framework 中,很多人会用 PerformanceCounter 类做这件事情,参考如下代码:

public class Program{public static void Main(string[] args){while (true){var cpuUsage = GetCpuUsageForProcess();Console.WriteLine(cpuUsage);}}private static int GetCpuUsageForProcess(){var currentProcessName = Process.GetCurrentProcess().ProcessName;var cpuCounter = new PerformanceCounter("Process", "% Processor Time", currentProcessName);cpuCounter.NextValue();return (int)cpuCounter.NextValue();}}

PerformanceCounter 在 .NETCore 中是没有的,所以只能采用其他方式了,其实在 System.Diagnostics.Process 类中有一个 TotalProcessorTime 属性,它可以准实时的统计当前进程所消耗的CPU处理器时间,参考如下代码:

class Program{public static async Task Main(string[] args){var task = Task.Run(() => ConsumeCPU(50));while (true){await Task.Delay(2000);var cpuUsage = await GetCpuUsageForProcess();Console.WriteLine(cpuUsage);}}public static void ConsumeCPU(int percentage){Stopwatch watch = new Stopwatch();watch.Start();while (true){if (watch.ElapsedMilliseconds > percentage){Thread.Sleep(100 - percentage);watch.Reset();watch.Start();}}}private static async Task<double> GetCpuUsageForProcess(){var startTime = DateTime.UtcNow;var startCpuUsage = Process.GetCurrentProcess().TotalProcessorTime;await Task.Delay(500);var endTime = DateTime.UtcNow;var endCpuUsage = Process.GetCurrentProcess().TotalProcessorTime;var cpuUsedMs = (endCpuUsage - startCpuUsage).TotalMilliseconds;var totalMsPassed = (endTime - startTime).TotalMilliseconds;var cpuUsageTotal = cpuUsedMs / (Environment.ProcessorCount * totalMsPassed);return cpuUsageTotal * 100;}}

可以看到程序每2s输出一次,观察到 output 和 任务管理器 中的CPU利用率基本是一致的。

译文链接:https://medium.com/@jackwild/getting-cpu-usage-in-net-core-7ef825831b8b

如何在 .NET Core 中获取 CPU 使用率相关推荐

  1. 聊一聊如何在.NET Core中使用Nacos 2.0

    前言 随着 nacos 2.0.0 正式发布,老黄这边也跟着发布了 1.0.2 版本的 nacos-sdk-csharp. 下面简单聊一下相关的使用. 纯 SDK 的使用 首先要安装 nuget 包 ...

  2. 聊聊 top 命令中的 CPU 使用率

    之前写过cpu占用率的文章 CPU占用率是什么? ==== 平常我们使用 top 命令来查看系统的性能情况,在 top 命令中可以看到很多不同类型的 CPU 使用率,如下图红框中标出部分: 下面,我们 ...

  3. 【Linux学习笔记】Linux获取CPU使用率,内存使用率和磁盘使用率

    实现目标: 在Linux上使用shell脚本回显系统当前的CPU使用率.内存使用率和磁盘空间使用率 1.CPU使用率: 使用top命令能够实时显示系统中各个进程的资源占用状况,所以这边可以使用top命 ...

  4. Android多个imei如何获取,如何在Android 10中获取IMEI号,这是获取在Android 10及以下Android 10中获取IMEI号的代码...

    如何在android 10中获取imei编号,这是获取在android 10及以下android 10中获取imei编号的代码. if (android.os.Build.VERSION.SDK_IN ...

  5. cpu使用率 htop显示_用top、vmstat、Htop、sar命令在Linux系统中检查CPU使用率/利用率...

    本文介绍使用top.vmstat.Htop.sar命令在Linux操作系统中检查CPU使用率/利用率,其实也可以在图形界面中通过工具查看的,可参考使用Stress Terminal UI在Linux终 ...

  6. ios android cpu占用率,iPhone-iOS-从应用程序获取CPU使用率

    iPhone-iOS-从应用程序获取CPU使用率 有谁知道如何获取应用程序的CPU使用率? 绝对有可能,因为应用商店中有一些可以显示它的应用程序(活动监视器触摸). 3个解决方案 74 votes 更 ...

  7. 如何在.NET Core中为gRPC服务设计消息文件(Proto)

    如何在.NET Core中为gRPC服务设计消息 使用协议缓冲区规范定义gRPC服务非常容易,但从需求转换为.NET Core,然后管理服务的演变时,需要注意几件事. 创建gRPC服务的核心是.pro ...

  8. java获取网络带宽_Linux Java 获取CPU使用率,内存使用率,磁盘IO,网络带宽使用率等等...

    /** * 获取带宽上传下载速度 * @return */ public String getNetWorkSpeed() { boolean result = false; String detai ...

  9. 如何在Node.js中获取本机本地IP地址

    最近在做Cloud related的项目时,遇到一个问题,就是如何在Node.js中获取本机的IP地址.Node.js提供的API中,只能获取本机的hostname. os = require('os ...

最新文章

  1. VC++读取txt文件指针的变化
  2. Java int[] integer[] List之间的转换
  3. 回车ajax显示,ajax返回值中有回车换行、空格的解决方法分享
  4. 后端开发除了编码还要做什么_每个开发人员都应掌握的基本技能(除了编码)
  5. for相关 java_用java编写一个程序,求2到100之间的偶数和(使用for循环)
  6. 仿qq邮箱源码程序_小伙子利用C++实现邮件程序发送和接收
  7. 解锁用户及数据库表,锁死进程
  8. bug-AttributeError: ‘NoneType‘ object has no attribute ‘append‘
  9. liunx中常用命令 -大数据
  10. Xshell5:Xshell下载和安装教程
  11. 蜂巢(已更名为网易云计算基础服务)计费系统架构升级之路
  12. 非计算机专业,如何学习计算机视觉
  13. swift和swiftui_在swiftui中查看布局和演示
  14. maya mel uf8_maya中mel文件如何使用?
  15. c++ bind函数
  16. 高职高专计算机b级,高职高专英语B级考试真题.docx
  17. 玩转低代码-CSS介绍
  18. 如何拥有属于自己的公司
  19. 计算机公式大全日期与时间函数,09年计算机等级辅导:日期时间函数
  20. 苹果电脑更改sd卡只读_sd卡反复变成只读解决办法

热门文章

  1. lecture6-mini批量梯度训练及三个加速的方法
  2. PHP 长文章分页函数
  3. 如何快速编写并运行Tiny模板语言?
  4. 硬盘检测工具Smartmontools安装、部署、使用
  5. struts2中jsp页面上验证码的生成
  6. ^_^家园游记^_^
  7. 实验——Windows常用网络测试命令
  8. Smarty 显示大括号 | 在Smarty中计算数组元素的长度 | Smarty字符串拼接
  9. PAT-乙级-1042 字符统计
  10. 关于vue执行打包后,如何在本地浏览问题