Пробыв некоторое время на чтение через пару различные темы, которые казались довольно сложным, я придумал это. Мне это нужно для 8-ядерной машины, где я хотел бы контролировать SQL-сервер. В приведенном ниже коде я перешел в «sqlservr» как appName.
private static void RunTest(string appName)
{
bool done = false;
PerformanceCounter total_cpu = new PerformanceCounter("Process", "% Processor Time", "_Total");
PerformanceCounter process_cpu = new PerformanceCounter("Process", "% Processor Time", appName);
while (!done)
{
float t = total_cpu.NextValue();
float p = process_cpu.NextValue();
Console.WriteLine(String.Format("_Total = {0} App = {1} {2}%\n", t, p, p/t * 100));
System.Threading.Thread.Sleep(1000);
}
}
Кажется, что правильно измеряет% процессора, используемого SQL на моем 8-ядерном сервере.
http://stackoverflow.com/questions/4679962/what-is-the-correct-performance-counter-to-get-cpu-and-memory-usage-of-a-process/4680030 # 4680030 – SwDevMan81