Bat для запуска приложения при падении нагрузки ЦП другого процесса
Суть вопроса: есть батник запуска приложения
Код:
@echo off Код:
:proverka |
Это надо?
Перезапуск процесса, если потребляет менее 40Мб памяти Код:
@echo off |
нет, не это. Либо нагрузка процесса на ЦП, либо общая загрузка ЦП
|
Цитата:
вот общий процент загрузки процессора: Код:
wmic CPU get LoadPercentage /value |
Win32_PerfFormattedData_PerfProc_Process (но у меня не работает).
|
А не допускаете что процесс может просто не расходовать большое количество оперативной памяти? что 60%ЦП что 1% - расход оперативы 125мб. И как тут лезть с оперативой. Как посмотреть загрузку ЦП, и процесс я знаю. Мне нужно понять как из это сделать переменную IF. Как там будет с остальными процессами и как будет меняться в загрузке это не важно, нужна конкретная задача - запуск приложения при падении нагрузки процессом ЦП ниже 30% (или обще загрузки ЦП ниже 50
Код:
wmic CPU get LoadPercentage /value |
Код:
@echo off |
powershell:
Код:
get-counter '\процесс(taskmgr)\% загруженности процессора'|select -exp countersamples|ft InstanceName,CookedValue Код:
get-counter '\process(*)\% processor time'|select -exp countersamples|ft InstanceName,CookedValue |
YuS_2, в cmd есть typeperf, однако ни alpap, ни вы не берете в расчет один простой нюанс касательно того, что именно подразумевается под нагрузкой ЦП в винде. Попробую объяснить популярно на пальцах. В случае с WMI оснастка возвращает последнее пиковое значение счетчика производительности, последний якобы отображает загрузку процессора в процентах. На деле же так как каждому потоку отпускается определенный квант времени, по истечении которого планировщик очереди потоков принудительно передаст управление потоку, ближе всех стоящему в очереди, логично заключить: счетчик производительности измеряет не загрузку как таковую, это - готовность планировщика предоставить управление потоку по первому требованию (всплески активности возникают при переключении потоков). Счетчики производительности предоставляются системой посредством такой NTAPI'шной функции, как NtQuerySystemInformation, при этом далеко не все из SYSTEM_INFORMATION_CLASS возвращает данные из "низов", это также справедливо и для загрузки ЦП. Иными словами, загрузка ЦП условна, и гарантированно сказать, что к всплеску привело именно такое-то приложение, а не работающее "параллельно", которое, скажем, активно использует системный таймер, невозможно (что не совсем справедливо в случае таких систем как 8.1 и 10).
|
greg zakharov,
Цитата:
Код:
get-counter "\процесс(*)\% загруженности процессора"| Цитата:
Код:
get-counter -ListSet * А что там наворотила микрософт внутри WMI, мне неинтересно. Если что-то чему-то, по какой-то причине не соответствует, то это баг, который должен быть где-то описан и возможно, даже записан в очередь на исправление (что в случае с микрософт весьма сомнительно) :) Цитата:
А практически, в официальной документации написано следующее: Цитата:
В общем, резюмируем: Код:
$process = 'explorer' Это всё, что требовалось ТС. Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Я бы подобрал такой пример: Садясь за руль автомобиля, не каждый имеет представление о всех процессах, происходящих внутри современного двигателя, тем не менее, пользоваться автомобилем умеет каждый, кто этому обучался, т.е. для управления автомобилем совсем не обязательно изучать физику и химию происходящих процессов при работе двигателя, достаточно знать, что он работает исправно и нигде, ничего посторонних звуков не издает. Если уж задаваться целью досконального изучения, то придется изучать устройство и структуру процессоров, их систему команд и прочее-прочее, напрямую имеющее отношение к электронике, т.е. только софтверных знаний тут будет далеко недостаточно. К тому же, Windows, пока ещё, ПО - не с открытым кодом, изучение "до винтика", достаточно проблематично. Строить выводы на предположениях - не хочется, да и не имеет большого смысла. Кроме того, это должно быть чем-то мотивировано, ибо голова же - не наращиваемый массив накопителей, поэтому забивать её информацией, которая вовсе никогда не пригодится - серьезное расточительство. :) Цитата:
Не будем уже выкать друг другу, не первый день и не на одном форуме пересекаемся достаточно давно... :) Цитата:
Т.е. мы всегда можем сравнить то, что выводится в диспетчере задач. для примера нагружаем процессор: Код:
@echo off Далее запускаем powershell и сравниваем выводимые данные в реальном времени: Код:
$process = 'cmd' В общем, таких относительных измерений, для данной задачи - за глаза и с лихвой, имхо. :) |
YuS_2, думаю, истина где-то посередине: с чем-то согласиться можно,с чем-то - нет, - здесь, нужно полагать, каждый видит проблему со своего ракурса.
|
Время: 10:28. |
Время: 10:28.
© OSzone.net 2001-