磁盘读/写时间的性能计数器

3
在我的应用程序中,我正在收集有关系统性能的数据,需要查找以下内容:
  • % 可用空间
  • % 磁盘时间
  • % 磁盘读取时间
  • % 磁盘写入时间
  • % 闲置时间
  • % 使用率
  • % 使用率峰值
使用以下函数:
private void CollectnPopulatePerfCounters()
    {
        try
        {
            foreach (var pc in System.Diagnostics.PerformanceCounterCategory.GetCategories())
            {
                if (pc.CategoryName == "LogicalDisk" || pc.CategoryName == "Paging File" || pc.CategoryName == "ProcessorPerformance")
                {
                    try
                    {
                        foreach (var insta in pc.GetInstanceNames())
                        {
                            try
                            {
                                foreach (PerformanceCounter cntr in pc.GetCounters(insta))
                                {
                                    using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\amit.txt", true))
                                    {
                                        sw.WriteLine("--------------------------------------------------------------------");
                                        sw.WriteLine("Category Name : " + pc.CategoryName);
                                        sw.WriteLine("Counter Name : " + cntr.CounterName);
                                        sw.WriteLine("Explain Text : " + cntr.CounterHelp);
                                        sw.WriteLine("Instance Name: " + cntr.InstanceName);
                                        sw.WriteLine("Value : " + Convert.ToString(cntr.RawValue));  //TODO:
                                        sw.WriteLine("Counter Type : " + cntr.CounterType);
                                        sw.WriteLine("--------------------------------------------------------------------");
                                    }
                                }
                            }
                            catch (Exception) { }
                        }
                    }
                    catch (Exception) { }
                }
            }
        }
        catch (Exception) { }
    }

当代码执行时,数据被生成。在观察时,我发现上述列表(即% 空闲空间、% 磁盘时间等)中的值不正确。

在我的计算机上,

  • C 盘的 % 磁盘读取时间 = 44553438000
  • \??\C:\pagefile.sys 的 % 使用峰值 = 48386

实际上,这些值应该以百分比形式表示[即在0到100%的范围内]。

除了[% 空闲空间,我已经计算出来],是否有任何方法可以获取所有这些项目的精确值?

或者

有人知道如何计算其他所有表头吗?

1个回答

2

使用(System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\New1.txt", true)) { sw.WriteLine("% 磁盘时间"); var cpuload = new PerformanceCounter("LogicalDisk", "% 磁盘时间", "C:"); for (int i = 0; i < 20; i++) { Thread.Sleep(500); sw.WriteLine(cpuload.NextValue() + "%"); } } - AMIT SHELKE
如果您运行上述代码,您将得到不同的值。为什么会这样?请评论。 - AMIT SHELKE
答案在 MSDN 文档中。http://msdn.microsoft.com/zh-cn/library/system.diagnostics.performancecounter(v=vs.110).aspx - Sam
RawValue - 获取或设置此计数器的原始值,即未计算的值。 NextValue() - 获取计数器样本并返回其计算值。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接