Как я могу использовать счетчики производительности в C # для мониторинга 4 процессов с одинаковым именем? - PullRequest
1 голос
/ 24 апреля 2010

Я пытаюсь создать счетчик производительности, который может отслеживать время выполнения приложений, одним из которых является Google Chrome. Тем не менее, я замечаю, что время, которое я получаю для Chrome, неестественно мало - я заглядываю в диспетчер задач, чтобы понять, что у меня в Chrome несколько процессов, работающих под одним и тем же именем, но у каждого процесса свой размер рабочего набора и, таким образом (как я полагаю), разные времена процессора. Я пытался сделать это:

// get all processes running under the same name, and make a performance counter
// for each one.
Process[] toImport = Process.GetProcessesByName("chrome");

        instances = new PerformanceCounter[toImport.Length];

        for (int i = 0; i < instances.Length; i++)
        {

           PerformanceCounter toPopulate = new PerformanceCounter
                ("Process", "% Processor Time",
                    toImport[i].ProcessName,
                   true);

            //Console.WriteLine(toImport[i].ProcessName + "#" + i);

            instances[i] = toPopulate;
        }

Но, похоже, это совсем не работает - я просто отслеживаю один и тот же процесс несколько раз. Может кто-нибудь сказать мне, как контролировать отдельные процессы с одинаковыми именами?

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Важно убедиться, что вы не используете '#' в имени экземпляра. Стоит прочитать это http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.instancename.aspx и обратить особое внимание на сопоставление символов - это всего лишь несколько часов.

1 голос
/ 24 апреля 2010

Откройте perfmon и посмотрите. Вам нужно использовать такие имена, как chrome#2 или, возможно, chrome_2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...