2009-11-02 5 views
55

Из того, что я читал в прошлом, вам рекомендуется не изменять приоритет ваших приложений Windows программно, и если вы это сделаете, вы никогда не должны менять их на «в реальном времени».Какова настройка приоритета процесса в режиме реального времени?

Что делает настройка приоритета процесса «в реальном времени» по сравнению с «Высокими» и «Над нормальным»?

ответ

65

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

Создание потоков приоритетов в реальном времени требует привилегии (SeIncreaseBasePriorityPrivilege), поэтому это может быть сделано только администратором.

Для Vista и за ее пределами одним из вариантов для приложений, которые требуют, чтобы они выполнялись в приоритетах в реальном времени, является использование Multimedia Class Scheduler Service (MMCSS) и управление этим потоком. MMCSS не позволит вашему приложению использовать слишком много процессорного времени, поэтому вам не придется беспокоиться о том, как танковать машину.

+4

Может ли быть опасным для системы поставить один случайный процесс (например, видеоигру) в приоритете в реальном времени? Был бы рекомендован высокий приоритет/было бы заметное снижение производительности для этого приложения? – mrfred

+9

@mrfred Я бы не сказал, что это опасно, просто это замедляет всю систему, если это большая программа. Попробуйте установить приоритет Minecraft для Realtime. Поверь мне, это весело. Ваша мышь замедляется, клавиши набирают 5 секунд для ответа, а explorer.exe становится невосприимчивым! –

+1

@mrfred Лично я запускал skyrim в высоком и реальном приоритете в течение нескольких месяцев, и это заставляло игру работать намного более плавно, только с случайным звуковым артефактом (по любой причине). У меня никогда не было никаких проблем с этим. Я полагаю, что система, по крайней мере, перегрелась бы, если бы что-то шло ужасно неправильно, но, конечно, я действительно не знаю, из-за чего я ошибаюсь. Возможно, наличие нескольких ядер сдерживает любое голодание ресурсов для устройств ввода-вывода и т. Д. – Totem

22

Просто класс приоритета «В реальном времени» выше, чем класс «Высокий». Я не думаю, что это гораздо больше. О да, у вас должен быть SeIncreaseBasePriorityPrivilege, чтобы поместить поток в класс Real Time.

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

глава Руссиновича «Inside Windows» о том, как Windows, обрабатывает приоритеты является отличным ресурсом для обучения, как это работает:

Обратите внимание, что нет абсолютно никаких проблем с резьбой, имеющий Real -time приоритет в обычной системе Windows - они не обязательно для специальных процессов, запущенных на машинах dedicatd. Я полагаю, что для мультимедийных драйверов и/или процессов могут потребоваться потоки с приоритетом в реальном времени. Однако такой поток не должен требовать большого количества CPU - он должен блокировать большую часть времени, чтобы обычные системные события могли обрабатывать.

+6

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

+0

Iknow Я знаю, что это старое сообщение, но я обнаружил, что эта глава книги действительно милая ... заставила меня идти! https://www.google.ca/search?q=C04X1116607.pdf&ie=utf-8&oe=utf-8&gws_rd=cr&ei=cSTqVJzQNvHnsATun4CIDA#q=X1116607.pdf – MotherDawg

12

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

Так поясню, если вы должны спросить, не использовать его :)

+0

Согласовано. Важно знать, что это значит (предельный приоритет отдается этой теме, прежде всего), но если вы когда-нибудь захотите, чтобы вы ее использовали, вам определенно не стоит этого делать. –

+3

как вы собираетесь научиться использовать его, если вы не спросите, как его использовать?Я думаю, вы можете использовать его и посмотреть, что произойдет, тогда вы узнаете, но я чувствую, что вы не поощряете обучение – fifamaniac04

2

В реальном времени - наивысший приоритет класс доступен для процесса. Поэтому он отличается от «Высокого» тем, что он на один шаг больше, а «Над нормальным» - в два шага больше.

Аналогичным образом, в режиме реального времени также уровень приоритета потока.

Приоритет процесса класс повышает или понижает все эффективные приоритеты потоков в процессе и поэтому считается «базовым приоритетом».

Таким образом, процесс имеет:

  1. Базовый приоритет процесса класса.
  2. Индивидуальные приоритеты нитей, смещения базового класса приоритета.

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

В режиме NT6 + (Vista +) использование планировщика классов мультимедиа Vista является правильным способом для выполнения операций в реальном времени в не операционной системой реального времени. Он работает, по большей части, хотя и не идеален, поскольку ОС не предназначена для операций в реальном времени.

Microsoft считает этот приоритет очень опасным, справедливо так. Ни одно приложение не должно использовать его, кроме как в особых обстоятельствах, и даже тогда попытаться ограничить его использование временными потребностями.

1

Как только Windows узнает, что программа использует более высокий, чем обычно, приоритет, кажется, что она ограничивает приоритет процесса.

Установка приоритета с IDLE на REALTIME НЕ изменяет использование ЦП.

Я нашел на своем многопроцессорном процессоре AMD, что, если я отброшу один из процессоров, как LAST, использование процессора будет MAX OUT, а последний CPU останется бездействующим. Скорость процессора увеличивается до 75% на моей Quad AMD.

Использование диспетчера задач-> выберите процесс-> Щелкните правой кнопкой мыши процесс-> Выбрать-> Установить аффинность Нажмите все, кроме последнего процессора. Использование процессора увеличится до MAX на оставшихся процессорах и количество кадров, если обработка видео будет увеличиваться.

+1

Вы правы в том, что изменение класса приоритета процесса не влияет на использование ЦП, если не будет конкуренции за процессор. НО, вы ошибаетесь, думая, что Windows покрывает максимальные приоритеты процесса, основанные на использовании процессора. Вместо этого привилегия безопасности защищает от установки «реального времени» для предотвращения случайного использования. –

+0

(чтение лет спустя) - Проблема в том, что потоки не могут быть разделены. Таким образом, у вас может быть 8 ядер, но только 2 связанных с CPU (100% активных) потоков. Таким образом, вы говорите: «Почему мои другие 6 ядер не используются?». Или, в вашем случае: «Почему мой последний ядро ​​не используется?». Остальные ядра, похоже, ничего не сделают. И так вы этого хотите. Если бы поток был заменен от ядра к ядру, это снизило бы производительность. Разработчик приложений должен многопоточно, и не все может быть многопоточным. –

0

В основном это больше/больше во всем остальном. Клавиатура менее важна, чем процесс реального времени. Это означает, что процесс будет учитываться быстрее, чем клавиатура, и если он не сможет справиться с этим, ваша клавиатура замедлится.

0

Как и все другие ответы до реального времени, эта программа предоставляет самый приоритетный класс. Ничего не обрабатывается до тех пор, пока эта программа не будет обработана.
На моей машине pentium 4 я устанавливаю minecraft в реальном времени много, так как он увеличивает производительность игры много, и система кажется полностью стабильной. поэтому в реальном времени это не так плохо, как кажется, просто если у вас есть многоядерный набор близости к определенному ядру или ядрам (просто не все из них, просто чтобы все остальное могло работать в случае реального времени набор программ зависает) и установите приоритет в реальном времени.

Смежные вопросы