Стан управління електроживленням P-стану, C-стану та пакетний C-стан, Intel®
(Ви можете завантажити PDF-версію цієї статті у вкладенні.)
Зміст
Передмова. Що, чому й звідки?
У цій статті об'єднано серію публікацій, присвячених станам управління електроживленням. Ця серія входить у ще більший набір блогів з різних тем, пов'язаних з управлінням електроживленням, включаючи стани управління електроживленням (ця серія), стани електроживлення в режимах «Турбо» і в режимі hyper-threading, налаштування та політики управління електроживленням. Зміст цих публікацій буде корисним для всіх, хоча тут описується лише співпроцесор Intel Xeon Phi. Виняток становить лише серія з налаштування, яка за своєю природою більшою мірою залежить від платформи; вона присвячена співпроцесору Intel Xeon Phi і набору програм Intel® Manycore Platform Software Stack (MPSS). На додаток до цього набору блогів з керування електроживленням зверніть увагу на ще дві допоміжні добірки: серію з вимірювання продуктивності [i], і ще один набір ранніх публікацій на різні теми, наприклад, звідки береться C * V 2 * f.
На порталі Intel® Developer Zone ви знайдете окремі блоги, перелічені в ще одній статті: Список корисних статей, блогів та посилань з електроживлення та управління електроживленням.
Отже, влаштовуйтесь зручніше та постарайтеся отримати задоволення від ознайомлення із захоплюючою темою керування електроживленням.
Розділ 1. Введення для допитливих умів
Які стану електроживлення існують для співпроцесора Intel Xeon Phi? Що відбувається у кожному з цих станів? Було б цікаво знати. Якщо ви цікавитеся високопродуктивними обчисленнями,то й вам ці знання знадобляться.
Але це не буде глибока, вичерпна докладна і вкрай технічна наукова праця, присвячена управлінню електроживленням. Якщо вам потрібен саме такий матеріал, пропоную прочитати керівництво розробників програмного забезпечення (SDG) по співпроцесору Intel Xeon Phi[ii]. програмістах), явно чи неявно, маємо на увазі не ми з вами. Цільова аудиторія цього керівництва – розробники операційних систем та драйверів. До речі, у минулому житті я був одним із таких розробників. Одна з цілей цієї серії блогів – розгляд управління електроживленням з погляду розробника додатків, тобто мене чи вас, а не з погляду творця операційних систем чи драйверів.
Якщо коротко, бувають Р-стан пакета, С-стану ядер (іноді їх називають СС-стану) і С-стану пакета (РС-стану). Також співпроцесор може працювати в режимі Turbo 3 . Р-станів ядер немає.
Хост і співпроцесор спільно відповідають управління електроживленням співпроцесора. У деяких операціях управління електроживленням співпроцесор діє автономно. В інших випадках хост бере відповідальність на себе і сам керує електроживленням, а іноді навіть перевизначає дії співпроцесора.
У подальшій серії я розповім про пакетні Р-стани (включаючи режим "Turbo"[iv]), C-стани ядер і пакетні РС-стани. Я також розповім про те, як ви, будучи розробником додатків, можете керувати електроживленням співпроцесора.
І ще одне зауваження. Я не гарантую, що всі випуски співпроцесорів Intel Xeon Phi (тобто типи співпроцесорів) підтримують усіці функції керування електроживленням.
Глава 2. P-стан. Зниження енергоспоживання без шкоди для продуктивності
З самого початку можу заявити, що стан Р не вплине на продуктивність програми. Проте вони важливі для застосування з інших міркувань. Оскільки більшість читачів цього блогу нічого не приймають на віру, ставляться до всієї інформації, що сприймається критично і скептично (будучи інженерами і вченими), я підкріплю цю мою заяву доказами.
Р-стану є пари значень напруги і частоти, що визначають швидкість роботи співпроцесора і споживану їм потужність. Чим нижча робоча напруга процесора, тим менше електроенергії він споживає. (У одній з попередніх публікацій я пояснював це дуже високому технічному рівні.) Оскільки разом із напругою знижується і частота, у своїй зменшується швидкість обчислень. Так і бачу, як у вас назріває питання: «Хіба можуть виникнути ситуації в додатках для високопродуктивних обчислень, коли мені потрібно включити стан Р- і знизити продуктивність додатку?» Застосування Р-станів менш важливе в області високопродуктивних обчислень, ніж серед менш інтенсивним навантаженням, таких як клієнтські комп'ютери і сервери даних. Але навіть у середовищі співпроцесорів та високопродуктивних обчислень тривалі стани бездіяльності досить часто виникають у проміжках між великими обчислювальними завданнями. Наприклад, якщо ви використовуєте модель розвантаження, співпроцесор з високою ймовірністю не використовуватиметься в періодах між розвантаженнями. Крім того, нативний додаток, що виконується на співпроцесорі, найчастіше з різних причин перебуватиме в стані бездіяльності, наприклад чекати наступної порції даних дляобробки.
Програма управління електроживленням співпроцесора підтримує Р-стан від Р0 до Pn. Кількість Р-станів, що підтримуються кожним випуском (типом) співпроцесора, може відрізнятися, але завжди становить не менше двох. Крім того, деякі типи підтримують стан Р «Турбо». Програма управління електроживленням співпроцесора обробляє переходи з одного Р-стану до іншого. Програма управління електроживленням хоста у цьому практично не бере участі.
Постає закономірне питання: як це все вплине на продуктивність? Ми ж таки працюємо в середовищі високопродуктивних обчислень. Відповідь проста: ніякого практичного впливу на продуктивність обчислень немає. Не сумніваюся, що зараз у вас виникло кілька запитань:
(a) “Хвилинку! Як це можливо? Якщо співпроцесор знижує швидкість роботи процесора, зменшуючи його частоту, як це може не вплинути на продуктивність програми?”
(b) “Мені просто потрібно, щоб програма працювала якнайшвидше. Навіщо взагалі дбати про скорочення споживання електроенергії?”
Спочатку розглянемо варіант Б. Я розумію, що електроживлення не є найбільш пріоритетним питанням для вас як для розробника додатків. Але все одно воно опосередковано впливає на продуктивність програми. Підвищене споживання електроенергії пов'язане з такими речами, як вищі витрати на приміщення, підвищена витрата електрики на охолодження та кондиціювання повітря, необхідність більшої площі приміщення тощо. системні архітектори, що керують приміщеннями тощо.
Говорячи правду, вам теж слід думати про це. Це впливає на ваш додаток з дужеважливого боку, хоч це й не завжди очевидно. Якщо в обчислювальному центрі вдасться знизити витрату електроенергії без втрати продуктивності, це означає, що в цьому просторі можна встановити більше процесорів, не перевищуючи при цьому відведену норму електроживлення. Тобто, образно кажучи, ви «отримуєте більше за ті самі гроші». А це дуже добре для вас як для програміста чи вченого. Зниження необхідної потужності означає, що в меншому просторі можна розмістити більше процесорів. Це, у свою чергу, означає, що ви як розробник додатків або вчений можете займатися не лише масштабнішими завданнями (у системі більше ядер), а й обробляти ці завдання швидше (нижче за затримку передачі між ядрами).
Повернемося до Р-станів. Р-стан теоретично вплинуть на продуктивність, але не так, щоб це позначилося на роботі високопродуктивних додатків. Як це можливо? Справа у переходах між Р-станами. Також слід пам'ятати про використання процесора. Програмне забезпечення керування живленням періодично відстежує використання процесора. Якщо використання нижче певного порогу, стан Р збільшується, тобто процесор переходить в наступний стан енергоефективності. Ключове слово в попередній пропозиції – «використання». Як ви думаєте, яким буде використання процесора при виконанні ресурсомісткої задачі, пов'язаної з високопродуктивними обчисленнями? В ідеалі воно має бути якомога ближче до 100%. А в якому стані буде виконуватися ваш додаток при такому використанні процесора? Це Р0, найшвидший Р-стан (якщо не брати до уваги режим «Турбо»). Отже, Р-стани з найвищим рівнем економії електрики не вплинуть на ваші додатки: ситуація,якої процесор, що підтримує ваш добре налаштований високопродуктивний додаток, міг би увійти в одній з таких станів, просто не виникне.
Отже, всі високопродуктивні частини програми завжди будуть використовувати процесори майже на 100%. Використання, близьке до 100%, практично завжди гарантує найшвидший стан Р, тобто Р0. Отже, Р-стан не впливає на продуктивність додатків.
Як змусити мою програму працювати в одному з цих режимів «Турбо»? Цього робити не можна, бо це надто небезпечно. Дуже легко зробити незначну помилку, яка спричинить перегрів та пошкодження співпроцесора. Якщо процесор підтримує «Турбо», надайте керування цим режимом операційної системи.
Глава 3. C-стану ядер: подробиці
БАЗОВІ ВІДОМОСТІ: КОРОТКО ПРО СТАНИ БЕЗДІЇ
Ось короткий опис С-станів. С-стану - це стану економії електроенергії при бездіяльності (на відміну від Р-станів, що є станом економії електроенергії при роботі). У стані Р процесор продовжує виконувати інструкції, а в стані (крім стану С0) процесор не діє, ніякі інструкції не виконуються. Можна навести таку аналогію: бездіяльний процесор подібний до будинку, в якому світиться весь світ, але нікого немає. Споживання всієї цієї електроенергії не є ніяким корисним цілям, хіба що приносить деякий прибуток електричної компанії. Як краще вчинити? Якщо вдома нікого немає, тобто будинок не діє, навіщо ж залишати світло увімкненим? Те ж саме стосується і процесора. Якщо ним ніхто не користується, навіщо подавати харчування на елементи, що не використовуються, і витрачати електрику? Можна вимкнути їх та заощадити.
С0 є «нульовим» станомелектроживлення: у цьому стані ядро фактично працює, не діє.
РІЗНИЦЯ МІЖ СТАНАМИ БЕЗДІЇ ЯДЕР І ПАКЕТУ
Співпроцесор містить до 60 (або навіть більше) ядер в одному пакеті. Стан бездіяльності ядер (C-стану) діють для кожного ядра: одне з цих 60 ядер може бути в стані C0, тобто ядро працює і не діє, тоді як сусіднє ядро може перебувати в стані глибокої економії електроенергії C6. PC-стани - це стани бездіяльності всього пакета, тобто стану економії електроенергії для всіх 60 ядер та підтримуючих електронних компонентів на кристалі. Як можна здогадатися, щоб перевести пакет у стан PC-6, всі ядра повинні бути в стані С6. Чому? Оскільки пакет має функціональність, що підтримує всі ядра, «відключення» певних електронних компонентів пакета впливає на всі ядра.