- PVSM.RU - https://www.pvsm.ru -

Новый балансировщик нагрузки на CPU от MIT

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

Новый балансировщик нагрузки на CPU от MIT - 1 [1]
/ фото Marco Verch [2] CC BY [3]

По данным одного из провайдеров, дата-центры используют [4] всего 20–40% доступных вычислительных мощностей. При высоких нагрузках этот показатель может достигать 60% [5]. Подобное распределение ресурсов ведет к появлению так называемых «зомби-серверов». Это машины, которые большую часть времени простаивают, впустую расходуя электроэнергию. Сегодня 30% серверов в мире стоят без работы [6], потребляя электричество на $30 млрд в год.

Бороться с неэффективным расходованием вычислительных ресурсов решили в MIT.

Команда инженеров разработала [7] систему балансировки нагрузки на процессоры под названием Shenango. Её цель — мониторить состояние буфера задач и перераспределять «застрявшие» процессы (которые не могут получить процессорное время) на свободные машины.

Как работает Shenango

Shenango представляет собой Linux-библиотеку на языке C с байндингами Rust и C++. Код проекта и тестовые приложения опубликованы в репозитории [8] на GitHub.

Основу решения составляет алгоритм IOKernel, который запускается на выделенном ядре мультипроцессорной системы. Он управляет запросами к CPU с помощью фреймворка DPDK [9], который позволяет приложениям напрямую взаимодействовать с сетевыми устройствами.

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

Очередь запросов IOKernel организована в виде кольцевого буфера [10]. Каждые пять микросекунд алгоритм проверяет, все ли задачи, назначенные ядру, выполнены. Для этого он сравнивает текущее местоположение «головы» буфера с предыдущей позицией его «хвоста». Если оказывается, что хвост уже был в очереди на момент предыдущей проверки, система отмечает перегрузку буфера и выделяет под процесс дополнительное ядро.

При распределении нагрузки приоритет отдаётся ядрам, на которых такой же процесс выполнялся раньше и частично остался в кэш-памяти, или любым бездействующим ядрам.

Новый балансировщик нагрузки на CPU от MIT - 2

Shenango дополнительно использует подход work stealing [11]. Ядра, выделенные для работы одного приложения, следят за количеством задач друг у друга. Если одно ядро заканчивает свой список заданий раньше остальных, то оно «снимает» часть нагрузки с соседей.

Достоинства и недостатки

По словам [12] инженеров из MIT, Shenango способен обрабатывать пять миллионов запросов за секунду и поддерживать среднее время реакции в 37 микросекунд. Специалисты утверждают, что в некоторых случаях технология способна повысить коэффициент использования процессоров в дата-центрах до 100%. В результате операторы ЦОД смогут экономить на покупке и обслуживании серверов.

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

У технологии пока есть недостатки — она не поддерживает многопроцессорные NUMA [14]-системы, в которых чипы подключены к разным модулям памяти и не «общаются» между собой. В этом случае IOKernel может регулировать работу отдельной группы процессоров, но не все чипы сервера.

Новый балансировщик нагрузки на CPU от MIT - 3
/ фото Tim Reckmann [15] CC BY [3]

Аналогичные технологии

Среди других систем балансировки нагрузки на процессоры можно выделить Arachne. Она рассчитывает, сколько ядер понадобится приложению в момент его запуска, и распределяет процессы в соответствии с этим показателем. По оценкам авторов, максимальная задержка работы приложения в Arachne составляет около 10 тыс. микросекунд.

Технология реализована в виде библиотеки C++ для Linux, а её исходный код есть на GitHub [16].

Ещё один инструмент-балансировщик — ZygOS. Как и Shenango, технология использует для перераспределения процессов метод work stealing. По данным авторов ZygOS, средняя задержка в работе приложений при использовании инструмента составляет около 150 микросекунд, а максимальная — около 450 микросекунд. Код проекта также находится в открытом доступе [17].

Выводы

