Подтвердить что ты не робот

Поврежденные счетчики производительности?

Счетчики преформации - ЗЛО. не используйте их.

if(PerformanceCounterCategory.Exists("ILoveYou")  ) // is true
{
    PerformanceCounterCategory.Delete("ILoveYou"); 
    //throws exception The **configuration registry** key is invalid
}

at System.Diagnostics.PerformanceCounterLib.RegisterFiles(String arg0, Boolean unregister)
at System.Diagnostics.PerformanceCounterLib.UnregisterCategory(String categoryName)
at System.Diagnostics.PerformanceCounterCategory.Delete(String categoryName)
at WindowsFormsApplication1.Program.SetupCategory()

все, что я нашел, это: http://blogs.msdn.com/b/oanapl/archive/2009/04/24/fix-corrupted-performance-counters.aspx (Использование LODCTR/R)

и это не помогает. так как я понятия не имею, о каком файле они говорят. any1 получил какие-то другие идеи?

PS Я использую Windows XP SP3, возможно, это проблема? Я понимаю, что он должен полностью поддерживать счетчики производительности, если я не отменил файл страницы.

, чтобы яснить мои проблемы, что им не удалось УДАЛИТЬ мои счетчики.

4b9b3361

Ответ 1

Моя компания сталкивается с проблемами, когда счетчики производительности регулярно коррумпируются. Если это проблема с повреждением фактических счетчиков, вы можете проверить поврежденные счетчики производительности на:   

  •   
  • Переход к start | run | perfmon  
  • Нажмите "ОК"   
  • Нажмите кнопку добавления на панели инструментов на правой панели (кнопка "+" )  
  • Убедитесь, что выпадающее меню объекта форматирования содержит элементы, а не только числа  
Если счетчики являются номерами или пустым:       Найдите и переименуйте эти 3 файла в %windir%\system32 :   
  • Perfc009.dat      
  • Perfh009.dat      
  • Perfi009.dat  
   Вставьте установочный компакт-диск Windows XP   Перейдите на свой CD-привод и в папку I386 (т.е. D:\I386)   Найдите те же самые файлы здесь   Скопируйте и вставьте их с компакт-диска обратно в System32   Перезагрузите компьютер.  

Это лучшее решение, которое мы нашли для проблемы.

Ответ 2

Если у вас есть аналогичная машина, вы можете запустить lodctr/S:mycounters.ini, чтобы экспортировать все счетчики в "mycounters.ini", а затем импортировать их на сломанной машине с помощью lodctr/R:mycounters.ini. Имейте в виду, однако, я использовал эту процедуру только на двух машинах, которые, как я знал, были почти идентичны с точки зрения перманентных счетчиков. Я не знаю, будут ли проблемы с машинами, которые не совпадают.

Ответ 3

Для меня

достаточно было создать все счетчики производительности с помощью

lodctr /R

из командной строки с правами администратора (согласно this, но пропуская ручное восстановление базовых счетчиков производительности )

При проверке списка счетчиков производительности в реестре в

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009

оказалось, что содержимое этого стартового набора с большим количеством пробелов. Был список счетчиков производительности с высокими индексами счетчиков в самом конце этого ключа. Вызвав вышеприведенную команду, ключ правильно также содержал базовые счетчики производительности (и больше не содержал ведущего пробела).

Ответ 4

Счетчики производительности благоприятствуют скорости использования и правильности. Счетчики производительности в XP и более поздних версиях Windows могут быть легко сломаны. Это, например, очень плохая практика создания новой категории счетчиков производительности при запуске вашего приложения и ее удаления при завершении работы. Постоянные изменения в категориях счетчиков производительности - это надежный прием получения поврежденных счетчиков производительности.

Я бы создал категории только тогда, когда их еще нет, и оставим их там, пока ваше приложение не будет удалено. В каких случаях вы хотите удалить категорию счетчиков производительности? Основной ответ, который я могу вам дать, - не удалять категории счетчиков производительности, если вам не нужно.

Хорошая ссылка, как воссоздать счетчики производительности через lodctr или EXCTRLST, из RedGate. Вы можете скачать здесь.

Edit1

Сначала вам нужно найти инструмент, который исправляет вашу проблему. Exctrlst дает вам интерфейс для включения коррумпированных счетчиков производительности.

Если это сработает, вы можете проверить с помощью procmon, какие ключи реестра записываются во время операции восстановления, и использовать это в качестве входных данных для вашей функции автозапуска.