Положить значение на нагрузку системы Windows
Вопрос
Я написал скрипт обработки изображений на php, который запускается как запланированная задача cron (в OSX). Чтобы избежать перегрузки системы, скрипт проверяет загрузку системы (используя «uptime») и запускается только тогда, когда загрузка ниже предопределенного порога.
Теперь я перенес это на Windows (2003 Server) и ищу аналогичную функцию командной строки, чтобы сообщить о загрузке системы как целое число или число с плавающей запятой.
Решение
Вы можете попробовать это в командной строке Windows. Это работает в XP, получите много другой информации тоже. Р>
wmic CPU
Другие советы
Не использовать нагрузку ...
Загрузка системы не является хорошим показателем в этом случае. В Unix он, по сути, говорит вам, сколько процессов готово и ожидает выполнения в данный момент. Но поскольку существует множество причин, по которым процессу, возможно, придется ждать, ваш сценарий может действительно работать без снижения производительности другого процесса, даже если «загрузить». в системе высокий.
... используйте хороший
Вы должны использовать nice (1)
в Unix и эквивалент в Windows (" Process Priority " ;?), чтобы ОС могла решить, когда запускать ваш скрипт!
Если вы установите приоритет вашего скрипта на абсолютный наименьший возможный приоритет, то он будет выполняться планировщиком только тогда, когда в данный момент больше ничего не нужно делать.
Возможно, вам придется реализовать какой-то механизм, предотвращающий одновременное выполнение нескольких экземпляров вашего сценария, в случае, если выполнение занимает больше времени, чем длится интервал между вызовами.
Вы можете использовать утилиту командной строки с именем pv , чтобы отобразить имя процесса и загрузка ЦП% за определенный период времени (по умолчанию 500 мс) с использованием этой командной строки:
pve.exe -o"%n\t%c"
Есть справка по использованию переключателя -?
, который описывает доступные параметры.
Для OSX / linux потребуется немного больше работы, чем для безотказной работы, поскольку вам нужно будет суммировать числа из первого столбца (или опустить имя процесса и просто суммировать значение в каждой строке вывода), чтобы получить общее значение (в%) загрузка процессора. Р>
Положительным моментом является то, что, потратив немного больше времени, вы можете получить определенное количество ЦП, которое использует ваш исполняемый процесс, а не общее потребление ресурсов ЦП системой. Р>
WMI тестирует практически все в Windows, включая загрузку системы.
Я нашел ветку об этом .
Просто используйте стандартный Win32 API (GTC)