Современные ЦОД продолжают расширяться, Особенно тенденция к увеличению заметна на рынке hyperscale дата-центров: сейчас в мире существует [18] 430 гипермасштабируемых ЦОДа, но уже в ближайшие годы их число может увеличится на 30%. По этой причине технологии балансировки нагрузки на процессоры будут очень востребованы. Системы, подобные Shenango, уже сейчас внедряют [19] крупные корпорации, и в будущем количество таких инструментов будет только расти.


Посты из Первого блога о корпоративном IaaS:

Автор: ИТ-ГРАДовец

Источник [27]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/mit/313825

Ссылки в тексте:

[1] Image: https://habr.com/ru/company/it-grad/blog/447058/

[2] Marco Verch: https://www.flickr.com/photos/30478819@N08/45481817492/

[3] CC BY: https://creativecommons.org/licenses/by/2.0/

[4] используют: https://arxiv.org/pdf/1808.02919.pdf

[5] может достигать 60%: https://vita.mcafee.cc/PDF/EconPublicCloud.pdf

[6] стоят без работы: https://habr.com/ru/company/it-grad/blog/310630/

[7] разработала: http://news.mit.edu/2019/shenango-data-center-efficiency-0221

[8] репозитории: https://github.com/shenango/shenango

[9] DPDK: https://en.wikipedia.org/wiki/Data_Plane_Development_Kit

[10] кольцевого буфера: https://en.wikipedia.org/wiki/Circular_buffer

[11] work stealing: https://en.wikipedia.org/wiki/Work_stealing

[12] словам: https://techxplore.com/news/2019-02-allocates-time-sensitive-cores-quick-user-response.html

[13] приводит: https://www.shopify.com/enterprise/black-friday-ecommerce

[14] NUMA: https://ru.wikipedia.org/wiki/Non-Uniform_Memory_Access

[15] Tim Reckmann: https://www.flickr.com/photos/foto_db/33508397006/

[16] GitHub: https://github.com/PlatformLab/Arachne

[17] находится в открытом доступе: https://github.com/ix-project/zygos

[18] существует: https://www.telecomasia.net/content/apac-leads-growth-hyperscale-data-center-rollout-2018

[19] внедряют: https://medium.com/coinmonks/maximizing-cpu-resource-utilization-on-servers-fcbbb7908e1c

[20] Как повысить энергоэффективность дата-центра: https://iaas-blog.it-grad.ru/proizvoditelnost/kak-povysit-energoeffektivnost-data-centra/

[21] Что нужно знать о PCI DSS: обзор стандарта: https://iaas-blog.it-grad.ru/novosti/chto-nuzhno-znat-o-pci-dss-obzor-standarta/

[22] Мир до и после: как изменилась жизнь с наступлением DNS Flag Day: https://iaas-blog.it-grad.ru/tendencii/mir-do-i-posle-kak-izmenilas-zhizn-s-nastupleniem-dns-flag-day/

[23] Как IaaS помогает развивать бизнес: три задачи, которые решит облако: https://iaas-blog.it-grad.ru/tendencii/kak-iaas-pomogaet-razvivat-biznes-tri-zadachi-kotorye-reshit-oblako/

[24] Тестирование дисковой системы в облаке: основы и советы: https://iaas-blog.it-grad.ru/proizvoditelnost/testirovanie-diskovoj-sistemy-v-oblake/

[25] 9 полезных советов для плавного перехода в облако: https://iaas-blog.it-grad.ru/tendencii/9-poleznyx-sovetov-dlya-plavnogo-perexoda-v-oblako/

[26] IaaS: Первые шаги после аренды облачной инфраструктуры: https://iaas-blog.it-grad.ru/funkcionalnost/iaas-pervye-shagi-posle-arendy-oblachnoj-infrastruktury/

[27] Источник: https://habr.com/ru/post/447058/?utm_source=habrahabr&utm_medium=rss&utm_campaign=447058