Является ли использование процессора для автоматического планирования процессов хорошей практикой? - PullRequest
0 голосов
/ 12 августа 2010

У меня были какие-то дебаты с коллегой, который предположил, что мы позволяем некоторым процессорам, интенсивно использующим процессор, на нашем предприятии опрашивать использование ЦП и выполнять их задачи при низкой загрузке ЦП.Мой контрапункт состоял в том, что, хотя использование процессора в идеальной системе будет обозначать уровень активности системы на данном сервере, в действительности в реальной системе слишком много несоответствий (пиков и провалов за короткое время), чтобы быть эффективным индикаторомкогда процессор должен интенсивно работать.Кроме того, я заявил, что ОС уже предназначена для управления конфликтами процессора между потоками и приложениями.Мое предложение состояло в том, чтобы просто запустить процесс в нерабочее время, чтобы избежать ухудшения работы пользователя в течение дня.

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

Редактировать: Эти приложения являются службами .NET, а также запланированными заданиями SQL Server..

1 Ответ

2 голосов
/ 12 августа 2010

Нет, это не так (так что да, вы правы).

Есть много способов, которые могут вызвать проблемы, вне моей головы:

  • ОС пытается сбалансировать распределение ресурсов. Для того, чтобы сделать это имеет алгоритм планирования который использует вид текущего использование ресурсов. Что вы описываете запуск второго алгоритма планирования который будет бороться с первым (планировщик ОС) по распределению ЦПУ. Это может вызвать странную обратную связь эффекты.

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

  • Зачем изобретать велосипед? Это какие именно уровни приоритета / простоя обработки были изобретены для. Если вы просто хотите, чтобы ваш процесс занялся фоновый процессор затем установите его на самый низкий уровень приоритета и позволяют ОС, чтобы запланировать это.

...