Установите приоритет процесса на Высокий: Опасный?

8

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

Кроме того, как я смогу сделать это, изменив цель ярлыка? Какая команда?

еек
источник
Настройка «выше нормы» (windows 7) безопаснее. Некоторое обсуждение здесь ... stackoverflow.com/questions/1663993/…
Моав
1
Это очень опасно. Основной проблемой является инверсия приоритетов, в результате которой процесс с более высоким приоритетом фактически получает фактически более низкий приоритет, поскольку он может быть на неопределенный срок заблокирован процессом с более низким приоритетом .
Дэвид Шварц
Как уже упоминалось, «реальное время» не обязательно является плохим, если ваш процесс хорошо себя ведет и работает только тогда, когда ему нужно, и спит, когда этого не происходит, иначе он может (и будет) препятствовать выполнению других задач полностью.
Мокубай
2
@David Schwartz, Cutler разработал планировщик Windows, чтобы избежать тупиковых ситуаций из-за инверсии приоритетов. От support.microsoft.com/kb/96418 : «Планировщик Windows NT решает эту проблему путем случайного повышения приоритета потоков, готовых к работе (в данном случае блокировщиков с низким приоритетом). Потоки с низким приоритетом работают достаточно долго чтобы отпустить их блокировку (выйти из критической секции), и поток с высоким приоритетом получает блокировку обратно. Если поток с низким приоритетом не получает достаточно времени ЦП, чтобы освободить свою блокировку в первый раз, он получит еще один шанс на следующий раунд планирования. "
Николь Гамильтон
@NicoleHamilton. Так вот почему иногда программа будет открывать несколько экземпляров одновременно, если она не открывалась при первом щелчке (а вы нажимали несколько раз) из-за высокой нагрузки?
Саймон Вербеке

Ответы:

6

Реальное время не обязательно "нет-нет". Это может привести к тому, что другие процессы выйдут из циклов процессора. Некоторые приложения не могут справиться с этим. Это то, с чем вам придется экспериментировать.

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

Вот как изменить процесс через командную строку, которую вы можете поместить в ярлык:

http://support.microsoft.com/kb/191771

Keltari
источник
1
В Windows, это делает голодают другие процессы очень легко ( в том числе и самой Task Manager).
user1686
3
Все зависит от вашей системы. В зависимости от того, насколько интенсивен процессор, процесс сродства в реальном времени вполне подойдет. Я запускаю процесс в режиме реального времени без проблем. Кроме того, это может помочь установить привязку к одному процессору при установке приоритета в реальном времени.
Келтари
Если процесс установлен в реальном времени, получит ли он абсолютный приоритет над всеми другими процессами в ядре, на котором он запущен? Я пытался найти способы посвятить одно из своих ядер в Dwarf Fortress, пока он работает.
SaintWacko
3

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

Если у вас несколько ядер, а процесс однопоточный: продолжайте, устанавливайте его так, как хотите. Другие ваши ядра будут по-прежнему свободны, даже если одно ядро ​​постоянно загружено на 100%.

Если у вас несколько ядер и процесс многопоточный: это будет зависеть от того, все ли потоки будут загружены на 100%. В некоторых программах есть поток 'manager', который распределяет работу по другим потокам, но сам по себе не выполняет большую часть обработки. Это оставит одно ядро ​​почти свободным и, таким образом, обеспечит высокий приоритет или приоритет в реальном времени.

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

Даже другие будут использовать только определенное количество ядер и могут не использовать все доступные ядра. В этом случае высокий или в реальном времени приоритет должен быть в порядке.

Если у вас нет единого ядра, продолжайте, экспериментируйте. Большую часть времени не повредит установить его на высокий уровень или даже в режиме реального времени. Вы также можете установить сходство процесса (сколько ядер он может использовать) в диспетчере задач. Таким образом, вы можете лучше сбалансировать нагрузку на ваш процессор. Это также может помочь снизить температуру и энергопотребление и т. Д.

Саймон Вербеке
источник
+1 Хорошо, что однопоточное приложение не является проблемой на многоядерном компьютере, независимо от того, насколько оно связано с вычислениями.
Николь Гамильтон
Не забывайте, однако, что, как предупреждено, [в первую очередь] однопоточные процессы с высоким приоритетом - даже если они затрагивают только одно ядро ​​- могут удерживать глобальные блокировки синхронизации системы в течение ненормального периода времени.
Дьяста
1

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

Николь Гамильтон
источник
0

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

Правильный способ использования более высоких приоритетов - в ЗАДАЧАХ с индивидуальной резьбой, а не в ПРИЛОЖЕНИЯХ. И эти задачи должны запускаться только по мере необходимости, а затем останавливаться или приостанавливаться, когда у них нет работы. Если при написании приложения вы чувствуете, что вам необходимо изменить базовый уровень приоритета, очень усердно подумайте о том, как сделать интервал, где это необходимо, максимально коротким.

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


источник