Управління живленням та вплив на продуктивність процесорів та обробку SQL
MVP DataPlatform - MCM SQL Server

Якщо я скажу вам ACPI, ви, мабуть, скажете мені, що ми займаємось вдосконаленим управлінням і конфігурацією живлення комп'ютера. Насправді ACPI (Advanced Configuration and Power Interface) - це стандарт, розроблений корпоративними конгломератами, такими як Intel, HP, Toshiba, Phoenix Technologies та Microsoft. Це дозволяє операційній системі надсилати керуючі сигнали на різні периферійні пристрої, щоб їх можна було вимкнути, щоб зменшити загальне енергоспоживання комп'ютера. Серед цих периферійних пристроїв нас зацікавить процесор. З одного боку, ми знаходимо Intel, який забезпечує вдосконалене управління енергією (PPM) безпосередньо в BIOS і який дозволяє контролювати споживання процесора через дві категорії станів: C-State і P-State. З іншого боку, ми знаходимо Microsoft, який дозволяє контролювати ці дві категорії станів з операційної системи за допомогою планів живлення Windows (або схем живлення).
Р-держави та C-держави
Intel пропонує дві категорії процесорних станів, які зменшують споживання енергії. C-держави забезпечують мінімальне споживання процесора, коли процесори перебувають у неактивному стані і не виконують код. Цей тип стану можна налаштувати в BIOS і управляти з операційної системи за допомогою неактивного процесу:
Процесор може переходити через різні перехідні стани (C0 до C6), що ще більше зменшує його енергоспоживання, але одночасно збільшує затримку відгуку процесора. Крім того, державні переходи також можуть бути дорогими з точки зору ефективності.
Тип P-станів стану, навпаки, зменшується поетапно (від P0 до P16) енергоспоживання процесорів, а також їх відповідні потужності шляхом регулювання їх напруги та тактових частот. Можна уявити, що цей тип оптимізації споживання енергії може повною мірою відігравати свою роль в середовищах, де продуктивність не є пріоритетною, або в тих, для яких існують значні періоди бездіяльності, наприклад (автоматична банківська машина, яка чекає взаємодії з користувачем). Однак із SQL сервером це матиме прямий вплив на продуктивність.
Оскільки Windows 7 і Windows Server 2008 R2 ми можемо скористатися планами живлення (я збережу англійську назву в цій публікації), які дають змогу керувати управлінням споживанням енергії комп'ютером (Плани живлення у версіях попередніх версій називаються схемами живлення Windows). Кожен план живлення керує набором властивостей, які безпосередньо контролюють агресивність стану P. Windows 7 і 2008 R2 мають кілька попередньо визначених планів:
- Збалансований (план визначається за замовчуванням при встановленні операційної системи)
- Висока ефективність
- Зберігач енергії
Кожен план визначає діапазони споживання енергії та частоту використання авторизованих процесорів. Наприклад, якщо взяти властивості, що стосуються процесора в Power Plan Power Saver, ми можемо помітити, що процесори можуть використовуватися лише на 75% своєї потужності, а можливо, становитимуть 5% своєї потужності у разі навантаження незначної роботи.
Збалансований план за замовчуванням дозволяє використовувати максимальну потужність процесорів, але вони зможуть працювати на 5% своєї потужності залежно від робочого навантаження. Нарешті, у високоефективному плані живлення використовуються максимальні потужності процесорів незалежно від активності, яка присутня на комп’ютері.
Зменшення споживання енергії на основі активності не є самою корисною справою, але якщо взяти до уваги SQL Server, то можна поставити наступне питання: як операційна система може знати, коли зменшувати енергоспоживання і, отже, потужність процесорів відповідно до навантаження, що надходить від SQL Server? Насправді відповідь знає лише SQL Server. Тому ми можемо опинитися у випадках, коли операційна система зменшить потужність процесорів, тоді як запит, що виконується на сервері SQL, вимагає всієї їх потужності.
Я зіткнувся з цією проблемою з одним із своїх клієнтів деякий час тому після перенесення даних. Новий сервер мав набагато кращу продуктивність, ніж старий, з точки зору процесорів, але, незважаючи на це, ми помітили загальне зниження продуктивності запитів на останні. Проаналізувавши ситуацію, ми швидко зрозуміли, що час запитів процесора збільшився (за допомогою опції SET STATISTICS TIME ON та параметра CPU Time).
Я зміг відтворити цю проблему на своєму комп’ютері за допомогою типового запиту клієнта. Цей, що має наступні характеристики процесора:
- 2 x Intel® Core (TM) i7 CPU M620 з тактовою частотою 2,67 ГГц.
- Увімкнено багатопотоковість: операційна система бачить 4 логічні процесори
- Увімкнено технологію Intel SpeedStep: Ця функція дозволяє динамічно змінювати тактову частоту процесора за запитом програмного забезпечення
Для перегляду використовуваних тактових частот я використовував два інструменти:
- Perfmon, який спочатку постачається корпорацією Майкрософт із об’єктом лічильника ProcessorPerformance
- CPU-Z, який дозволяє генерувати інформацію певної периферії
Почнемо з візуалізації продуктивності процесорів відповідно до використання різних планів живлення:
Ви не мрієте ! Частота використання процесорів становить 1197 МГц. Ми далекі від оголошених специфікацій, тобто 2,67 ГГц. На момент захоплення цього зображення на моєму комп’ютері практично не було активності. Однак швидкість процесорів може коливатися між цією тактовою частотою та максимальною частотою.
Продуктивність приблизно така ж, як Power Plan Balanced, з деякими відмінностями. Раніше ми бачили, що план енергозбереження дозволяє лише обмежене використання потужностей процесора незалежно від навантаження на сервер.
- Висока ефективність
Прийняття цього плану дозволяє використовувати максимальну потужність процесорів.
У наступній таблиці показано вплив планів живлення на час процесора, який використовується одним із типових запитів:
Якщо я візьму за орієнтир план високоефективного живлення, ми побачимо, що прийняття збалансованого та енергозберігаючого планів у моєму випадку збільшує час роботи процесора на 7% та 55%. То яке рішення? Прийняти план високих показників? Я б сказав, що якщо сервер SQL страждає від продуктивності на рівні процесора, можливо, доведеться змінити план, який використовується Windows за замовчуванням, і перевірити конфігурацію PPM в BIOS.
Девід БАРБАРІН (Мікедавем)
SQL Server MVP
Залиште коментар скасувати відповідь.
Ви повинні увійти, щоб написати коментар.