поврежденные счетчики производительности?
счетчики Преформации-это зло. не используйте их.
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 может ли это быть проблемой? я понимаю, что он должен полностью поддерживать счетчики производительности если я не отменю файл страницы.
чтобы прояснить мою проблему, я не могу удалить мои счетчики.
4 ответов
моя компания сталкивается с проблемами, когда счетчики производительности регулярно повреждаются. Если проблема заключается в повреждении фактических счетчиков, можно проверить наличие поврежденных счетчиков производительности с помощью:
- собирается
start | run | perfmon
- нажмите OK
- нажать на кнопку "Добавить" на панели инструментов в правой панели (кнопка знак"+")
- убедитесь, что выпадающее меню объект proformance содержит элементы, а не только числа
%windir%\system32
:
-
Perfc009.dat
-
Perfh009.dat
-
Perfi009.dat
D:\I386
)это лучшее решение для данного вопроса.
Если у вас есть аналогичная машина, вы можете запустить lodctr / S:mycounters.ini для экспорта всех счетчиков в " mycounters.ini', а затем импортировать их на сломанной машине с lodctr / R:mycounters.ini. Имейте в виду, что я использовал эту процедуру только на двух машинах, которые, как я знал, были почти идентичны с точки зрения счетчиков perf. Я не знаю, будут ли проблемы с машинами, которые не совпадают.
для меня
было достаточно воссоздать все счетчики производительности с помощью
lodctr /R
из командной строки с правами администратора (по данным этой, но пропуская ручную рекреацию базовых счетчиков производительности)
при проверке списка счетчиков производительности в реестре в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib9
оказалось, что содержимое этого ключа startet с много пробелов. Там был список счетчиков производительности с высокими индексами счетчиков в самом конце этого ключа. После вызова команды выше ключ правильно содержал базовые счетчики производительности (и больше не содержал ведущие пробелы).
счетчики производительности предпочитают скорость удобству использования и правильности. Счетчики производительности в XP и более поздних версиях Windows могут быть легко сломаны. Например, очень плохая практика-создать новую категорию счетчиков производительности при запуске приложения и удалить ее при завершении работы. Постоянное изменение категорий счетчиков производительности-это верный способ получения поврежденных счетчиков производительности.
Я хотел создать категории только тогда, когда он еще не существует и оставить его там, пока ваше приложение будет удалено. При каких circumtances вы действительно хотите удалить категорию счетчика производительности? Основной ответ, который я могу вам дать, - не удалять категории счетчиков производительности, если вам это не нужно.
хорошая ссылка как воссоздать счетчики производительности через lodctr или EXCTRLST от РГ. Вы можете скачать его здесь.
Edit1
сначала вам нужно найти инструмент, который исправит вашу проблему. Exctrlst дает вам пользовательский интерфейс для повторного включения поврежденных счетчиков преформации.
Если это работает, теперь вы можете проверить с procmon, какие ключи реестра записываются во время операции ремонта и использовать это в качестве ввода для функции autorepair.