Коли ви говорите про продуктивність на сервері, існує кілька різних способів перегляду цього. Там очевидний час відгуку (подібний до затримки мережі) та пропускна здатність (аналогічно пропускній здатності мережі).
Деякі версії Windows Server постачаються із налаштуваннями збалансованої потужності за умовчанням. Як вказував Джефф. Windows 2008 R2 - одна з них. В даний час дуже мало процесора є одноядерними, тому це пояснення стосується майже кожного сервера Windows, на якому ви будете працювати, за винятком одноядерних віртуальних машин. (докладніше про ці пізніше).
Коли активований план збалансованої потужності, центральний процесор намагається придушити назад, яку потужність він використовує. Це робиться шляхом відключення половини процесорних ядер у процесі, відомому як "паркування". Лише половина процесора буде доступна за один раз, тому вона споживає менше енергії під час низького трафіку. Це сама по собі не проблема.
Проблема полягає в тому, що коли розпаковані процесори, ви подвоїли доступні цикли процесора, доступні системі, і раптово врівноважуєте навантаження на систему, приймаючи її (наприклад, від 70% використання до 35% використання. Система дивиться на це, і після того, як обробка трафіку обробляється, вона думає "Ей, я повинен трохи набрати цю назад, щоб зберегти енергію". І так воно і робить.
Ось погана частина. Щоб запобігти нерівномірному розподілу тепла та енергії в ядрах процесора, існує тенденція до паркування процесорів, які не були парковані останнім часом. А для того, щоб це функціонувало належним чином, процесору потрібно передати все з регістрів процесора (кеш-пам'ять L1, L2 та L3) в інше місце (швидше за все, основна пам'ять).
Як гіпотетичний приклад, скажімо, у вас 8-ядерний процесор із C1-C8.
- Активні: C1, C3, C5, C7
- Припарковані: C2, C4, C6, C8
Коли це станеться, всі вони стають активними протягом певного періоду часу, і тоді система буде паркувати їх наступним чином:
- Активний: C2, C4, C6, C8
- Припарковані: C1, C3, C5, C7
Але при цьому є велика кількість накладних витрат, пов’язаних зі змиванням усіх даних з кешу L1-L3, щоб це сталося, щоб не траплялися дивні помилки з програмами, які були видалені з конвеєра процесора.
Ймовірно, офіційна назва для цього є, але я люблю пояснювати це як обробка процесора. В основному процесори витрачають більше часу на зайнятість роботи, переміщуючи дані всередині країни, ніж вони направляють робочі запити.
Якщо у вас є будь-який додаток, якому потрібні низькі затримки для його запитів, вам потрібно відключити налаштування збалансованої потужності. Якщо ви не впевнені, чи це проблема, зробіть наступне:
- Відкрийте "Диспетчер завдань"
- Перейдіть на вкладку "Продуктивність".
- Натисніть "Відкрити монітор ресурсів"
- Виберіть вкладку "CPU"
- Подивіться праворуч у вікно різних процесорів.
Якщо ви побачите, що хтось із них припаркований, ви помітите, що половина паркується в будь-який момент часу, всі загоряться, а потім друга половина припаркована. Він чергується вперед і назад. Таким чином, обробляються системні процесори.
Віртуальні машини: Ця проблема ще гірша, коли ви працюєте з віртуальною машиною, оскільки є додаткові накладні витрати гіпервізора. Взагалі кажучи, для того, щоб VM запускався, апаратному забезпеченню повинен бути доступний проміжок часу для кожного з ядер на кожному часовому відрізку.
Якщо у вас є 16 основних компонентів апаратного забезпечення, ви можете запустити VM, використовуючи більше 16 загальних ядер, але для кожного часового відрізка, до цього часового відрізка будуть доходити лише до 16 віртуальних процесорів, а гіпервізор повинен відповідати всім ядрам для VM в цей часовий відрізок. Її неможливо розкласти по декількох часових зображеннях. (Часовий фрагмент - це по суті набір циклів X процесора. Це може бути 1000 або 100 к.с.)
Наприклад: 16 основних апаратних засобів з 8 ВМ. 6 мають 4 віртуальних процесора (4C), а 2 мають 8 віртуальних процесорів (8C).
Timeslice 1: 4x4C Timeslice 2: 2x8C Timeslice 3: 2x4C + 1x8C Timeslice 4: 1x8C + 2x4C
Те, що гіпервізор не може зробити, це розділити половину розподілу на часовий фрагмент на перші 4 ЦП 8 VCPU VM, а потім на наступний часовий відрізок, а решту подати на інші 4 vCPU цього VM. Це все або нічого протягом відрізка часу.
Якщо ви використовуєте Hyper-V від Microsoft, налаштування управління потужністю можуть бути включені в хост-операційній системі, а значить, вона поширюватиметься до клієнтських систем, тим самим впливаючи на них.
Як тільки ви побачите, як це працює, легко зрозуміти, як використання налаштувань збалансованого управління потужністю викликає проблеми з продуктивністю та млявими серверами. Одне з основних питань полягає в тому, що вхідний запит повинен дочекатися завершення процесу паркування / відпакування процесора до того, як сервер зможе відповісти на вхідний запит, будь то запит до бази даних, запит веб-сервера чи щось інше .
Іноді система буде паркувати або відпаковувати процесори посеред запиту. У цих випадках запит запускається в конвеєр процесора, вивантажується з нього, і тоді інше ядро процесора вибере процес звідти. Якщо це досить потужний запит, це може траплятися кілька разів протягом всього запиту, змінивши те, що повинно було бути 5-секундним запитом до бази даних, на 15-секундний запит до бази даних.
Найголовніше, що ви побачите від використання збалансованої потужності, - це те, що системи будуть повільніше реагувати на кожен ваш запит.