如何在 .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;}}
可以看到程序每2s输出一次,观察到 output 和 任务管理器 中的CPU利用率基本是一致的。
译文链接:https://medium.com/@jackwild/getting-cpu-usage-in-net-core-7ef825831b8b
如何在 .NET Core 中获取 CPU 使用率相关推荐
- 聊一聊如何在.NET Core中使用Nacos 2.0
前言 随着 nacos 2.0.0 正式发布,老黄这边也跟着发布了 1.0.2 版本的 nacos-sdk-csharp. 下面简单聊一下相关的使用. 纯 SDK 的使用 首先要安装 nuget 包 ...
- 聊聊 top 命令中的 CPU 使用率
之前写过cpu占用率的文章 CPU占用率是什么? ==== 平常我们使用 top 命令来查看系统的性能情况,在 top 命令中可以看到很多不同类型的 CPU 使用率,如下图红框中标出部分: 下面,我们 ...
- 【Linux学习笔记】Linux获取CPU使用率,内存使用率和磁盘使用率
实现目标: 在Linux上使用shell脚本回显系统当前的CPU使用率.内存使用率和磁盘空间使用率 1.CPU使用率: 使用top命令能够实时显示系统中各个进程的资源占用状况,所以这边可以使用top命 ...
- 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 ...
- cpu使用率 htop显示_用top、vmstat、Htop、sar命令在Linux系统中检查CPU使用率/利用率...
本文介绍使用top.vmstat.Htop.sar命令在Linux操作系统中检查CPU使用率/利用率,其实也可以在图形界面中通过工具查看的,可参考使用Stress Terminal UI在Linux终 ...
- ios android cpu占用率,iPhone-iOS-从应用程序获取CPU使用率
iPhone-iOS-从应用程序获取CPU使用率 有谁知道如何获取应用程序的CPU使用率? 绝对有可能,因为应用商店中有一些可以显示它的应用程序(活动监视器触摸). 3个解决方案 74 votes 更 ...
- 如何在.NET Core中为gRPC服务设计消息文件(Proto)
如何在.NET Core中为gRPC服务设计消息 使用协议缓冲区规范定义gRPC服务非常容易,但从需求转换为.NET Core,然后管理服务的演变时,需要注意几件事. 创建gRPC服务的核心是.pro ...
- java获取网络带宽_Linux Java 获取CPU使用率,内存使用率,磁盘IO,网络带宽使用率等等...
/** * 获取带宽上传下载速度 * @return */ public String getNetWorkSpeed() { boolean result = false; String detai ...
- 如何在Node.js中获取本机本地IP地址
最近在做Cloud related的项目时,遇到一个问题,就是如何在Node.js中获取本机的IP地址.Node.js提供的API中,只能获取本机的hostname. os = require('os ...
最新文章
- VC++读取txt文件指针的变化
- Java int[] integer[] List之间的转换
- 回车ajax显示,ajax返回值中有回车换行、空格的解决方法分享
- 后端开发除了编码还要做什么_每个开发人员都应掌握的基本技能(除了编码)
- for相关 java_用java编写一个程序,求2到100之间的偶数和(使用for循环)
- 仿qq邮箱源码程序_小伙子利用C++实现邮件程序发送和接收
- 解锁用户及数据库表,锁死进程
- bug-AttributeError: ‘NoneType‘ object has no attribute ‘append‘
- liunx中常用命令 -大数据
- Xshell5:Xshell下载和安装教程
- 蜂巢(已更名为网易云计算基础服务)计费系统架构升级之路
- 非计算机专业,如何学习计算机视觉
- swift和swiftui_在swiftui中查看布局和演示
- maya mel uf8_maya中mel文件如何使用?
- c++ bind函数
- 高职高专计算机b级,高职高专英语B级考试真题.docx
- 玩转低代码-CSS介绍
- 如何拥有属于自己的公司
- 计算机公式大全日期与时间函数,09年计算机等级辅导:日期时间函数
- 苹果电脑更改sd卡只读_sd卡反复变成只读解决办法