Счетчик производительности windows реестр
Применение счетчиков производительности. Часть 2
- Введение
- Добавление счетчиков производительности
- Удаление счетчиков производительности
- Сохранение отчета о производительности
- Заключение
Введение
В предыдущей статье данного цикла вы узнали о назначении оснастки «Системный монитор». Были рассмотрены методы открытия данной оснастки, а также средства настройки внешнего вида системного монитора. Из этой статьи вы узнаете о важнейшем компоненте системного монитора – о его счетчиках производительности. Счетчики производительности – это расширяемый механизм сбора статистической информации. Большая часть счетчиков доступна вам в оснастке «Системный монитор». А некоторые счетчики устанавливаются как часть приложения стороннего производителя и их можно добавлять к группе сборщиков данных или сеансу монитора производительности. В операционных системах Windows данные о производительности поступают от используемых в компьютере компонентов или ролей серверных операционных систем. Такие данные представляются в виде объекта производительности, который обычно называется так же, как компонент, генерирующий данные. Например, объект «Индикатор питания» представляет собой набор данных о производительности питания. Каждый объект производительности содержит счетчики, дающие сведения о конкретных элементах системы или службы. Например, счетчик «% работы в пользовательском режиме» объекта «Сведения о процессоре» отображает средний процент времени занятости процессора по отношению ко всему времени образца. Если выбран объект на удаленном компьютере, возможна небольшая задержка, так как происходит обновление списка объектов, присутствующих на удаленном компьютере. В операционных системах Windows, для доступа к счетчикам производительности используются такие интерфейсы, как: функция RegQueryValueEx, библиотека Performance Data Helper (PDH, предоставляемая Performance Data Helper API – Pdh.dll), инструментарий управления Windows (WMI) или ActiveX System Monitor.
Одним из основных механизмов обеспечения доступа к счетчикам производительности можно отнести системный реестр, причем не имеет значения, предоставлены счетчики компонентами операционной системы или серверными приложениями. Одна из дополнительных выгод обращения к счетчикам производительности через реестр – возможность удаленного мониторинга рабочих характеристик без лишних издержек, поскольку удаленный доступ к реестру можно легко получить через обычные API-функции реестра.
Обратиться к этим данным можно только программным путем через Windows-функции реестра типа RegQueryValueEx, открыв специальный раздел с именем HKEY_PERFORMANCE_DATA. Насколько вам известно, то доступ к разделу HKPD непосредственно из редактора реестра невозможен – здесь хранится не сама информация о производительности, а ссылки на соответствующие источники этих данных.
В следующих разделах вы узнаете о методах добавления и удаления счетчиков производительности.
Добавление счетчиков производительности
Для выполнения мониторинга определенного объекта, вам необходимо в оснастку «Системный монитор» добавить конкретный счетчик. Например, операционная система Windows поддерживает несколько счетчиков, которые позволяют отслеживать процессы выполняемые в системе. Данные этих счетчиков можно просматривать в оснастке «Системный монитор». К таким счетчикам можно отнести: Процесс: % работы в привилегированном режиме, Процесс: % загруженности процессора, Процесс: % работы в пользовательском режиме, Процесс: Прошло времени (сек), Процесс: идентификатор процесса и пр.
Для добавления счетчиков производительности, выполните следующие действия:
- Откройте оснастку «Системный монитор»;
- Выберите команду «Добавить счетчики» одним из следующих способов:
- Нажмите на кнопку «Добавить» на панели инструментов;
- Нажмите правой кнопкой мыши на области сведений с графиком производительности и из контекстного меню выберите команду «Добавить счетчики».
- В появившемся диалоговом окне «Добавить счетчики» вам предстоит выбрать следующее:
Рис. 1. Диалоговое окно «Добавить счетчики»
- В группе «Выбрать счетчики с компьютера» вы можете указать компьютер, за которым будет вестись наблюдение. По умолчанию выбран локальный компьютер, на котором открыта сама оснастка. По желанию вы можете указать имя компьютера, для которого вам нужно добавить счетчики производительности или ввести его IP-адрес. Если вы не помните правильное имя компьютера или IP-адрес, нажмите на кнопку «Обзор» и в диалоговом окне «Выбор: Компьютер» выберите требуемый объект для мониторинга. Также, все компьютеры, которые ранее были вами указаны, сохраняются в раскрывающемся списке данной группы;
- Как говорилось выше, для каждого счетчика производительности есть свой объект производительности, который обычно называется так же, как компонент, генерирующий данные. В группе «Имеющиеся счетчики» вы можете найти десятки групп объектов производительности, каждая из которых содержит по несколько объектов. Например, в группе «Сведения о процессоре» вы можете обнаружить 20 объектов производительности;
- Группа «Экземпляры выбранного объекта» предназначена для выбора счетчика производительности, который будет отображаться на самой диаграмме в оснастке «Системный монитор». Для того чтобы выбрать указанный вами счетчик – выделите его и нажмите на кнопку «Добавить», которая расположена в нижней левой части данного диалогового окна. При необходимости вы можете добавить сразу несколько счетчиков, выбрав их из списка, удерживая клавишу CTRL. Помимо этого вы можете добавить сразу всю группу, просто выбрав ее и нажав на кнопку «Добавить». Стоит обратить внимание на то, что элемент _Total предназначен для отображения суммы значений всех экземпляров определенного счетчика.
- По умолчанию в оснастке «Системный монитор» отображается счетчик «Сведения о процессоре (_Total)% загруженности процессора»;
- Также, в этом диалоговом окне для упрощения нахождения необходимых объектов, вы можете воспользоваться функционалом поиска экземпляров счетчиков. Для этого достаточно выбрать группу счетчиков, выделить конкретный объект производительности и в раскрывающемся списке под полем «Экземпляры выбранного объекта» ввести имя требуемого процесса, а затем нажать на кнопку «Найти»;
- Если вы сомневаетесь в назначении выбранного счетчика, то можете просмотреть его подробное описание. Для этого вам нужно установить флажок «Отображать описание», расположенный в левом нижнем углу данного диалогового окна. После того как флажок будет установлен, описание будет изменяться при выборе каждого счетчика производительности.
После того как необходимые счетчики производительности будут добавлены в оснастку, диаграмма будет выглядеть примерно следующим образом:
Рис. 2. Оснастка «Системный монитор» со счетчиками сведения о процессоре
Удаление счетчиков производительности
При проведении анализа производительности вашей системы может понадобиться удалить несколько счетчиков из получившегося отчета. Удалить счетчики можно так же просто, как и добавить. Для этого выполните одно из следующих действий:
- в области сведений оснастки «Системный монитор» выделите счетчик, который нужно удалить и нажмите на клавишу DELETE;
- откройте диалоговое окно свойств оснастки, перейдите на вкладку «Данные», выберите счетчик, который для дальнейшего анализа вам больше не потребуется (также вы можете выбрать сразу несколько счетчиков, удерживая клавишу CTRL) и нажмите на кнопку «Удалить», как показано ниже:
Рис. 3. Удаление счетчиков производительности из диалогового окна свойств оснастки
Сохранение отчета о производительности
Функционал системного монитора позволяет вам экспортировать полученные отчеты в формат HTML и в графический формат для дальнейшего изучения.
Для того чтобы экспортировать отчет в HTML формат, щелкните правой кнопкой мыши на области сведений и из контекстного меню выберите команду «Сохранить параметры как». В появившемся диалоговом окне «Сохранить как» выберите папку, в которую будет сохранен отчет, в поле «Имя файла» введите название своего отчета. Также перед сохранением вы можете указать тип файла, содержащего отчет. По умолчанию отчет сохраняется с расширением *.html и его можно будет открыть в любом браузере. Причем, параметры системного монитора сохраняются в файл HTML, включая тип отображения, заголовки к диаграмме и пр. Также из раскрывающегося списка «Тип файла» вы можете выбрать отчет оснастки «Системный монитор» с расширением файла журнала с разделителями-знаками табуляции и расширением .tsv. Этот формат используется, например, для экспорта данных из журнала в электронные таблицы.
В браузере отчет с расширением HTML будет выглядеть следующим образом:
Рис. 4. Экспортированный отчет в формате HTML
Помимо этого вы можете сохранить отображаемую диаграмму в виде файла изображения с расширением *.gif. Для этого щелкните правой кнопкой мыши на области сведений и из контекстного меню выберите команду «Сохранить образ как». В появившемся диалоговом окне «Сохранить как» выберите папку, в которую будет сохранен отчет, в поле «Имя файла» введите название своего отчета и нажмите на кнопку «Сохранить».
Если у вас одновременно отображаются несколько счетчиков, а на данный момент вам необходимо следить только за определенными, вы можете скрыть все ненужные на данный момент счетчики. Для этого, удерживая клавишу CTRL, выделите на легенде несколько счетчиков, нажмите правой кнопкой мыши и выберите команду «Скрыть выделенные счетчики». Также вы можете с каждого ненужного счетчика снимать флажки в столбце «Показать», но на это уйдет гораздо больше времени. Когда вам нужно будет заново отобразить все скрытые счетчики, выделите их, нажмите на легенде правой кнопкой мыши и из контекстного меню выберите команду «Показать выделенные счетчики».
Вы можете выделить конкретный счетчик, чтобы он отображался с полужирным начертанием. Для этого выберите определенный счетчик на легенде, а затем нажмите на кнопку «Выделить», которая расположена на панели инструментов. Отчет будет выглядеть следующим образом:
Рис. 5. Выделенный счетчик производительности
Для того чтобы снять выделения со счетчика, нажмите еще раз на кнопку «Выделить», расположенную на панели инструментов оснастки.
Заключение
В этой статье вы узнали о важнейшей составляющей части оснастки «Системный монитор» и механизме сбора статистической информации – счетчиках производительности. Вы научились добавлять и удалять счетчики производительности в область сведений оснастки, а также сохранять отчеты и выполнять прочие действия. В следующей статье данного цикла вы познакомитесь с группами сборщиков данных.
Русские Блоги
Счетчик производительности Windows
1. Обзор счетчика производительности
Мониторинг производительности представляет собой системную функцию, предоставляемую Windows NT. Windows NT всегда встроен в интегрированные инструменты мониторинга производительности, которые предоставляют информацию о текущем состоянии здоровья операционной системы, обеспечивая сотни счетчиков производительности для различных объектов. Объекты производительности контролируются объектами, типичные примеры имеют процессор, процесс, память, TCP / UDP / IP / ICMP, PhysicalDisk и т. Д. Счетчики обычно предоставляют информацию, связанную с производительностью для операционных систем, приложений, услуг, драйверов и т. Д. Для анализа узлов узких мест и диагностики и систем тюнинга и производительности приложений. Механизм счетчика производительности позволяет приложениям и компонентам операционной системы контролировать приложения, такие как монитор производительности, и сообщает о некоторых статистических данных, связанных с производительностью. Perfmon.exe Вы можете просмотреть объекты производительности, счетчики производительности и экземпляры объектов, которые можно просматривать, добавляя счетчики для просмотра соответствующего описания информации.
Фактически, все счетчики производительности Windows могут быть доступны путем написания программ. В Windows реестр является механизмом доступа к счетчикам производительности. Информация о производительности на самом деле не существует в реестре, который не может рассматриваться в реестре реестра Regedit.exe, но можно получить доступ к функциям реестра с использованием ключей реестра для получения данных из поставщика данных производительности. Откройте специальный ключ под названием HKEY_PERFORMANCE_DATA, используйте ключ запроса на функцию regqueryvalueex, вы можете напрямую доступ к информации о рассмотрении реестра. Конечно, информация счетчика производительности также может быть доступна с использованием справки по производительности (PDH, API PDH.dll).
Во-вторых, родственные условия
Объект производительности: монографии объектов производительности, такие как процессор, процесс, память, физический сайт и т. Д., Эквивалентный классу (классу).
Счетчик производительности: опишите выполнение информации о производительности объекта производительности, эквивалентной свойствам классов.
Экземпляр объекта: могут быть несколько объектов производительности, которые представляют различные экземпляры типа объекта, эквивалентны экземпляру класса.
В-третьих, HKEY_PERFORMANCE_DATA DATANY организации
Глава данных производительности представляет собой структуру PERF_DATA_BLOCK (как показано на рисунке 1), которая описывает общую информацию о системе и данные производительности и может запросить данные структуры из глобального значения ключей. После того, как Perf_data_Block полный тип объекта производительности (perf_object_type) определяется в системе, где смещение следующего типа объекта производительности описано в каждом заголовке типа объекта.
Рисунок 1
фигура 2
Существует два объекта производительности: один является одним объектом экземпляра, а другой — это объект с несколькими экземплярами. Рисунки 2 и 3 описывают организацию данных этих двух объектов производительности соответственно. Каждый блок данных объектов содержит структуру Perf_Object_Type, которая описывает данные о производительности объекта. Затем следует список структур Perf_Counter_Definition, что описывает все счетчики определений объектов производительности. Для объектов одноэтактных экземпляров счетчик определяет список структур Perf_Counter_block, а счетчик счетчиков выполняется. Данные счетчика определяются в каждой структуре Perf_Counter_Definition, поэтому значение всех счетчиков можно легко получить очень удобно. Для объектов производительности с несколькими экземплярами Perf_Counter_definition структура представляет собой набор блоков информационных данных экземпляра, каждый из которых представляет экземпляр объекта. Каждый информационный блок данных с информацией состоит из структуры, имени экземпляра и структуры экземпляра и структуры Perf_Counter_block. За данными счетчика счетчика такая же, как объект единственного экземпляра.
Изображение 3.
В-четвертых, реализован простой просмотра счетчика счетчика производительности
Основываясь на вышеуказанных знаниях и некоторых ссылках, я реализовал View Windows Performance Viewer Viewer в среде Windows XP SP3 + VS2003. Как показано на рисунке 4, интерфейс выглядит следующим образом:
1, файл заголовка WinPerf.h
#ifndef _WINPERF #define _WINPERF #include «stdafx.h» #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INITIAL_SIZE 51200 #define EXTEND_SIZE 25600 #define PERF_SUBKEY_GLOBAL _T(«Global») #define REGSUBKEY_COUNTERS _T(«Counters») typedef map ::const_iterator CIT; BOOL ConnectComputerPerformanceRegistry(LPCSTR lpMachineName, HKEY &hKey); BOOL GetNameStrings(HKEY hKey, map &mPerfObjectIndex); BOOL EnumPerfObjects(HKEY hKey, vector
&vPerfObjects); BOOL LoadObjectData(HKEY hKey, DWORD dwObjIndex, map mPerfCountersIndex, / CListBox *pCListBoxCounters, CListCtrl *pCListCtrlInstances); #endif
2, подключение (удаленный) Реестр счетчика компьютеров
BOOL ConnectComputerPerformanceRegistry(LPCSTR lpMachineName, HKEY &hKey)
3, объект спектакля перечисления
static inline PPERF_OBJECT_TYPE FirstObject(PPERF_DATA_BLOCK PerfData) < return((PPERF_OBJECT_TYPE)((PBYTE)PerfData + PerfData->HeaderLength)); > static inline PPERF_OBJECT_TYPE NextObject(PPERF_OBJECT_TYPE PerfObj) < return((PPERF_OBJECT_TYPE)((PBYTE)PerfObj + PerfObj->TotalByteLength)); > BOOL EnumPerfObjects(HKEY hKey, vector
4, получите название счетчика производительности
5, экземпляр объекта производительности перечисления и значение счетчика счетчика
BOOL LoadObjectData(HKEY hKey, DWORD dwObjIndex, map mPerfCountersIndex, / CListBox *pCListBoxCounters, CListCtrl *pCListCtrlInstances) < TCHAR szSubKey[1024] = <0>; DWORD rt = 0; DWORD dwType = 0; DWORD dwSize = 0; LPBYTE buffer = NULL; BOOL bPass = TRUE; map mCounters; map mOffsets; map mIndexs; LPSTR p; PPERF_DATA_BLOCK pPerf; PPERF_OBJECT_TYPE pObj; PPERF_INSTANCE_DEFINITION pInst; PPERF_COUNTER_BLOCK pCounter; PPERF_COUNTER_DEFINITION pCounterDef; buffer = NULL; dwSize = INITIAL_SIZE; buffer = (LPBYTE) malloc(dwSize); memset(buffer, 0, dwSize); wsprintf(szSubKey, «%u», dwObjIndex); // get Object PERF_DATA_BLOCK while (bPass) < rt = RegQueryValueEx(hKey, szSubKey, NULL, &dwType, buffer, &dwSize); pPerf = (PPERF_DATA_BLOCK) buffer; if ((rt == ERROR_SUCCESS) && (dwSize >0) && pPerf->Signature[0] == (WCHAR)’P’ && pPerf->Signature[1] == (WCHAR)’E’ && pPerf->Signature[2] == (WCHAR)’R’ && pPerf->Signature[3] == (WCHAR)’F’) < break; >if (rt == ERROR_MORE_DATA) < dwSize += EXTEND_SIZE; buffer = (LPBYTE)realloc(buffer, dwSize ); memset(buffer, 0, dwSize ); >else < bPass = FALSE; >> if (bPass) < // get Counters pObj = (PPERF_OBJECT_TYPE) ((DWORD)pPerf + pPerf->HeaderLength); pCounterDef = (PPERF_COUNTER_DEFINITION) ((DWORD)pObj + pObj->HeaderLength); pCListCtrlInstances->InsertColumn(0, (LPCTSTR)(mPerfCountersIndex[dwObjIndex]), LVCFMT_LEFT, 120); for (DWORD i = 0; i NumCounters; i++) < mOffsets[pCounterDef->CounterNameTitleIndex] = pCounterDef->CounterOffset; mIndexs[pCounterDef->CounterNameTitleIndex] = i + 1; pCListBoxCounters->InsertString(i, (LPCTSTR)(mPerfCountersIndex[pCounterDef->CounterNameTitleIndex])); pCListCtrlInstances->InsertColumn(i + 1, (LPCTSTR)(mPerfCountersIndex[pCounterDef->CounterNameTitleIndex]), LVCFMT_LEFT, 120); pCounterDef++; > // get instances if (pObj->NumInstances == 0 || PERF_NO_INSTANCES == pObj->NumInstances) < // no instances pCounter = (PPERF_COUNTER_BLOCK)((DWORD)pObj + pObj->DefinitionLength); pCListCtrlInstances->InsertItem(0, «None»); for(CIT p = mOffsets.begin(); p != mOffsets.end(); ++p) < DWORD counterVal = *((LPDWORD) ((DWORD)pCounter + p->second)); char info[256] = <0>; wsprintf(info, «%u», counterVal); pCListCtrlInstances->SetItemText(0, mIndexs[p->first], info); > > else < // muiti-instances case TCHAR szInstanceName[MAX_PATH]; pInst = (PPERF_INSTANCE_DEFINITION) ((DWORD)pObj + pObj->DefinitionLength); for (i = 0; i NumInstances; i++) < p = (LPSTR) ((DWORD)pInst + pInst->NameOffset); rt = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)p, -1, szInstanceName, sizeof(szInstanceName), NULL, NULL); pCListCtrlInstances->InsertItem(i, szInstanceName); for(CIT p = mOffsets.begin(); p != mOffsets.end(); ++p) < pCounter = (PPERF_COUNTER_BLOCK) ((DWORD)pInst + pInst->ByteLength); DWORD counterVal = *((LPDWORD) ((DWORD)pCounter + p->second)); char info[256] = <0>; wsprintf(info, «%u», counterVal); pCListCtrlInstances->SetItemText(i, mIndexs[p->first], info); > // Point to the next process pInst = (PPERF_INSTANCE_DEFINITION) ((DWORD)pCounter + pCounter->ByteLength); > > >// end if (bPass) if (buffer) < free(buffer); buffer = NULL; >return bPass; >
Пять, ссылка
[1] Углубленный анализ операционной системы Windows (четвертый издание), Марк Э. Русинович и Дэвид А.Соломон.
[2] Using Performance Counters, MSDN. http://msdn.microsoft.com/en-us/library/aa373209(VS.85).aspx.
[3] Говоря о перечислении, Лу Циминг.http://jasonye.bokee.com/432054.html.
[4] Как запрограммировать данные о производительности Windows NT, Zhou Jingsheng.http://www.comprg.com.cn/detail.asp?hw_id=2643.
(Aiguille Liu / Liu Aigui / [email protected] )
Счетчик производительности windows реестр
Дата последнего изменения раздела: 2005-11-18
Анализатор сервера Microsoft® Exchange считывает следующую запись реестра, чтобы определить, отключены ли счетчики производительности логических и физических дисков:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPerfdiskPerformanceDisable Performance Counters
Если анализатор сервера Exchange обнаружит, что значение параметра Disable Performance Counters существует и ему присвоено значение 1, выводится предупреждение.
На сервере, работающем под управлением операционной системы Microsoft Windows®, публикуются счетчики производительности дисков двух типов:
- используемые подсистемой контроля производительности Microsoft Win32® и инструментарием управления Windows (WMI);
используемые старыми приложениями, вызывающими API-интерфейс IOCTL_DISK_PERFORMANCE для получения показаний необработанных счетчиков.
Счетчики производительности, используемые в Win32 и WMI, включаются по умолчанию в системах Microsoft Windows Server™ 2003 и Windows 2000 Server. Необработанные счетчики в обеих операционных системах по умолчанию отключаются. Если параметр реестра Disable Performance Counters, по умолчанию отсутствующий в обеих операционных системах, добавлен и ему присвоено значение 1, счетчики производительности Win32/WMI отключаются, и сбор данных о производительности по этим счетчикам невозможен.
Проще всего отключить счетчики Win32/WMI с помощью программы «Список расширяемых счетчиков» (ExCtrLst.exe). Эта программа с графическим интерфейсом, включенная в наборы ресурсов для Windows 2000 Server и для Windows Server 2003, позволяет администратору выборочно включать и отключать публикацию счетчиков производительности. Когда программа ExCtrLst.exe используется для отключения объекта производительности, она добавляет в реестр элемент Disable Performance Counters и присваивает ему значение 1. Если затем ExCtrLst.exe используется для включения отключенного счетчика, она изменяет значение параметра Disable Performance Counters на 0. (Следует иметь в виду, что при этом элемент Disable Performance Counters не удаляется.)
Эта статья содержит сведения о редактировании реестра. Перед редактированием реестра убедитесь, что вы знаете, как восстановить реестр в случае возникновения неисправности. Сведения о восстановлении реестра см. в разделе справки «Восстановление реестра» файла Regedit.exe или Regedt32.exe. |
Чтобы устранить причину появления этого предупреждения
Откройте редактор реестра, например, Regedit.exe или Regedt32.exe.
Перейдите к разделу реестра: HKLMSYSTEMCurrentControlSetServicesPerfdiskPerformance
В правой области щелкните правой кнопкой мыши параметр Disable Performance Counters и присвойте ему значение . Можно также удалить элемент Disable Performance Counters, чтобы вновь включить счетчики.
Закройте редактор реестра и перезапустите все приложения, собирающие данные о производительности, чтобы изменение вступило в силу.
Цифровые эквиваленты счётчиков производительности windows
Зачем нужны цифровые эквиваленты счётчиков производительности
Как Вы знаете, счётчики производительности Windows записываются в виде слов или фраз, разделённых символом обратный слеш — ‘», например:
Processor(_total)% processor time
или
Процессор(_total)% загруженности процессора
Однако не все знают, что в название счётчика зависит от того, в какой версии Windows этот счётчик запрашивается: в русскоязычной или англоязычной. В русской версии (например) не будет работать счётчик, название которого написано на английском языке. Аналогично, в английской версии windows русскоязычный счётчик работать не будет.
Что же делать? Как получить данные со счётчика независимо от версии, разрядности или языка операционной системы windows? Всё очень просто: используйте вместо названий счётчиков их цифровые эквиваленты!
Важно: обратите внимание, что свыше 90% цифровых эквивалентов счётчиков производительности не работают на клиентских версиях windows (т.е. на рабочих станциях). На серверных версиях (windows 2003 / 2008 / 2012) всё работает нормально, а на клиентских (windows XP / Vista / 7 / 8) работают очень немногие из числовых счётчиков производительности!
Как пользоваться цифровыми эквивалентами счётчиков производительности
Пользоваться такими цифровыми эквивалентами можно точно так же, как и обычными названиями счётчиков, просто вместо слов или фраз будут числа (да и то не во всех местах), например:
Счётчик, показывающий % загрузки процессора:
в английской версии windows: Processor(_total)% processor time
в русской версии windows: Процессор(_total)% загруженности процессора
в любой версии windows (цифровой эквивалент): 238(_Total)6
Как определить цифровой эквивалент счётчика производительности windows
Для того, чтобы преобразовать названия счётчиков в их цифровые эквиваленты, используются специальные таблицы соответствия, которые хранятся в реестре.
Для англоязычных версий Windows:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPerflib 09
В элементе Counter значением является такая таблица соответствий. Соответствие выглядит следующим образом — цифровой эквивалент, а под ним — название счётчика:
1
1847
2
System
4
Memory
6
% Processor Time
10
File Read Operations/sec
12
File Write Operations/sec
14
File Control Operations/sec
16
File Read Bytes/sec
18
File Write Bytes/sec
.
Для русскоязычных версий Windows:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPerflib 19
В элементе Counter значением является такая таблица соответствий. Соответствие выглядит следующим образом — цифровой эквивалент, а под ним — название счётчика:
1
1847
2
Система
4
Память
6
% загруженности процессора
10
Операций чтения файлов/с
12
Операций записи файлов/с
14
Операций управления файлами/с
16
Байт чтения файлов/с
.
Здесь Вы можете найти соответствующие цифровые эквиваленты для каждой части счётчика производительности (счётчик производительности состоит из нескольких частей, разделенных символом обратный слэш — «», например счётчик SystemSystem Up Time:
System => 2
System Up Time -> 674
в результате получаем счётчик: 2674
Другой пример: счётчик «ПамятьПредел выделенной виртуальной памяти»
Память => 4
Предел выделенной виртуальной памяти => 30
в результате получаем счётчик: 430
И снова обращаю Ваше внимание: свыше 90% цифровых счётчиков производительности работает только на серверных версиях windows. Например, на клиентских (и на серверных, разумеется, тоже) версиях работает счётчик:
Processor(_Total)% Processor Time
Процессор(_Total)% загруженности процессора
238(_Total)6
Проверка реестра счетчиков производительности
У меня есть приложение C#, которое добавляет некоторые счетчики производительности при запуске. Но если реестр HKEY_LOCAL_MACHINE — >SOFTWARE — >Microsoft->Windows NT->CurrentVersion — >Perflib поврежден (отсутствуют или недопустимы данные), то операция проверки существования счетчиков производительности (PerformanceCounterCategory.Exists(category) занимает очень много времени (около 30 секунд), прежде чем окончательно выбросить исключение (InvalidOperation: Category does not exist).
Мой вопрос заключается в том, как я могу проверить действительность реестра, прежде чем пытаться добавить счетчики производительности (и что означает действительность), или если есть способ, которым я могу тайм-аут операций счетчика perf, так что это не займет 30 секунд, чтобы получить исключение.
3 ответа
- Эквивалент для счетчиков производительности Win32 на Linux
Возможный Дубликат : Концепция “Performance Counters” в Linux/35 Что такое Linux эквивалент счетчиков производительности Windows? API / библиотеки для публикации счетчиков приложений API / библиотеки для эффективного мониторинга и сбора значений (например, pdh.dll) приложения для мониторинга.
Рассматривая возможность использования счетчиков производительности в качестве сайта на базе .NET моих компаний, я задавался вопросом, насколько велики накладные расходы при их использовании. Хочу ли я, чтобы мой сайт постоянно обновлял свои счетчики, или мне лучше делать это только тогда, когда я.
Я подозреваю, что «validity»-это внутренняя деталь реализации, которую вы не знаете. Тем не менее, вы могли бы, по крайней мере, попытаться открыть те же ключи реестра и просто посмотреть, существуют ли они. Вы можете использовать Process Explorer , чтобы выяснить, какие ключи он читает.
Однако я задаюсь вопросом, почему вас это вообще волнует. Поврежденный реестр не должен быть очень распространенной вещью, и если это так, что вы собираетесь с этим делать? Все, что ты можешь сделать, — это бросить курить. Так что вы можете просто поймать исключение. Я бы отнесся к этому, как к любой другой операции блокировки, и сделал бы это в рабочем потоке (а не в потоке UI), и показал бы прогресс вашим пользователям, чтобы они знали, что ваше приложение не зависло.
Вы уверены, что реестр поврежден?
Я обнаружил, что у моей программы нет разрешения на создание счетчиков производительности во время выполнения. Вместо этого я добавил создание счетчиков в свою программу установки, и установщик должен быть запущен от имени администратора. Во время выполнения у моей программы не было проблем с доступом или обновлением уже созданных счетчиков.
Я не знаю, как ответить на ваш вопрос, но если я правильно понимаю, проблема в том, что пользователю кажется, что приложение зависает на срок до 30 секунд при запуске.
Если это так, я бы предположил, что вы можете избежать этого, просто создав рабочий поток, попросив его создать мониторы производительности, а затем продолжить запуск приложения.
Я не работал со счетчиками производительности, поэтому не могу сказать, есть ли с ними что-нибудь, что помешало бы этому работать?
Похожие вопросы:
Я хочу получить счетчики производительности службы SSAS. Я вижу эти счетчики, распределенные по нескольким категориям в моем perfmon. Кроме того, я проверил свой раздел реестра и нашел эти счетчики.
Есть ли какой-нибудь способ получить коллекцию счетчиков производительности ? Я имею в виду, что вместо создания нескольких счетчиков производительности, таких как PerformanceCounter actions = new.
У меня возникли проблемы с предварительным просмотром пользовательских счетчиков производительности с помощью PerflibV2. Монитор производительности показывает мою пользовательскую группу счетчиков.
Возможный Дубликат : Концепция “Performance Counters” в Linux/35 Что такое Linux эквивалент счетчиков производительности Windows? API / библиотеки для публикации счетчиков приложений API /.
Рассматривая возможность использования счетчиков производительности в качестве сайта на базе .NET моих компаний, я задавался вопросом, насколько велики накладные расходы при их использовании. Хочу.
Я хотел бы знать, каково время работы службы WCF с использованием счетчиков производительности. Есть ли для этого специальный счетчик? Или есть способ получить эту информацию от других счетчиков?
Скажем, я хочу реализовать программное обеспечение, которое использует аппаратные счетчики производительности, такие как счетчики для подсчета вышедших из строя магазинов. Обратите внимание, что.
Я хотел бы прочитать несколько счетчиков производительности в моем приложении C#, например Processor% Idle Time, но это работает только на английских системах. Поскольку счетчики производительности.
Вопрос говорит сам за себя. Могу ли я использовать PowerShell для создания категории счетчиков производительности и счетчиков производительности на удаленном сервере Windows. Сервер, о котором идет.
У меня есть мониторинг производительности, работающий на сервере. Он записал несколько счетчиков от SQL Server, сервера, производительность веб-служб, эффективности веб-службы кэша.