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