3

У меня есть вопрос относительно графика win-7 и приоритета процесса.

Сценарий таков: у меня запущен процесс, изначально с приоритетом "Normal"

Я считаю, что этот процесс часто сводится к фону (низкий уровень ввода / вывода). Я заканчиваю тем, что устанавливаю приоритет обратно на "Нормальный" или "Выше Нормального", однако через несколько минут он снова уменьшится.

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

Итак, вопрос заключается в следующем: пересчитывается ли приоритет процесса, чтобы покрыть его использование ввода-вывода? Процесс в этой ситуации - Visual Studio 2015, который использует довольно много HDD, что может быть узким местом.

4 ответа4

0

Насколько мне известно, Windows не регулирует автоматически приоритет процесса .

Изменение приоритета процесса устанавливает "базовый приоритет" всех потоков в процессе и всех потоков, впоследствии созданных в процессе. (Смотрите мой ответ здесь для описания этих отношений.)

Windows корректирует приоритеты потоков в зависимости от их недавней активности. Например, после завершения ввода-вывода приоритет потока будет повышаться над его базой на величину, определяемую драйвером функционального устройства для устройства. По окончании каждого временного интервала, если поток работает с повышенным приоритетом, его приоритет будет "уменьшаться" на 1, пока не упадет до базового приоритета. Он не гниет ниже основания.

Это задокументировано в главе о планировании потоков в Windows Internals Соломоном, Руссиновичем, Ионеску и соавт.

Но это не соответствует вашему сценарию, о котором сообщают, потому что 1) результат всего этого увеличения и уменьшения приоритета потока просто не отображается в диспетчере задач (поскольку диспетчер задач сообщает о классе приоритета процесса, а не о приоритетах потока); и 2: этот механизм никогда не отклоняет приоритет потока ниже его базового приоритета. База - это то, что устанавливается при изменении приоритета процесса.

Это может быть то, что Visual Studio (deveng.exe) делает для себя. Вы видите, что это происходит с любым другим процессом?

Это можно исследовать с помощью Windows Performance Toolkit.

0

Планировщик окон, скорее всего, будет косвенно учитывать использование ввода-вывода (потому что он будет планировать процессы реже, которые возвращаются быстро, как процессы, ожидающие ввода-вывода). Однако приоритет процесса должен быть числом, установленным пользователем [или другими программами (включая сам процесс)], и далее влиять на планировщик. ... Хватит моих диких догадок.

Эти ответы sugegst с помощью Prio , чтобы сохранить приоритет процесса (вынужденный фоновой службой) может также помочь в вашем случае.

0

Насколько я знаю, операционные системы Windows не изменят приоритет процесса, если не указано иное. Однако это не означает, что приоритет не может быть изменен запущенной программой. Существует свойство .NET с именем Process.PriorityClass, который может изменить приоритет. Возможно, VS решает, что может уменьшить использование своего процессора, чтобы позволить другим потокам больше процессорного времени?

-1

Изменение приоритета процесса в ситуации, которую вы описываете, не является необычным.

Чтобы упростить ситуацию, давайте подумаем о ситуации следующим образом: более высокий приоритет обычно означает, что процесс "просыпается" чаще, чем процесс с более низким приоритетом (для выполнения некоторой работы). Учитывая, что ваш процесс выполняет много (случайного) дискового ввода-вывода, поддержание его на высоком приоритете означает, что он часто "просыпается" только для того, чтобы ждать, пока диск вернет данные. Поскольку переключение процессов может быть дорогой / трудоемкой операцией, снижение приоритета процесса, интенсивно использующего диск, приводит к лучшему использованию процессора. Другими словами, регулируя приоритет процесса, процессор может тратить больше времени на выполнение работы, а не тратить это время на переключение между процессами.

Я думаю, что более вероятно, что VS или сам процесс делают перераспределение приоритетов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .