![]() |
![]() |
![]() |
|
как через wmi запустить счетчики производительности и получить результаты? | ☑ | ||
---|---|---|---|---|
0
vde69
21.05.15
✎
14:40
|
как через wmi запустить счетчиков производительности и получить результаты?
помню был спец объект, но найти не могу... |
|||
1
Heckfy
21.05.15
✎
15:34
|
winmgmts?
|
|||
2
vde69
21.05.15
✎
15:40
|
Локатор = Новый COMОбъект("WbemScripting.SWbemLocator");
Connection = Локатор.ConnectServer(эл.Адрес, , эл.Логин, эл.Пароль); СчетчикиПроцессора = Connection.InstancesOf("Win32_PerfFormattedData_PerfOS_Processor"); Для Каждого мПроцессор из СчетчикиПроцессора Цикл Сообщить ( "Загрузка ЦП " + Строка(мПроцессор.Name) + ", " + число(мПроцессор.PercentProcessorTime) ); КонецЦикла; |
|||
3
vde69
21.05.15
✎
15:41
|
но это немного не то, что я хотел... я хотел запустить на сервере а потом получить результаты в виде файла...
|
|||
4
Heckfy
21.05.15
✎
15:41
|
Ты хочешь загрузку проца получить?
|
|||
5
vde69
21.05.15
✎
15:45
|
(4) не только, меня интересует очередь к дискам и загрузка памяти...
делать нечего пытаюсь написать что-то типа оптимизатора настроек железа для 1с |
|||
6
vde69
21.05.15
✎
15:46
|
сейчас банально играюсь на виртуалке, вроде прикольно :)
|
|||
7
Heckfy
21.05.15
✎
15:47
|
По дискам не делал. Для примера кидаю функции по загрузке проца и памяти:
Функция Computer_Processor(Ресурс) Сч=0; СуммЗнач=0; Win32_ProcessorInfo = Новый ТаблицаЗначений; Win32_ProcessorInfo.Колонки.Добавить("LoadPercentage"); WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" +Ресурс+ "\root\cimv2"); Win32_Processor = WinMGMT.ExecQuery("SELECT * FROM Win32_Processor"); Для Каждого Processor ИЗ Win32_Processor Цикл ProcessorInfo = Win32_ProcessorInfo.Добавить(); ProcessorInfo.LoadPercentage = Processor.LoadPercentage; КонецЦикла; Для Каждого Стр Из Win32_ProcessorInfo Цикл Сч=Сч+1; СуммЗнач=СуммЗнач+Стр.LoadPercentage; КонецЦикла; СредняяЗагрузка=СуммЗнач/Сч; Возврат СредняяЗагрузка; КонецФункции Функция Computer_WindowsInfo(Ресурс) Перем WINInfo, WINInfoOS; Перем WinMGMT, Win32_OperatingSystem, OperatingSystem; WINInfo = Новый ТаблицаЗначений; WINInfo.Колонки.Добавить("FreePhysicalMemory"); WINInfo.Колонки.Добавить("TotalVisibleMemorySize"); WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" +Ресурс+ "\root\cimv2"); Win32_OperatingSystem = WinMGMT.ExecQuery("SELECT * FROM Win32_OperatingSystem"); Для Каждого OperatingSystem ИЗ Win32_OperatingSystem Цикл WINInfoOS = WINInfo.Добавить(); WINInfoOS.FreePhysicalMemory = ПолучитьЗначениеВПопытке(OperatingSystem, "FreePhysicalMemory"); WINInfoOS.TotalVisibleMemorySize = ПреобразоватьЗначениеВЧисло(ПолучитьЗначениеВПопытке(OperatingSystem, "TotalVisibleMemorySize")); КонецЦикла; Стр=WINInfo.Получить(0); СвобПамять=Число(Стр.FreePhysicalMemory); ВсегоПамять=Число(Стр.TotalVisibleMemorySize); СвободноПроцент=Окр(СвобПамять*100/ВсегоПамять,0,1); ИспПамять=100-СвободноПроцент; Возврат ИспПамять; КонецФункции Функция ПолучитьЗначениеВПопытке(хОбъект, хРеквизит) Попытка Возврат хОбъект[хРеквизит]; Исключение Возврат Неопределено; КонецПопытки; Возврат Неопределено; КонецФункции Функция ПреобразоватьЗначениеВЧисло(Значение) Попытка Возврат Число(Значение); Исключение Возврат 0; КонецПопытки; Возврат 0; КонецФункции |
|||
8
vde69
21.05.15
✎
16:07
|
для диска
СчетчикиДисков = Connection.InstancesOf("Win32_PerfFormattedData_PerfDisk_PhysicalDisk"); Для Каждого мДиск из СчетчикиДисков Цикл Сообщить ( "Очередь к диску " + Строка(мДиск.Name) + ", " + число(мДиск.CurrentDiskQueueLength) ); //AvgDiskQueueLength - Среднее число запросов на чтение и запись, помещенных в очередь выбранного диска в течение интервала выборки. КонецЦикла; |
|||
9
Гёдза
21.05.15
✎
16:08
|
А смысл получать текущще? Может лучше счетчики запустить?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |