Що таке пріоритет та спорідненість Windows та які додаткові можливості вони надають?


9

Що саме є "Пріоритет" та "Спорідненість" (знайдено в диспетчері завдань) і для чого вони використовуються:

Знайдено в диспетчері завдань

У яких ситуаціях слід / чи можна їх використовувати та які переваги можна знайти під час налаштування цих параметрів.

Відповіді:


3

Встановлення спорідненості щось робить, але ви ніколи не захочете це використовувати.

Встановлення афінності CPU змушує Windows використовувати лише вибрані CPU (або ядра). Якщо ви встановите спорідненість до одного процесора, Windows запустить цю програму лише в цьому процесорі, ніколи на будь-якому іншому.

Windows автоматично ставить запущені програми на найменш завантажений процесор, тому обмеження його на одному процесорі не дозволяє Windows виконувати свою роботу. Навіть якщо CPU / core 1 зайнятий запуском інших програм, Windows не зможе запустити програму з афінністю, встановленою на CPU / Core 2.

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


6
> ви ніколи не захочете ним користуватися. Неправда. Якщо у вас є однопотокове додаток, воно не може використовувати нитки / ядра процесора в повній мірі, і Windows нічого не може зробити, щоб змусити / обдурити його. Якщо у вас є два однопотокові програми, ви можете сказати Windows, щоб кожен використовував окремий потік / ядро, так що замість того, щоб загальне використання процесора наближалося до 50-75%, ви можете збільшити його до 100% (кожне ядро максимально використовуються однією програмою). Так, так, ви дійсно можете використовувати налаштування, але це специфічний сценарій, який більшість людей не знає / не усвідомлює / потребує.
Synetech

2
Якщо у вас є два однопотокові програми, Windows запустить кожне на іншому потоці / ядрі, і ви отримаєте 100% використання процесора без встановлення спорідненості. Для тестування я просто запустив 4 екземпляри однієї потокової програми на моїй 4-х основній машині і отримав 100% використання процесора. Windows досить розумна, щоб ефективно планувати процесор.
shf301

Я думаю, це залежить від системи та / або версії Windows. Я бачив, як це (XP) наближає обидва ядра на 50-75%, де обидва процеси були встановлені на обидва ядра і вручну встановлюючи їх, максується процесором.
Synetech

@Synetech: Це здається майже неможливим. Потрібно було б переміщувати два процеси з ядра в основу, завжди обидва одночасно.
Девід Шварц

Інший дійсний випадок використання для цього: Є програма, яка може використовувати всі доступні процесори та може заважати іншим програмам добре працювати та / або змушувати ОС дуже повільно реагувати на введення користувача. У цьому випадку хтось може вирішити обмежити таку програму лише деякими процесорами. Як розробник я часто використовую цю функцію під час профілювання моїх процесорних програм, оскільки сам акт профілювання вимагає процесора.
Eyal Roth,

2

Встановлення спорідненості говорить про те, що обробляйте, над якими процесорами дозволено працювати.

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

Наприклад, якщо процесу було дозволено запустити його власне ядро, він міг би працювати в (найближчому) режимі реального часу, без утиліти 70 windows, які постійно перебивають і змінюють стеки на процесорі за власний відрізок часу. Програми в режимі реального часу - це те, що Windows ніколи не міг зробити, перш ніж багатопроцесорні / багатоядерні системи потраплять на сцену, оскільки ОС постійно перебиває / перемикає завдання на додаток для власних цілей. Зараз це здебільшого можна подолати, виділивши додаток у режимі реального часу один процесор, не дозволяючи всім іншим програмам використовувати цей процесор. Це дуже ніша тема, але такі системи, як (реальні) тренажери польоту, автоматизація фабрики та системи зворотного зв'язку управління, залежать від роботи архітектури в реальному часі.

Програмно-інтенсивні програми (наприклад, віртуальні віртуальні машини) можна виділити до власного ядра, тому ви можете використовувати їх, не доводячи до кінця решту вашої системи. Теоретично, гіпервізор, що працює на процесорі, який підтримує взаємодію з голими металами, може досягти продуктивності процесора, рівній незалежній ОС, що працює самостійно (за вирахуванням процесора, необхідного для роботи хост-ОС). Звичайно, на практиці навіть віртуальний комп'ютер, що працює на власному ізольованому ядрі / процесорі, все одно повинен приймати невелику кількість накладних витрат від вузла хост-операційної системи.

Для додатків, які обробляють велику кількість даних в потоці, ізоляція програми до власного процесора (і, можливо, все ще використовує декілька ядер) зменшиться при заміні кешу.

Старі програми, які виходять з ладу, коли вони розповсюджуються на декілька процесорів, можуть бути ефективно обмежені одним ядром / процесором, щоб вирішити проблему.

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

