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

Технологии
Павел Игнатьев
19.08.2019
Количество просмотров
4816
Говорим о балансировщике нагрузки от инженеров 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
Поделиться

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

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

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

Истории успеха
Крупный российский ритейлер TOY.RU использует облако «ИТ-ГРАД» для размещения бизнес-критичных систем
17.03.2020
Количество просмотров
4843

Крупный российский ритейлер TOY.RU использует облако «ИТ-ГРАД» для размещения бизнес-критичных систем

Фантастический мир, где сбывается все самое невероятное, открывается не только в сказках, но и в повседневной жизни. Вместе с TOY.RU – одним из крупнейших розничных и интернет-магазинов игрушек, волшебство возможно каждый день. Компания предлагает широкий ассортимент товаров для детей и входит в число передовых ритейлеров, использующих современные технологии. Для каких задач TOY.RU использует облако и каких удалось добиться результатов, расскажем в сегодняшнем материале.
Процессы
Как проверить облачную платформу, чек лист «ИТ-ГРАД»
08.04.2020
Количество просмотров
3898

Как проверить облачную платформу, чек лист «ИТ-ГРАД»

Надежная инфраструктура не должна иметь единой точки отказа. В сегодняшней статье мы расскажем, как удаленно и со стороны аппаратного комплекса провести испытания и убедиться в высоком уровне доступности облака. Каждый этап тестирования мы снабдим описанием теоретически ожидаемого результата и фактическим итогом тестирования облачной платформы. Все способы взяты из личной практики наших специалистов. Поехали!
Безопасность
Персональные данные в облаках: декларация соответствия или аттестат
28.01.2021
Количество просмотров
6931

Персональные данные в облаках: декларация соответствия или аттестат

Достаточно большое количество B2C-компаний сталкиваются с необходимостью обработки персональных данных и соответствия требованиям регуляторов. Вариантов много: можно найти подходящий ЦОД и разместиться в колокейшн или выбрать провайдера с необходимым облачным сервисом.

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

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

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

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