Maneira correta de usar o PerformanceCounter no .NET para medir o uso da CPU

Eu quero medir o desempenho da minha classe de negócios em um serviço da web. Como posso fazer isso através de codificação?

Eu quero saber quanto CPU minha classe de negócios consome para executar sua operação e como o desempenho varia se o serviço da Web obtiver várias chamadas de serviço simultâneas.

Eu não quero medir o desempenho do meu serviço da web; Eu só quero saber como está a minha classe executiva.

Meu pensamento:

Depois de ler alguns blogs, eu decido escrever um pedaço de código que irá criar umPerformanceCounter como mostrado abaixo. A partir desse código, posso criar vários threads em umfor loop. Cada thread vai ligar para minha turma. E no mesmofor loop, eu vou ligar para oNextValue() método na instância do contador.

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

Questões:

Esta abordagem é correta?Devo usar a categoria "Processo" ou categoria "Processador"?Como posso obter dados de desempenho para criar algum relatório a partir disso? por exemplo. Com 100 threads simultâneos, o uso da CPU é de 70%, com 200 threads até 90%, etc.Minha lógica de negócios termina muito rapidamente. E por outro lado,NextValue() método dá valor correto após um intervalo de um segundo, como mencionado emisto blog. Como posso lidar com isso?As vezes,NextValue() método dá valor acima de 100. Isso significa que o uso da CPU é superior a 100%? (Eu acho que o valor deste contador não deve ser interpretado como% de uso da CPU. Estou correto?)

Nota: Estou usando o Windows 7 premium e o processador Intel Core i5. Esta é a primeira vez que estou usando contadores de desempenho. Então algumas das perguntas podem ser bobas.

questionAnswers(1)

yourAnswerToTheQuestion