Системата Shenango е планирана за използване в дата центровете.
/ фото
Според данни от един от доставчиците, дата центровете предоставят само 20–40% от наличната изчислителна мощност. При високи натоварвания този показател . Подобно разпределение на ресурсите води до появата на така наречените «зомбита-сервери». Това са машини, които повечето от времето си са неактивни, безцелно похапвайки електрическа енергия. Днес 30% от сървърите в света , консумирайки електрическа енергия на стойност 30 милиарда долара годишно.
Борба с неефективното използване на изчислителни ресурси решиха в MIT.
Екип от инженери системата за баланс на натоварването на процесорите, наречена Shenango. Нейната цел е да наблюдава състоянието на задачите и да преразпределя «забавените» процеси (които не могат да получат време на процесора) на свободни машини.
Как работи Shenango
Shenango представлява Linux библиотека на C с биндинги за Rust и C++. Кодът на проекта и тестовите приложения са публикувани в на GitHub.
Основата на решението съставлява алгоритъм IOKernel, който работи на отделно ядро на мултипроцесорна система. Той управлява заявките към CPU с помощта на фреймуърк , който позволява на приложенията да взаимодействат директно с мрежовите устройства.
IOKernel решава на кои ядра да прехвърли конкретна задача. Алгоритъмът също така определя колко ядра ще са необходими. За всеки процес се определят основни ядра (guaranteed) и допълнителни (burstable) — вторите се активират при рязко повишаване на броя на заявките към CPU.
Опашката на заявките в IOKernel е организирана като . На всеки пет микро секунди алгоритъмът проверява дали всички задачи, назначени на ядро, са изпълнени. За целта той сравнява текущото местоположение на «главата» на буфера с предишната позиция на «опашката». Ако се окаже, че опашката вече е била в опашката по време на предишната проверка, системата отбелязва претоварване на буфера и отделя допълнително ядро за процеса.
При разпределението на натоварването приоритет се дава на ядрата, на които подобен процес е изпълняван преди и частично е останал в кеша, или на всякакви неактивни ядра.

Shenango допълнително използва подхода Ядра, назначени за работа на едно приложение, следят за броя на задачите помежду си. Ако едно ядро завърши списъка си с задачи по-рано от другите, то "сваля" част от натоварването от съседите.
Предимства и недостатъци
По Инженерите от MIT, Shenango е в състояние да обработва пет милиона заявки в секунда и да поддържа средно време за реакция от 37 микросекунди. Специалистите твърдят, че в някои случаи технологията може да увеличи коефицента на използване на процесорите в центровете за данни до 100%. В резултат на това операторите на ЦОД могат да спестят от закупуването и обслужването на сървъри.
Потенциал на решението и специалисти от други университети. Според професор от корейски институт системата от MIT ще помогне за намаляване на забавянията в работата на уеб услугите. Например, тя ще бъде полезна при работа на онлайн магазините. В дните на разпродажби дори секундно закъснение при зареждането на страницата води до намаляване на броя на прегледите на сайта с 11%. Оперативното разпределение на натоварването ще помогне за обслужването на повече клиенти.
Технологията все още има недостатъци - не поддържа многопроцесорни -системи, при които чиповете са свързани с различни модули памет и не "общуват" помежду си. В този случай IOKernel може да регулира работата на отделна група процесори, но не и на всичките чипове на сървъра.

/ фото
Подобни технологии
Сред другите системи за баланс на натоварването на процесорите можем да отличим Arachne. Тя изчислява колко ядра ще са необходими на приложението в момента на стартиране и разпределя процесите съответно. Според оценките на авторите, максималното забавяне на работата на приложението в Arachne е около 10 хиляди микросекунди.
Технологията е реализирана под формата на C++ библиотека за Linux, а нейният изходен код е наличен на .
Още един инструмент-балансировчик - ZygOS. Както и Shenango, технологията използва метода work stealing за переразпределение на процесите. Според данните на авторите на ZygOS, средното забавяне в работата на приложенията при използването на инструмента е около 150 микросекунди, а максималното - около 450 микросекунди. Кодът на проекта също .
Изводи
Съвременните ЦОД продължават да се разширяват, особено тенденцията за нарастване е забележима на пазара на hyperscale дата центрове: в момента в света 430 хипермасштабируемо ЦОД, но вече в близките години броят им може да нарасне с 30%. Поради тази причина технологии за натоварване на процесорите ще бъдат много търсени. Системи, подобни на Shenango, вече сега големи корпорации, и в бъдеще броят на такива инструменти само ще нараства.
Постове от Първия блог за корпоративен IaaS:
Източник: habr.com