Є маса випадків, коли спорідненість є життєво важливою, але якщо ви не знаєте, що вони є, то, ймовірно, вона вам не знадобиться.


Те, що робить афінність набагато менш корисною, ніж багато хто думає, що це має бути, це це: встановлення спорідненості процесу до деякого підмножини доступних процесорів. не вимикає нічого іншого з цих процесорів. Для цього вам доведеться перейти до всіх інших процесів у системі, щоб не мати процесора, який ви хочете мати для себе. Це практично ніколи не буває практично.
Джеймі Ханрахан

Це можливо за допомогою програмного забезпечення сторонніх виробників . Чому MS не включає цю функціональність за замовчуванням, мені не доводиться.
Еван Плейс

Тому що, як я писав, це не все так корисно. І це дуже схильне до зловживань. Насправді звичайний результат занадто "креативного" з близькістю полягає в тому, що речі не працюють, коли б інакше могли бути. Зазвичай краще запустити потік на іншому, ніж те, що, на вашу думку, є кращим процесором, ніж взагалі (після того, як ви безглуздо встановите спорідненість, щоб заборонити йому доступ до процесорів, які в іншому випадку простоюють). Механізм Windows "ідеальний процесор" і "попередній процесор" за замовчуванням забезпечує добру узгодженість кешу без такого тупого інструменту маски спорідненості.
Джеймі Ханрахан

2

Це дуже корисна функція в певних сценаріях. Скажімо, у вас є багатопотокова програма, яка має тенденцію або простоювати, або агресивно захоплювати 100% кожного процесора протягом декількох хвилин, здійснювати пошук, нарощування тощо. Назвемо цю програму "затемненням".

Скажімо також, що під час роботи над цією програмою у вас є маса інших програм, які мають скромні вимоги до процесора, але по суті це додатки в режимі реального часу. Наприклад, коли ви використовуєте Eclipse, і він випадковим чином починає збирати або виконує компіляції gwt, ви також використовуєте комп’ютер для передачі музики або проведення досліджень у вікні браузера (наприклад, дослідження причини проблеми збірки) . Звичайно, ви не помрете, якщо ваша музика пропустить або ваш браузер перестане реагувати, але це дратує.

Спорідненість дозволяє вам обмежити ваш прийом їжі на процесорі до 7/8 ядер, щоб усім іншим був гарантований доступ до відносно невикористаного процесора, і вам не доведеться постійно стикатися з заїканням і перешкодами щодо зручності використання всього іншого на вашому комп'ютері поки затемнення шліфує.


У цьому випадку вам буде набагато краще, просто встановивши процес вашої процесорної свині низьким пріоритетом.
Джеймі Ханрахан

1

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

Наприклад: оскільки Windows Vista, програвач Windows Media автоматично отримує більш високий пріоритет для забезпечення безперебійного та безперервного відтворення медіа-файлів, лише 20% процесорного часу доступні для інших процесів за замовчуванням. Це лише приклад, який допоможе вам зрозуміти, які пріоритети. (Ви можете прочитати більше про пріоритети медіаплеєра у Vista на Technet .)

М'яка або тверда спорідненість може збільшити швидкість обробки, оскільки кеш процесора все ще може мати залишки цього процесу, коли процес був раніше перерваний, а потім відновлений у подальшому.


Солодкі спасибі! То який хороший посібник з використання afinity?
Джеймс Мерц


Хороший посібник щодо використання спорідненості: "Не варто".
Джеймі Ханрахан

"Лише 20% часу процесора, доступного для інших процесів", не є точним описом. Фактична реалізація полягає в тому, що потоці, яка входить у планувальник мультимедійних класів, може бути запущено до 80% кожного інтервалу планування в класі пріоритетності реального часу. Це необов'язково використовувати стільки, і якщо це не так. більше 20% буде доступно для інших потоків.
Джеймі Ханрахан

1

Прекрасним прикладом цього є старі комп'ютерні ігри (або інше програмне забезпечення), особливо коли 32-бітні ігри (програми) емулюються на сучасному 64-бітному комп'ютері. Встановлюючи спорідненість до старих ігор, обмежуючи їх лише чотирма ядрами, можна уникнути збоїв, які дозволять запускати ігри впертості. Деякі двигуни візуалізації, які використовуються в старих іграх, відеоредакторах та графічному програмному забезпеченні, прискореному апаратним забезпеченням, або програмне забезпечення САПР, не розуміють більше чотирьох ядер процесора, і вони стануть аварійними після запуску.

Я не створюю обліковий запис просто, щоб опублікувати це, щоб знайти мене google 'kieseyhow'

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