Имя: Пароль:
1C
 
как через 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
А смысл получать текущще? Может лучше счетчики запустить?