如何在 .NET Core 中获取 CPU 使用率

这篇文章我们分享一种如何在 .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;}}
c4bdbd40139529ad9d596420739406cf.png

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uml 类图聚合与组合

聚合 聚合是关联关系的一种特例&#xff0c;他体现的是整体与部分、拥有的关系&#xff0c;即has-a的关系&#xff0c;此时整体与部分之间是可分离的&#xff0c;他们可以具有各自的生命周期&#xff0c;部分可以属于多个整体对象&#xff0c;也可以为多个整体对象共享&#xf…

Android之ViewPager使用(用美女做的背景,给你疲惫的眼睛视觉冲击)

ViewPager的使用 我们先爆照,来点视觉冲击,其它的ViewPager弱爆了 照片看完了,接来下我们就来实现,just do it 第一步 你的项目需要有android-support-v4.jar的包,你懂的,有了才会支持ViewPager 第二步 看下项目的结构图片

深入探讨用位掩码代替分支(8):SSE指令集速度测试

在上一篇测试了MMX指令集&#xff0c;这次我们来测试SSE指令集。说的更精确一点&#xff0c;是测试SSE2指令集。  本篇致力于解决以下问题——1.SSE/SSE2指令集是什么&#xff1f;2.如何阅读Intel/AMD的手册&#xff1f;3.如何运用SSE指令集&#xff1f;如何将MMX代码升级为S…

mysql字段简索引_MySQL优化看这一篇就够了

本文概要概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行&#xff0c;数据库的中的数据会越来越多&#xff0c;处理时间会相应变慢数据是存放在磁盘上的&#xff0c;读写速度无法和内存相比如何优化设计数据库时&#xff1a;数据库表、字段的…

.NET 6 Talk Party 2|.NET Core 与行业

关注我们微软 Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 .NET Core, C#, Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链, IoT 等技术&#xff0c;将每周三到周六&#xff0c;组织 3~5 场线上分享活动。欢迎跟着…

施一公:中国还缺乏真正的世界顶尖大学,研究生该听听这些建议

全世界只有3.14 % 的人关注了爆炸吧知识“中国的科技发展很快&#xff0c;变得很大&#xff0c;但还不够强&#xff1b;中国的人才众多&#xff0c;变得很大&#xff0c;但还不够强。中国是一个高等教育大国&#xff0c;但从权威的世界大学排名来看&#xff0c;中国缺乏真正的世…

Android之Fragment 真正的完全解析(上)

转载出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现&#xff0c;曾经有段时间&#xff0c;感觉大家谈什么都能跟Fragment谈上关系&#xff0c;做什么都要问下Fragment能实现不~~~哈哈&#xff0c;是不是有点过~~~ 本篇博客力求…

第零讲.1 tapestry项目创建与运行

2019独角兽企业重金招聘Python工程师标准>>> 1、在eclipse工程目录下创建项目&#xff1a; 第一次运行eclipse的时候会弹出选择工程项目存放地点&#xff0c;如我的存放路径D:\workspace。我们就把tapestry创建的项目放到这个目录方便统一管理。 打开系统的命令提示…

阿里云-数据盘挂载

2019独角兽企业重金招聘Python工程师标准>>> 硬盘分区及挂载操作步骤&#xff1a; 1. 查看未挂载的硬盘&#xff08;名称为/dev/xvdb&#xff09; # fdisk -l Disk /dev/xvdb doesnt contain a valid partition table 2. 创建分区 # fdisk /dev/xvdb ... 输入n Comm…

composer 查看php 版本_最常用的PHP版本:PHP 7.3取代7.2

php中文网最新课程每日17点准时技术干货分享自2014年以来&#xff0c;Private Packagist的联合创始人Jordi Boggiano一直在撰写半年度报告&#xff0c;介绍各种PHP版本的使用情况。他从packagist.io上的Composer安装中获取数据库。从2019年5月开始&#xff0c;PHP 7.3已在2019年…

钱少也就算了,为啥我们还越来越忙?

全世界只有3.14 % 的人关注了爆炸吧知识你是否时常感觉自己的生活总是不富裕&#xff0c;但工作却越来越忙&#xff1f;那是因为我们想得到的东西太多&#xff0c;但能够燃烧的生命却太少。那些对未来的焦虑、恐惧&#xff0c;说白了&#xff0c;就是想的太多。随着经历和阅历的…

Hello Blazor:(14)CSS隔离

前言上次我们说到&#xff0c;FindRazorSourceFile使用有一定限制.查看它的源码&#xff0c;发现它仅查找以b-开头属性名的HTML元素&#xff1a;function getScope(element: Element): string | null {return element.getAttributeNames().filter(name > name.startsWith(b-…

CSS- 横向和纵向时间轴

时间轴在展示公司发展信息&#xff0c;服务流程中用的比较多&#xff0c;常见的注册登录有的是通过引导&#xff0c;一步一步的来完成&#xff0c;上面会通过时间轴告诉用户当前在哪一步&#xff0c;公司在关于我们或者发展流程的时候也特别喜欢用时间轴来展示&#xff0c;简单…

互联网巨头基于全球产业链打造ARM CPU

日前&#xff0c;“四十大盗”发布服务器CPU屠龙710。就“四十大盗”公司公布的数据来看&#xff0c;屠龙710是一款非常优秀的ARM芯片&#xff0c;在SPECInt2017基础测试中屠龙710跑分达到440分&#xff0c;超过行业标杆20%。不过&#xff0c;和以前FT、HW的ARM服务器CPU类似&a…

modbus 台达a2_驱控智造未来 台达重磅发布多款工业自动化新品

呼应智能制造发展需求&#xff0c;8月22日&#xff0c;“驱控智造未来-——2019台达工业自动化新品发布会”在北京举行&#xff0c;台达推出PC-Based运动控制器AX864E系列、伺服驱动系统ASDA-B3系列、精巧迷你型矢量控制变频器ME300系列、高功能通用型矢量控制变频器C2000 Plus…

当充气娃娃过于逼真......

1 朋友一生一起走....▼2 总裁爹是被吓到了吗&#xff1f;▼3 我宣布&#xff1a;本届舞林大会&#xff0c;冠军已出&#xff01;▼4 哥哥&#xff0c;我来了&#xff01;▼5 为了防疫&#xff0c;泰国的小朋友们很不容易▼6 这位爸爸真的是非常巧妙了&#xff01;▼7 生…

(转)Android基础类之BaseAdapter

BaseAdapter就Android应用程序中经常用到的基础数据适配器&#xff0c;它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件&#xff0c;它是继承自接口类Adapter&#xff0c;1、Adapter类简介1)、Adapter相关类结构如下图所示&#xff1a;自定义…

手把手教你学Dapr - 4. 服务调用

介绍通过使用服务调用&#xff0c;您的应用程序可以使用标准的gRPC或HTTP协议与其他应用程序可靠、安全地通信。为什么不直接用HttpClientFactory呢先问几个问题&#xff1a;如何发现和调用不同服务的方法如何安全地调用其他服务&#xff0c;并对方法应用访问控制如何处理重试和…

高速的二舍八入三七作五_有没有发现,高速收费都是5的倍数,这是为什么?怎么判断的?...

要想富&#xff0c;先修路。这是劳动人民致富的第一要素。从最早的泥巴路到现在的高速公路&#xff0c;人民生活有了翻天覆地的变化。随后路上汽车的数量也就越来越多了&#xff0c;堵车便成为很常见的现象&#xff0c;所以就有了高架桥、立交桥的诞生&#xff0c;它们的出现很…

清华大学再出神人,汽车被盗,用“贪心算法”瞬间找到偷车贼

全世界只有3.14 % 的人关注了爆炸吧知识惹谁都不要惹会算法的人今天要讲的故事的主人公&#xff0c;是来自圣母大学计算机系的副教授史戈宇。就在之前&#xff0c;他还经历了一场惊心动魄的劫车事件。度假旅游遇劫匪在某一个周末&#xff0c;史教授计划着开车带一家人去百慕大度…