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

时间:2014-03-20 05:42:34

标签: c# performance performancecounter

在我的应用程序中,我正在收集有关系统性能的数据,我需要找到

  • %可用空间
  • %Disk Time
  • %磁盘读取时间
  • %磁盘写入时间
  • %空闲时间
  • %Usage
  • %Usage Peak

使用以下功能;

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
  • %Usage Peak = 48386 for \ ?? \ C:\ pagefile.sys

实际上该值应为百分比形式[,即在0到100%的范围内]

有没有办法获得所有这些的确切值,除了[我已计算的%自由空间]。

是否有人知道如何计算所有标题的其余部分。

1 个答案:

答案 0 :(得分:2)

使用以下

sw.WriteLine("Value : " + Convert.ToString(Math.Round(cntr.NextValue(),2)) + "%");

更多信息:

Why the cpu performance counter kept reporting 0% cpu usage?

一切顺利!

别忘了投票:-D