使用PerformanceCounter获取计算机性能
一 。
这里说的性能是只cpu 内存 磁盘 网络的相关使用情况。可以在任务管理器-》性能中查看这些数据,也可以在资源管理器中查看更详细的情况。
使用的是win8.1的系统,任务管理器的执行挡:C:\Windows\System32\taskmgr.exe .
资源监视器的执行档:C:\Windows\System32\resmon.exe
性能监视器的执行档:C:\Windows\System32\perfmon.exe
二。计数器
PerformanceCounter (String, String, String)
功能:
初始化 PerformanceCounter 类的新的只读实例,
并将其与本地计算机上指定的系统性能计数器或自定义性能计数器及类别实例关联
参数说明:
public PerformanceCounter (
string categoryName,
string counterName,
string instanceName
)
categoryName
想要关联的性能计数器类别名称。
counterName
性能计数器的名称。
instanceName
性能计数器类别的实例。
三。C#代码
//需要的名空间
using System.Diagnostics;
using System.Threading;
using System.Collections;
//获取磁盘写入速率
PerformanceCounter pc = new PerformanceCounter();
pc.CategoryName = "PhysicalDisk";
pc.CounterName = "Disk Write Bytes/sec";
pc.InstanceName = "0 C: E: F:";
pc.MachineName = ".";
pc.ReadOnly = true;
pc.NextValue();
System.Threading.Thread.Sleep(1000); //等1秒,让后系统获取下一个样本
pc.NextValue();
如上面的例子,只要填入三个参数值就可以获取相关的数据了。下面说下这三个参数怎么得到的
//获取性能计数器类别列表
public static void GetCategoryNameList()
{
Console.WriteLine("性能计数器类别列表 : ");
PerformanceCounterCategory[] myCat2;
myCat2 = PerformanceCounterCategory.GetCategories();
for (int i = 0; i < myCat2.Length; i++)
{
Console.WriteLine(myCat2[i].CategoryName.ToString());
}
}
我用的win8.1系统,运行几次这个列表的内容都不同。注意磁盘的种类有两个,LogicalDisk和PhysicalDisk
//获取性能计数器类别下的实例的名称 实例下的性能计数器的名称
public static void GetInstanceNameListANDCounterNameList(string CategoryName)
{
string[] instanceNames;
ArrayList counters = new ArrayList();
PerformanceCounterCategory mycat = new PerformanceCounterCategory(CategoryName);
try
{
instanceNames = mycat.GetInstanceNames();
if (instanceNames.Length == 0)
{
counters.AddRange(mycat.GetCounters());
}
else
{
for (int i = 0; i < instanceNames.Length; i++)
{
counters.AddRange(mycat.GetCounters(instanceNames[i]));
}
}
for (int i = 0; i < instanceNames.Length; i++)
{
Console.WriteLine(instanceNames[i]);//获取性能计数器类别下的实例
}
Console.WriteLine("******************************");
foreach (PerformanceCounter counter in counters)
{
Console.WriteLine(counter.CounterName);
}
}
catch (Exception)
{
Console.WriteLine("Unable to list the counters for this category");
}
}
比如GetInstanceNameListANDCounterNameList("PhysicalDisk");
得到的实例有两个_Total和0 C: E: F: //我的计算机没有D盘
两个实例下的计数器是一样的
每个计数器代表的意思:
Current Disk Queue Length //磁盘队列长度
% Disk Time //当前物理磁盘利用率
Avg. Disk Queue Length //等待进行磁盘访问的平均系统请求数量
% Disk Read Time
Avg. Disk Read Queue Length
% Disk Write Time
Avg. Disk Write Queue Length
Avg. Disk sec/Transfer //磁盘完成请求所用的时间
Avg. Disk sec/Read //从磁盘对数据进行一个读操作所需的平均时间(单位:秒)。
Avg. Disk sec/Write
Disk Transfers/sec //磁盘IOPS 。Disk Transfers/sec = Disk Reads/sec + Disk Writes/sec
Disk Reads/sec //在读取操作时从磁盘上传送的字节平均数
Disk Writes/sec
Disk Bytes/sec //读写期间的字节传输率
Disk Read Bytes/sec
Disk Write Bytes/sec
Avg. Disk Bytes/Transfer
Avg. Disk Bytes/Read
Avg. Disk Bytes/Write
% Idle Time
Split IO/sec
使用PerformanceCounter获取计算机性能相关推荐
- C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率
C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率: 先看界面: 建一个 Windows Form 桌面程序,代码如下: using System; using Sys ...
- PerformanceCounter获取的CPU使用率但总是0
原来代码是这样的: private void timer_speed_Tick(object sender, EventArgs e){Process[] process = Process.GetP ...
- C#使用PerformanceCounter获取CPU使用率时报错:无法加载计数器名称数据,因为从注册表读取的所以无效
解决方法:cmd(管理员身份打开),输入 "LODCTR /R" 等一会后系统提示"--恢复成功" 然后就OK了,程序也正常了
- 在WPF中获取程序的专用工作集内存 PerformanceCounter
使用 PerformanceCounter 获取程序的专用工作集内存并不难,但是就是得找一下属性, 通过 CategoryName 遍历 InsanceName 再通过它们遍历 CounterName ...
- [C++]-Windows下获取CPU、内存利用率
CPU利用率 内存利用率 在<Windows下使用PDH获取性能计数器(CPU.内存.网络流量等)>中介绍了通过性能计数器获取计算机性能信息,若只是获取CPU利用率及内存利用率,可以直接通 ...
- WPF 动态模拟CPU 使用率曲线图
在工作中经常会遇到需要将一组数据绘制成曲线图的情况,最简单的方法是将数据导入Excel,然后使用绘图功能手动生成曲线图.但是如果基础数据频繁更改,则手动创建图形可能会变得枯燥乏味.本篇将利用Dynam ...
- Performance Counter的使用
PerformanceCounter 基本介绍以及示例方法 一 PerformanceCounter 基本介绍 1 简单介绍 表示 Windows NT 性能计数器组件 命名空间:System.Dia ...
- PerformanceCounter的使用详解--记一次获取磁盘活动时间的过程
项目中需要获取磁盘的使用情况,判断磁盘是否处于忙碌状态.由于之前有了获取cpu使用率的经验,所以这次依然打算使用PerformanceCounter来获取磁盘状态的. 一种通过代码(cmd命令行)准确 ...
- C#-获取磁盘,cpu,内存信息
获取磁盘信息zongdaxiao = GetHardDiskSpace("C") * 1.0 / 1024; user = GetHardDiskFreeSpace("C ...
最新文章
- webpack搭建自己的项目
- 入门SAP PP的学习流程
- Python实现Newton和lagrange插值
- java for foreach 效率_Java中LinkedList的fori和foreach效率比较
- centos7 docker删除端口映射_centos7安装docker,结合docker安装mysql,学习简单使用
- 以色辨位的Farmer(洛谷P5832题题解,Java语言描述)
- 计算机视觉基础-图像处理(边缘检测)cpp+python
- Linux查询用户创建的后台程序
- linux打开anaconda的jupyter_Linux Centos7安装anaconda3和jupyter
- netsuite中Mutiple Select的赋值问题的解决
- Linux时间不准确的问题![转]
- 软件开发:到底谁还在传言软件巨头濒临死亡?
- matlab2c使用c++实现matlab函数系列教程-exp函数
- 用C语言写一个查单词的小demo
- 【实习之T100开发】帆软报表笔记
- ie浏览器升级的正确姿势
- 思岚科技A1,A2雷达驱动安装
- 取号机排队取号服务算法(数据结构 队列(Queue))
- luat string常用函数详解
- python猜拳游戏电脑随机循环版
热门文章
- (叁)规划方向技能:地形地貌分析(Painted Relief Map)
- 激发创造力!如何轻松录制PPT和人像视频
- 关于GPU利用率低值得考虑的几个点
- java计算机毕业设计校园周边美食探索及分享平台源码+数据库+系统+lw文档+mybatis+运行部署
- ConcurrentLinkedQueue非阻塞无界链表队列
- GitHub设置头像
- 修改华为荣耀U8860的官方Rom 之 状态栏透明和下拉通知栏可修改
- 基于优酷业务特色的跨平台技术 | GaiaX 开源解读
- FLAT:Chinese NER Using Flat-Lattice Transformer
- ios识别人脸自动拍照_面部识别是否会自动拍照上传?