- PVSM.RU - https://www.pvsm.ru -
[1]
/ фото Marco Verch [2] CC BY [3]
По данным одного из провайдеров, дата-центры используют [4] всего 20–40% доступных вычислительных мощностей. При высоких нагрузках этот показатель может достигать 60% [5]. Подобное распределение ресурсов ведет к появлению так называемых «зомби-серверов». Это машины, которые большую часть времени простаивают, впустую расходуя электроэнергию. Сегодня 30% серверов в мире стоят без работы [6], потребляя электричество на $30 млрд в год.
Бороться с неэффективным расходованием вычислительных ресурсов решили в MIT.
Команда инженеров разработала [7] систему балансировки нагрузки на процессоры под названием Shenango. Её цель — мониторить состояние буфера задач и перераспределять «застрявшие» процессы (которые не могут получить процессорное время) на свободные машины.
Shenango представляет собой Linux-библиотеку на языке C с байндингами Rust и C++. Код проекта и тестовые приложения опубликованы в репозитории [8] на GitHub.
Основу решения составляет алгоритм IOKernel, который запускается на выделенном ядре мультипроцессорной системы. Он управляет запросами к CPU с помощью фреймворка DPDK [9], который позволяет приложениям напрямую взаимодействовать с сетевыми устройствами.
IOKernel решает, каким ядрам передать конкретную задачу. Алгоритм также решает, сколько ядер понадобится. Для каждого процесса определяются основные ядра (guaranteed) и дополнительные (burstable) — вторые запускаются в случае резкого увеличения числа запросов к CPU.
Очередь запросов IOKernel организована в виде кольцевого буфера [10]. Каждые пять микросекунд алгоритм проверяет, все ли задачи, назначенные ядру, выполнены. Для этого он сравнивает текущее местоположение «головы» буфера с предыдущей позицией его «хвоста». Если оказывается, что хвост уже был в очереди на момент предыдущей проверки, система отмечает перегрузку буфера и выделяет под процесс дополнительное ядро.
При распределении нагрузки приоритет отдаётся ядрам, на которых такой же процесс выполнялся раньше и частично остался в кэш-памяти, или любым бездействующим ядрам.
Shenango дополнительно использует подход work stealing [11]. Ядра, выделенные для работы одного приложения, следят за количеством задач друг у друга. Если одно ядро заканчивает свой список заданий раньше остальных, то оно «снимает» часть нагрузки с соседей.
По словам [12] инженеров из MIT, Shenango способен обрабатывать пять миллионов запросов за секунду и поддерживать среднее время реакции в 37 микросекунд. Специалисты утверждают, что в некоторых случаях технология способна повысить коэффициент использования процессоров в дата-центрах до 100%. В результате операторы ЦОД смогут экономить на покупке и обслуживании серверов.
Потенциал решения отмечают [7] и специалисты из других университетов. По мнению профессора из корейского института, система из MIT поможет сократить задержки в работе веб-сервисов. Например, она пригодится в работе онлайн-магазинов. В дни распродаж даже секундная задержка загрузки страницы приводит [13] к снижению числа просмотров сайта на 11%. Оперативное распределение нагрузки поможет обслужить больше клиентов.
У технологии пока есть недостатки — она не поддерживает многопроцессорные NUMA [14]-системы, в которых чипы подключены к разным модулям памяти и не «общаются» между собой. В этом случае IOKernel может регулировать работу отдельной группы процессоров, но не все чипы сервера.
/ фото 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] крупные корпорации, и в будущем количество таких инструментов будет только расти.
Автор: ИТ-ГРАДовец
Источник [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
Нажмите здесь для печати.