Как (и как часто) обновляются записи базы данных в WMI? - PullRequest
2 голосов
/ 23 марта 2011

У нас есть требование для разработки приложения мониторинга для наших клиентских компьютеров с Windows, и я собираюсь получить некоторую информацию об архитектуре WMI.Наш текущий план состоит в том, чтобы использовать довольно простые сценарии VBScript для периодического запроса базы данных, записи соответствующей информации в плоские файлы для последующей передачи на центральный сервер (где весь тяжелый анализ и отчетность уже существуют для наших компьютеров, не работающих на Windows.

Я пытался найти ответ на этот вопрос в MSDN и сети в целом, но все статьи кажутся особенно «пушистыми» - много «как это использовать», но мало «как это работает внутри».

Возьмем, например, сегмент VBScript, такой как:

set wmi = getObject("winmgmts:\\.\root\cimv2")
set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
n = itemCpu.PercentProcessorTime

или:

set wmi = getObject("winmgmts:\\.\root\cimv2")
set colMem = wmi.execQuery(
    "select AvailableKBytes from Win32_PerfRawData_PerfOS_Memory",,48)

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

Другими словами, статистика собирается и записывается в базу данных Windows независимо от того, запрашивает ли кто-либо информацию из указанной базы данных.Лучше всего можно описать тандинг следующим образом:

+------------+    req/       ======== 
| Monitoring |     resp     /        \     stats    +------------+
|  Processes |  <------->  < Database >  <--------  | Collectors |
|            |              \        /              +------------+
+------------+               ======== 

\_____________________________/    \_____________________________/
         On-demand                        Always happening

Но меня интересует процесс заполнения базы данных , глубиной .Такие вещи, как:

  • Как мы можем сказать, как часто и при каких обстоятельствах «сборщики» Windows добавляют информацию в базу данных?
  • Пишет ли ядро ​​Windows информацию о процессепри каждом переключении задач?
  • Пишет ли он информацию о памяти каждую секунду?
  • Обновляет ли она только базу данных по требованию (когда приложение мониторинга запрашивает информацию)?

Это то, что я пытаюсь выяснить.

У кого-нибудь есть такая информация или ссылки на технически мыслящие статьи или технические документы по этому вопросу?

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Короче говоря, метабаза WMI обновляется в режиме реального времени.Например, просмотрите класс часового пояса системы:

wmic timezone get /all /format:list

Затем измените настройку региональных зон системы и снова проверьте класс часового пояса.

UAC (начиная с Win VISTA и далее) играет большую роль в инфраструктуре WMI: http://msdn.microsoft.com/en-us/library/windows/desktop/aa826699(v=VS.85).aspx

В этой статье (довольно хорошо) описывается архитектура CIM: http://www.wbemsolutions.com/tutorials/CIM/index.html

В этой статье MSDN описывается MOF: http://msdn.microsoft.com/en-us/library/windows/desktop/aa823192(v=vs.85).aspx

Итак, в общем, не существует жесткого и быстрого правила для повторного заполнения базы данных CIM, оно зависит от того, что система делает в данный момент и/ или что делает пользователь.

1 голос
/ 04 ноября 2011

Я не уверен, что запрашиваемая вами информация действительно где-либо подробно документирована.

Из того, что я понимаю в WMI, все это основано на механизме потребителя / поставщика и его реализации тех поставщиков, которыенесут ответственность за поддержание актуальности информации.Тогда ваши сценарии будут потребителями.

Одна книга, которую я могу вам порекомендовать, - "Разработка решений WMI" Крейга Тунстала и Гвин Коул.Это около 800 страниц, и я думаю, что он действительно содержит более чем достаточно информации для всех, кто хочет работать с WMI, включая разработку пользовательских приложений и пользовательских провайдеров.

http://www.amazon.com/Developing-WMI-Solutions-Management-Instrumentation/dp/0201616130

...