Система распределения нагрузки на процессоры Shenango — как она работает

Технологии
Павел Игнатьев
19.08.2019
Количество просмотров
4593
Говорим о балансировщике нагрузки от инженеров MIT, который планируют использовать в ЦОД. В статье — о принципах работы и возможностях решения.

Цель разработки

Аналитики одного из крупных облачных провайдеров говорят, что мировые ЦОД используют треть имеющихся у них вычислительных ресурсов. В исключительных случаях этот показатель может вырастать до 60%. Из-за неэффективного расходования мощностей в машинных залах появляются так называемые серверы-зомби. Они не выполняют полезную работу (находятся в состоянии «комы») и лишь впустую расходуют электричество. По данным Uptime Institute, без работы стоит около 10 млн серверов (это 30% всех машин). На поддержание их работоспособности ежегодно уходит 30 млрд долларов.

Инженеры из Массачусетского технологического института (MIT) решили исправить ситуацию. Они разработали балансировщик нагрузки, который в теории повысит эффективность использования ресурсов процессоров до 100%. Система получила название Shenango.

Как работает балансировщик

Shenango — это Linux-библиотека на языке программирования C (есть биндинги на Rust и C++). Она мониторит буфер задач CPU и распределяет процессы между свободными ядрами.

В основе системы лежит алгоритм IOKernel. Он запускается на отдельном ядре процессора и управляет запросами к CPU, которые поступают по сетевому интерфейсу NIC. Для этих целей IOKernel использует фреймворк DPDK (Data Plane Development Kit). Фреймворк дает приложениям возможность «общаться» с сетевыми картами напрямую.

Когда процессору поступает новая задача, IOKernel самостоятельно выбирает, какому ядру (или ядрам) ее передать. При этом для каждого процесса выделяются основные ядра (guaranteed) и вспомогательные (burstable) — последние подключаются только в том случае, если количество запросов резко возрастает.

Алгоритм проверяет буфер задач с интервалом в 5 мкс. Он ищет «застрявшие» процессы, которые CPU уже долгое время не может обработать. Если таковые обнаруживаются, они сразу же назначаются свободным ядрам (или другим серверам в дата-центре). Приоритет отдается ядрам, на которых уже выполнялся аналогичный процесс и часть информации о котором осталась в кэше.

Чтобы повысить эффективность балансировки, Shenango также использует метод work stealing. Ядра, работающие с одним приложением, автоматически снимают друг с друга часть нагрузки, если выполняют свои задачи раньше остальных.

Общую схему работы алгоритма IOKernel и системы Shenango можно представить следующим образом:

Общая схема работы алгоритма IOKernel и системы Shenango

Код проекта и примеры приложений вы можете найти в официальном репозитории на GitHub.

Возможности

Разработчики говорят, что Shenango способен обрабатывать 5 млн запросов в секунду. Среднее время реакции при этом составляет 37 мкс. Эксперты ИТ-индустрии отмечают, что система поможет оптимизировать работу веб-приложений, например онлайн-магазинов. По статистике, секундная задержка при загрузке страницы снижает количество просмотров на 11%, что в дни распродаж может быть критично. Эффективное распределение нагрузки поможет обслужить большее количество клиентов.

Сейчас инженеры из MIT работают над устранением недостатков и расширением функциональности своего решения. Пока что Shenango не умеет работать с многопроцессорными NUMA-системами. В них чипы подключены к различным модулям памяти и не могут взаимодействовать друг с другом напрямую. Такой подход усложняет распределение нагрузки: IOKernel может контролировать работу отдельного кластера процессоров, но не все устройства сервера.

Кто еще разрабатывает балансировщики нагрузки на CPU

Не только в MIT занимаются разработкой систем распределения нагрузки на процессоры. В качестве еще одного примера можно привести систему Arachne — это библиотека C++ для Linux (код есть на GitHub, документацию по API можно найти на официальном сайте). Arachne рассчитывает, сколько ядер понадобится конкретному приложению, и выделяет необходимое количество при запуске соответствующего процесса.

Кто еще разрабатывает балансировщики нагрузки на CPU/ фото Brian Kostiuk Unsaplsh

Еще одним примером балансировщика может служить ZygOS — специализированная операционная система, которая использует структуры данных с общей памятью, NIC с несколькими очередями и межпроцессорные прерывания для распределения нагрузки между ядрами. Как и Shenango (в отличие от Arachne), решение также использует подход work stealing. Код проекта можно найти на GitHub.

Современные дата-центры становятся все крупнее. В мире уже построено более четырехсот гипермасштабируемых ЦОД. В ближайшее время их число вырастет еще на 30%. Технологии балансировки нагрузки позволят эффективнее расходовать вычислительные ресурсы. Поэтому решения подобные Shenango, ZygOS и Arachne будут становиться все более востребованными — уже сейчас их внедряют крупные корпорации.

Что еще почитать в нашем блоге по теме:

Средняя оценка: 0, всего оценок: 0
Поделиться

Только полезные материалы в нашей рассылке

Ошибка подписки

Похожие статьи

Тенденции
Какие новые вычислительные системы могут появиться в ЦОД
11.07.2019
Количество просмотров
2152

Какие новые вычислительные системы могут появиться в ЦОД

Рассказываем, какие концепции вычислений будущего уже выдвинуты и вовсю развиваются: от компьютеров на основе ДНК до квантовых и нейроморфных машин.
Новости рынка
Вышел новый релиз VMware PowerCLI 6.5.2
12.09.2017
Количество просмотров
2076

Вышел новый релиз VMware PowerCLI 6.5.2

Четыре месяца назад VMware сообщила о выходе PowerCLI 6.5.1 – обновленном интерфейсе для администрирования виртуальной инфраструктуры через PowerShell. А в августе этого года представила релиз 6.5.2, который включает в себя несколько улучшений. Изменения коснулись следующих аспектов:
Технологии
Новая функциональность в VMware vSphere 6.7
23.08.2018
Количество просмотров
7007

Новая функциональность в VMware vSphere 6.7

19 сентября 2018 года заканчивается поддержка vSphere 5.5., актуальная на данный момент версия гипервизора VMware, на который можно обновиться vSphere 6.7. Данный релиз доступен для установки уже более 3 месяцев и доказал свою стабильность и надежность, поэтому мы рекомендуем выбирать для апгрейда именно его.

Ваше обращение приняли

Скоро наш менеджер свяжется с вами.
А пока вы можете изучить интересные материалы в нашем блоге.

Подписка оформлена

Скоро отправим вам уведомление о новых материалах.