Положить значение на нагрузку системы Windows - PullRequest
1 голос
/ 27 ноября 2008

Я написал скрипт обработки изображений на php, который запускается как запланированная задача cron (в OSX). Чтобы избежать перегрузки системы, скрипт проверяет загрузку системы (используя «uptime») и запускается только тогда, когда загрузка ниже предопределенного порога.

Я теперь перенес это на Windows (2003 Server) и ищу аналогичную функцию командной строки, чтобы сообщить о загрузке системы как целое число или число с плавающей запятой.

Ответы [ 5 ]

3 голосов
/ 15 декабря 2008

Не использовать нагрузку ...

Загрузка системы не является хорошим показателем в этом случае. В Unix он, по сути, говорит вам, сколько процессов готово и ожидает выполнения в данный момент. Но поскольку существует множество причин, по которым процессу, возможно, придется ждать, ваш сценарий может действительно работать без снижения производительности другого процесса, даже если «нагрузка» в системе высока.

... используйте хороший

Вы должны использовать nice(1) в Unix и эквивалент в Windows («Приоритет процесса»?), Чтобы ОС могла решить, когда запускать ваш скрипт!

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

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

1 голос
/ 27 ноября 2008

Вы можете попробовать это в командной строке Windows. Это работает в XP, получите много другой информации тоже.

wmic CPU

0 голосов
/ 27 ноября 2008

Просто используйте стандартный Win32 API (GTC)

0 голосов
/ 27 ноября 2008

WMI тестирует практически все в Windows, включая загрузку системы.

Я нашел ветку об этом .

0 голосов
/ 27 ноября 2008

Вы можете использовать утилиту командной строки с именем pv , чтобы отобразить имя процесса и загрузку ЦП за определенный период времени (по умолчанию 500 мс), используя эту командную строку:

pve.exe -o"%n\t%c"

Справка по использованию переключателя -? описывает доступные параметры.

Для OSX / Linux потребуется немного больше работы, чем для безотказной работы, поскольку вам нужно будет суммировать числа из первого столбца (или опустить имя процесса и просто суммировать значение в каждой строке вывода), чтобы получить общее количество (в%) загрузка процессора.

Положительным моментом является то, что, потратив немного больше времени, вы можете получить конкретный объем ЦП, который использует ваш исполняемый процесс, а не общее потребление ресурсов ЦП системой.

...