Які причини можуть мати програміст у тому, що він хоче вимкнути гіперточення?


13

Моя компанія щойно придбала нові комп’ютери, щоб замінити старі 2 Гб машини Windows XP. Хтось із моєї команди зауважив, що вони прийшли з вимкненою гіперточкою, і сказав усім перезавантажити та включити його. Чи є користь програмуванню на машині з вимкненою гіперточкою?


1
Яку модель процесорів Intel ви використовуєте, наприклад, Core i5 або i7?
JB King

@JBK Добре запитання, я не знаю, у мене немає жодної з цих машин.
Попс

На старому ноутбуці Pentium 4, щоб зменшити тепло та шум вентилятора, а можливо, змусити акумулятор працювати ще кілька хвилин. Не відповідь, тому що це має бути давньою історією, і не повинно застосовуватися у вашому випадку.
Steve314

У грі Lucasarts Grim Fandango звуковий двигун потрапив у стан гонки під час роботи з гіперточенням.

Відповіді:


14

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

Що сталося, оригінальний код створив би вдвічі більше, ніж ниток при запуску на гіперточеній машині (ви можете припустити, що це суцільна точка HT). Однак пропускна здатність цих потоків була дуже чутливою до кількості кешу, доступного для потоку. Із вдвічі більшою кількістю потоків, що борються за фіксовану кількість кешу, доступний кеш на одну нитку був занадто низьким, і траплялося обмолот: було б завантаження більше пропусків кешу, завантаження більше доступу до основної пам’яті та продуктивність суттєво вразила порівняно з запуском менше ниток і більше кешу на нитку (що ви отримали, якщо запустили додаток на машині з відключеним HT).

Кінцевим виправленням було те, щоб програма додатково перевіряла HW-платформу та враховувала розміри кешу та кількість кешу, що вважається необхідним для потоку, вирішуючи, скільки ниток створити. У будь-якому випадку проблема швидко зникла з наступним поколінням процесорів, що збільшило розмір кешу (і ми фактично почали бачити скромну вигоду від HT). Однак цілий епізод залишив тривалий і тривалий спадок, коли рекомендувати HT завжди бути відключеним на будь-якій платформі, на якій працює наш SW, і поштовхом колін " що ця машина не ввімкнула HT так? ", Відповіді на будь-яку проблему з продуктивністю. (Я думаю, що основна проблема полягає в тому, що більшість тих, хто не поводиться, просто не розуміють, що саме HT є.)


11

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

Навіть Intel рекомендує вимкнути його в цьому випадку:

Наведені нижче настільні операційні системи не рекомендуються для використання з Hyper-Threading Technology. Якщо ви використовуєте одну з наступних операційних систем настільних ПК, радимо відключити технологію Hyper-Threading в системній програмі настройки BIOS: [...]

(Джерело: http://www.intel.com/support/processors/sb/CS-017343.htm )

Тож, можливо, виробник (або постачальник) хотів бути обережним.


Також відомо, що деякі ігри запускаються повільніше, ніж коли гипертонировка вимкнена.
Клаїм

4
Було б цікаво, якби вони були стурбовані ефективністю ігор, що граються на роботі.
дієтабудда

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

1
@ Steve314: Безумовно, це було з Windows2000 (і відключення HT, безумовно, була гарною ідеєю, якщо ви працюєте з цим), але Windows XP повинен був знати HT (див., Наприклад, download.microsoft.com/download/5/7/ 7 /… ) і не потрапляти в таку пастку. Я припускаю, що подібна логіка вбудована в Linux з якоїсь версії ядра.
тайм

6

Більше ніж ймовірно, ОЕМ був просто консервативним. Часто постачальник OEM із відключеними функціями (як HT, біт No-Execute, vt тощо) відключений. Причина полягає в тому, що деякі рідкісні обставини можуть призвести до збою цих налаштувань, і люди, які насправді хочуть функцій, можуть так само легко вмикати їх.

Також деякі рідкісні помилки в ОС призводять до можливих проблем із безпекою, коли деякі функції ввімкнено. Наприклад, технологія віртуалізації колись мала таку проблему. Отже, просто продавець є консервативним.

Hyperthreading, як правило, корисний для інтерактивних настільних ПК, як-от машин для програмування. Хоча деякі люди можуть захотіти вимкнути це, якщо ваші додатки будуть працювати на серверах без HT. Просто для зменшення потенційних різниць у апаратному забезпеченні.


2
Це майже завжди трапляється для машин, які постачаються із вимкненим HT. Максимальна сумісність і рятування постачальника від потоку дивних дзвінків підтримки.
Патрік Х'юз

5

Hyperthreading не додає нових ядер до процесора. У вас ще є одна арифметична / логічна одиниця, одна одиниця з плаваючою точкою (...) на ядро. Тож якщо у вас є кілька потоків / процесів, які роблять дуже різні речі, HTT може підвищити продуктивність. Але якщо у вас кілька потоків, які роблять більш-менш одні і ті ж речі (не рідкість у програмах, що цікавлять кількість), продуктивність насправді може погіршитися від HTT.


2

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

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


Моя здогадка - існує механізм для вирішення цього питання узгодженості, але це може призвести до значного покарання за ефективність. IIRC, певна сторінка пам'яті не може бути вільно завантажена на будь-яку сторінку кешу - зазвичай це механізм-адреса-карти-на-один-з цих кількох сторінок. Можливо, цілком можливо, щоб два потоки перейшли на кілька кеш-сторінок, а решта залишилася невикористаною? (можливо, навіть з багатоядерними, хоча імовірно з меншим ризиком).
Steve314

0

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

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


0

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

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