За даними одного з провайдерів, дата-центри використовують лише 20–40% доступних обчислювальних потужностей. При високих навантаженнях цей показник може досягати 60%. Подібний розподіл ресурсів веде до появи про «зомбі-серверів». Це машини, які більшу частину часу простоюють, марно витрачаючи електроенергію. Сьогодні 30% серверів у світі стоять без роботиспоживаючи електрику на $30 млрд на рік.
Боротися з неефективним витрачанням обчислювальних ресурсів вирішили у MIT.
команда інженерів розробила систему балансування навантаження на процесори під назвою Shenango. Її мета - моніторити стан буфера завдань і перерозподіляти процеси, що «застрягли» (які не можуть отримати процесорний час) на вільні машини.
Як працює Shenango
Shenango є Linux-бібліотекою мовою C з байндингами Rust і C++. Код проекту та тестові додатки опубліковані в репозиторії на GitHub.
Основу рішення становить алгоритм IOKernel, який запускається виділеному ядрі мультипроцессорной системи. Він керує запитами до CPU за допомогою фреймворку ДПДК, який дозволяє програмам безпосередньо взаємодіяти з мережевими пристроями.
IOKernel вирішує, яким ядрам передати конкретне завдання. Алгоритм також вирішує, скільки ядер знадобиться. Для кожного процесу визначаються основні ядра (guaranteed) та додаткові (burstable) – другі запускаються у разі різкого збільшення числа запитів до CPU.
Черга запитів IOKernel організована у вигляді кільцевого буфера. Щоп'ять мікросекунд алгоритм перевіряє, чи всі завдання, призначені ядру, виконані. Для цього він порівнює поточне місце розташування «голови» буфера з попередньою позицією його «хвоста». Якщо виявляється, що хвіст вже був у черзі на момент попередньої перевірки, система відзначає перевантаження буфера та виділяє під процес додаткове ядро.
При розподілі навантаження пріоритет надається ядрам, на яких такий самий процес виконувався раніше і частково залишився в кеш-пам'яті, або будь-яким бездіяльним ядрам.
Shenango додатково використовує підхід крадіжка роботи. Ядра, виділені для роботи однієї програми, стежать за кількістю завдань один в одного. Якщо одне ядро закінчує свій список завдань раніше за інші, то воно «знімає» частину навантаження із сусідів.
Гідності й недоліки
За словами інженерів з MIT, Shenango здатний обробляти п'ять мільйонів запитів за секунду та підтримувати середній час реакції у 37 мікросекунд. Фахівці стверджують, що у деяких випадках технологія здатна підвищити коефіцієнт використання процесорів у дата-центрах до 100%. В результаті оператори ЦОД зможуть заощаджувати на купівлі та обслуговуванні серверів.
Потенціал рішення зазначають та фахівці з інших університетів. На думку професора з корейського інституту, система MIT допоможе скоротити затримки в роботі веб-сервісів. Наприклад, вона стане в нагоді в роботі онлайн-магазинів. У дні розпродажів навіть секундна затримка завантаження сторінки наводить до зниження кількості переглядів на 11%. Оперативний розподіл навантаження допоможе обслужити більше клієнтів.
У технології поки є недоліки - вона не підтримує багатопроцесорні NUMA-системи, в яких чіпи підключені до різних модулів пам'яті і не спілкуються між собою. У цьому випадку IOKernel може регулювати роботу окремої групи процесорів, але не всі серверні чіпи.
Серед інших систем балансування навантаження на процесори можна назвати Arachne. Вона розраховує, скільки ядер знадобиться додатку в момент його запуску, і розподіляє процеси відповідно до цього показника. За оцінками авторів, максимальна затримка роботи програми Arachne становить близько 10 тис. мікросекунд.
Технологія реалізована у вигляді бібліотеки C++ для Linux, а її вихідний код є GitHub.
Ще один інструмент-балансувальник - ZygOS. Як і Shenango, технологія використовує для перерозподілу процесів метод work stealing. За даними авторів ZygOS, середня затримка в роботі програм при використанні інструменту становить близько 150 мікросекунд, а максимальна - близько 450 мікросекунд. Код проекту також знаходиться у відкритому доступі.
Висновки
Сучасні ЦОД продовжують розширюватися, особливо тенденція до збільшення помітна на ринку hyperscale дата-центрів: зараз у світі існує 430 гіпермасштабованих ЦОДу, але вже найближчими роками їх кількість може збільшитися на 30%. Тому технології балансування навантаження на процесори будуть дуже потрібні. Системи, подібні до Shenango, вже зараз впроваджують великі корпорації, і в майбутньому кількість таких інструментів тільки зростатиме.