Встановити пріоритет процесу на Високий: Небезпечний?


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


1
У Windows, це робить голодують інші процеси дуже легко ( в тому числі і самої Task Manager).
користувач1686

3
Все залежить від вашої системи. Залежно від того, наскільки процесор інтенсивно обробляє його, спорідненість у реальному часі прекрасна. Я запускаю процес у режимі реального часу прямо зараз без проблем. Крім того, це може допомогти встановити спорідненість до одного процесора, встановлюючи пріоритет у режимі реального часу.
Келтари

Якщо процес встановлений в режимі реального часу, чи буде йому надаватися абсолютний пріоритет перед усіма іншими процесами в основному, на якому він працює? Я намагався знайти способи присвятити одне з моїх сердечників до карликової фортеці, поки вона працює.
SaintWacko

3

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

Якщо у вас є декілька ядер, і процес є однопоточним: продовжуйте, встановлюйте його як завгодно. Ваші інші ядра все одно будуть безкоштовними, навіть якщо одне ядро ​​буде на 100% навантаженні весь час.

Якщо у вас є декілька ядер, і процес є багатопоточним: це буде залежати від того, чи будуть усі потоки мати 100% навантаження. Деякі програми мають "менеджерський" потік, який передає роботу іншим потокам, але не робить багато обробки. Це дозволить залишити одне ядро ​​майже вільним і, таким чином, забезпечити пріоритет високого або реального часу.

Інші програми намагатимуться взяти у всіх ядрах. У цьому випадку високе може бути добре, але для цього потрібно експериментувати.

Навіть інші візьмуть лише певну кількість ядер і можуть не використовувати всі наявні ядра. У цьому випадку пріоритет у великому або в реальному часі має бути добре.

Якщо ви не маєте жодної основи, продовжуйте експериментувати. Більшу частину часу не завадить встановити його на високий або навіть у режимі реального часу. Ви також можете встановити спорідненість процесу (скільки ядер він може використовувати) і в диспетчері завдань. Таким чином ви зможете краще збалансувати навантаження на ваш процесор. Це також може сприяти зниженню температури та споживання електроенергії тощо.


+1 Добре, що однопотокове додаток не є проблемою на багатоядерній машині, як би не було обчислено обчислення.
Ніколь Гамільтон

Не забувайте, однак, що, як застережено, [головним чином] однопотокові процеси з високим пріоритетом - навіть якщо вони зачіпають лише одне ядро ​​- можуть утримувати глобальні блокування синхронізації системи протягом ненормальної кількості часу.
діаста

1

Чи буде це працювати для вас, повністю залежить від того, що робить ваша програма. Якщо це шліфування за допомогою довгого довгого обчислення, якому ніколи не потрібно чекати вводу-виводу, сподівайтеся, що запуск, що має високий пріоритет, може підняти вашу машину на коліна. Але якщо проблема затримка, і вашій програмі потрібно просто швидко прокинутися у відповідь на завершення вводу / виводу або подібну подію, пройдіть трохи швидку обробку, а потім знову поверніться спати, це буде добре.


0

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

Правильний спосіб використання більш високих пріоритетів - в ЗАВДАННЯХ, що передаються окремо, а не в ЗАЯВКАХ. І ці завдання повинні або виконуватись лише в міру необхідності, а потім зупинятись або припиняти себе, коли у них немає роботи. Якщо під час написання програми ви вважаєте, що вам потрібно змінити базовий рівень пріоритету, тоді дуже добре подумайте, як зробити інтервал, коли це необхідно якомога коротше.

Можливо, варто також вкласти гроші в книгу чи курс про одночасну та паралельну обробку, перш ніж вирушати будь-де поблизу чогось на кшталт пріоритетного походу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.