Новий балансувальник навантаження на CPU від MIT

Систему Shenango планують використовувати у дата-центрах.

Новий балансувальник навантаження на CPU від MIT
/ фото Марко Верх CC BY

За даними одного з провайдерів, дата-центри використовують лише 20–40% доступних обчислювальних потужностей. При високих навантаженнях цей показник може досягати 60%. Подібний розподіл ресурсів веде до появи про «зомбі-серверів». Це машини, які більшу частину часу простоюють, марно витрачаючи електроенергію. Сьогодні 30% серверів у світі стоять без роботиспоживаючи електрику на $30 млрд на рік.

Боротися з неефективним витрачанням обчислювальних ресурсів вирішили у MIT.

команда інженерів розробила систему балансування навантаження на процесори під назвою Shenango. Її мета - моніторити стан буфера завдань і перерозподіляти процеси, що «застрягли» (які не можуть отримати процесорний час) на вільні машини.

Як працює Shenango

Shenango є Linux-бібліотекою мовою C з байндингами Rust і C++. Код проекту та тестові додатки опубліковані в репозиторії на GitHub.

Основу рішення становить алгоритм IOKernel, який запускається виділеному ядрі мультипроцессорной системи. Він керує запитами до CPU за допомогою фреймворку ДПДК, який дозволяє програмам безпосередньо взаємодіяти з мережевими пристроями.

IOKernel вирішує, яким ядрам передати конкретне завдання. Алгоритм також вирішує, скільки ядер знадобиться. Для кожного процесу визначаються основні ядра (guaranteed) та додаткові (burstable) – другі запускаються у разі різкого збільшення числа запитів до CPU.

Черга запитів IOKernel організована у вигляді кільцевого буфера. Щоп'ять мікросекунд алгоритм перевіряє, чи всі завдання, призначені ядру, виконані. Для цього він порівнює поточне місце розташування «голови» буфера з попередньою позицією його «хвоста». Якщо виявляється, що хвіст вже був у черзі на момент попередньої перевірки, система відзначає перевантаження буфера та виділяє під процес додаткове ядро.

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

Новий балансувальник навантаження на CPU від MIT

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

Гідності й недоліки

За словами інженерів з MIT, Shenango здатний обробляти п'ять мільйонів запитів за секунду та підтримувати середній час реакції у 37 мікросекунд. Фахівці стверджують, що у деяких випадках технологія здатна підвищити коефіцієнт використання процесорів у дата-центрах до 100%. В результаті оператори ЦОД зможуть заощаджувати на купівлі та обслуговуванні серверів.

Потенціал рішення зазначають та фахівці з інших університетів. На думку професора з корейського інституту, система MIT допоможе скоротити затримки в роботі веб-сервісів. Наприклад, вона стане в нагоді в роботі онлайн-магазинів. У дні розпродажів навіть секундна затримка завантаження сторінки наводить до зниження кількості переглядів на 11%. Оперативний розподіл навантаження допоможе обслужити більше клієнтів.

У технології поки є недоліки - вона не підтримує багатопроцесорні NUMA-системи, в яких чіпи підключені до різних модулів пам'яті і не спілкуються між собою. У цьому випадку IOKernel може регулювати роботу окремої групи процесорів, але не всі серверні чіпи.

Новий балансувальник навантаження на CPU від MIT
/ фото Тім Рекманн CC BY

Аналогічні технології

Серед інших систем балансування навантаження на процесори можна назвати Arachne. Вона розраховує, скільки ядер знадобиться додатку в момент його запуску, і розподіляє процеси відповідно до цього показника. За оцінками авторів, максимальна затримка роботи програми Arachne становить близько 10 тис. мікросекунд.

Технологія реалізована у вигляді бібліотеки C++ для Linux, а її вихідний код є GitHub.

Ще один інструмент-балансувальник - ZygOS. Як і Shenango, технологія використовує для перерозподілу процесів метод work stealing. За даними авторів ZygOS, середня затримка в роботі програм при використанні інструменту становить близько 150 мікросекунд, а максимальна - близько 450 мікросекунд. Код проекту також знаходиться у відкритому доступі.

Висновки

Сучасні ЦОД продовжують розширюватися, особливо тенденція до збільшення помітна на ринку hyperscale дата-центрів: зараз у світі існує 430 гіпермасштабованих ЦОДу, але вже найближчими роками їх кількість може збільшитися на 30%. Тому технології балансування навантаження на процесори будуть дуже потрібні. Системи, подібні до Shenango, вже зараз впроваджують великі корпорації, і в майбутньому кількість таких інструментів тільки зростатиме.

Пости з Першого блогу про корпоративний IaaS:

Джерело: habr.com

Додати коментар або відгук