Правильный способ использования PerformanceCounter в .NET для измерения загрузки процессора

Я хочу измерить производительность моего бизнес-класса в веб-сервисе. Как я могу сделать это с помощью кодирования?

Я хочу знать, сколько ЦП использует мой бизнес-класс для выполнения своей работы и как меняется производительность, если веб-сервис получает несколько одновременных вызовов сервиса.

Я не хочу измерять производительность моего веб-сервиса; Я просто хочу знать, как работает мой бизнес-класс.

My thought:

Прочитав некоторые блоги, я решил написать фрагмент кода, который создастPerformanceCounter как показано ниже. Из этого кода я могу создать несколько потоков в одномfor петля. Каждый поток назовет мой класс. И в том жеfor цикл, я буду называтьNextValue() метод на встречном экземпляре.

System.Diagnostics.PerformanceCounter CpuCounter = new System.Diagnostics.PerformanceCounter();
            CpuCounter.CategoryName = "Process";
            CpuCounter.CounterName = "% Processor Time";
            CpuCounter.InstanceName = Process.GetCurrentProcess().ProcessName;

Questions:

Is this approach correct? Shall I use "Process" category or "Processor" category? How can I get performance data to create some report out of it? e.g. With 100 simultaneous threads, CPU usage is 70%, with 200 threads it goes upto 90% etc. My business logic ends very quickly. And on the other hand, NextValue() method gives correct value after an interval of one second as mentioned in this blog. How can I handle this? Sometimes, NextValue() method gives value above 100. Does this mean CPU usage is more than 100%? (I think, value of this counter should not be interpreted as % usage of the CPU. Am I correct?)

Примечание: я использую Windows 7 Premium и процессор Intel Core i5. Это первый раз, когда я использую счетчики производительности. Так что некоторые вопросы могут быть глупыми.

Ответы на вопрос(1)

Ваш ответ на вопрос