Разумевање НУМА архитектуре

Understanding Numa Architecture



Дизајнирање рачунара је увек компромис. Четири основне компоненте рачунара - централна процесорска јединица (ЦПУ) или процесор, меморија, складишни простор и плоча за повезивање компоненти (систем У/И магистрале) - комбиноване су што је могуће спретније како би се створила машина која је и исплатив и моћан. Процес пројектовања углавном укључује оптимизацију према процесорима (ко-процесори, вишејезгрено подешавање), врсту и количину меморије, складиште (дискови, систем датотека), као и цену. Идеја иза копроцесора и вишејезгрене архитектуре је да се операције дистрибуирају на што више појединачних рачунарских јединица на што је могуће мањем простору и да паралелно извршавање рачунарских упутстава буде доступније и приступачније. Што се тиче меморије, питање је количине или величине коју појединачна рачунарска јединица може да реши и који тип меморије ради са најмањом могућом латенцијом. Складиштење припада спољној меморији, а његове перформансе зависе од врсте диска, система датотека који се користи, нити, протокола преноса, комуникационог материјала и броја прикључених меморијских уређаја.

Дизајн И/О магистрала представља рачунарске артерије и значајно одређује колико и колико брзо се могу разменити подаци између горе наведених појединачних компоненти. Врхунску категорију воде компоненте које се користе у области рачунарства високих перформанси (ХПЦ). Од средине 2020. године, међу савременим представницима ХПЦ-а су Нвидиа Тесла и ДГКС, Радеон Инстинцт и Интел Ксеон Пхи ГПУ производи за убрзање (за упоређивање производа погледајте [1,2]).







Разумевање НУМА

Неуниформни приступ меморији (НУМА) описује архитектуру дељене меморије која се користи у савременим системима са више процеса. НУМА је рачунарски систем састављен од неколико појединачних чворова на такав начин да се збирна меморија дели између свих чворова: сваком ЦПУ -у је додељена сопствена локална меморија и може приступити меморији са других ЦПУ -а у систему [12,7].



НУМА је паметан систем који се користи за повезивање више централних процесорских јединица (ЦПУ) са било којом количином меморије рачунара која је доступна на рачунару. Појединачни НУМА чворови повезани су преко скалабилне мреже (И/О магистрала) тако да ЦПУ може систематски приступити меморији придруженој другим НУМА чворовима.



Локална меморија је меморија коју ЦПУ користи у одређеном НУМА чвору. Страна или удаљена меморија је меморија коју ЦПУ узима са другог НУМА чвора. Израз НУМА ратио описује однос трошкова приступа страној меморији и трошкова приступа локалној меморији. Што је већи однос, већа је и цена, па самим тим и дуже време приступа меморији.





Међутим, потребно је више времена него када тај ЦПУ приступа сопственој локалној меморији. Приступ локалној меморији је велика предност јер комбинује ниско кашњење са великом пропусношћу. Насупрот томе, приступ меморији која припада било ком другом ЦПУ -у има веће кашњење и мање перформансе пропусног опсега.

Осврт уназад: Еволуција мултипроцесора са дељеном меморијом

Франк Деннеманн [8] наводи да савремене системске архитектуре не дозвољавају заиста Униформ Мемори Аццесс (УМА), иако су ови системи посебно дизајнирани за ту сврху. Једноставно речено, идеја паралелног рачунарства била је да има групу процесора који сарађују при израчунавању датог задатка, чиме се убрзава иначе класично секвенцијално рачунање.



Као што је објаснио Франк Деннеманн [8], почетком 1970 -их, потреба за системима који би могли да опслужују више истовремених корисничких операција и прекомерно генерисање података постала је главна уз увођење релационих система база података. Упркос импресивној стопи једнопроцесорских перформанси, вишепроцесорски системи су били боље опремљени да поднесу ово радно оптерећење. Да би се обезбедио економичан систем, заједнички меморијски адресни простор постао је фокус истраживања. Рано су се заговарали системи који користе попречни прекидач, међутим ова сложеност дизајна је повећана заједно са повећањем процесора, што је систем заснован на магистрали учинио привлачнијим. Процесори у систему сабирница [могу] приступити читавом меморијском простору слањем захтева на магистрали, што је врло исплатив начин да се расположива меморија користи што је могуће оптималније.

Међутим, рачунарски системи засновани на магистрали долазе са уским грлом-ограниченом количином пропусног опсега која доводи до проблема са скалабилношћу. Што је више ЦПУ -а додато систему, то је мања пропусност по чвору доступна. Штавише, што је више ЦПУ -а додато, сабирница је дужа и већа је кашњење.

Већина ЦПУ-а је конструисана у дводимензионалној равни. ЦПУ -и су такође морали имати уграђене контролере меморије. Једноставно решење са четири меморијске магистрале (горња, доња, лева, десна) за свако језгро процесора омогућило је пуну доступну пропусност, али то иде само до сада. ЦПУ -и су прилично дуго стагнирали са четири језгре. Додавање трагова изнад и испод омогућило је директне магистрале преко дијагонално супротних ЦПУ -а како су чипови постали 3Д. Следећи логичан корак био је постављање четворојезгарног ЦПУ-а на картицу, која је затим повезана на магистралу.

Данас сваки процесор садржи много језгара са заједничком предмеморијом на чипу и меморијом ван чипа и има променљиве трошкове приступа меморији у различитим деловима меморије на серверу.

Побољшање ефикасности приступа подацима један је од главних циљева савременог дизајна ЦПУ -а. Свако језгро ЦПУ -а је обдарено малим кешом првог нивоа (32 КБ) и већим (256 КБ) кешом нивоа 2. Различита језгра касније ће делити предмеморију нивоа 3 од неколико МБ, чија је величина временом знатно порасла.

Да би се избегли пропусти кеша - захтевање података који се не налазе у кешу - много времена се троши на проналажење правог броја ЦПУ кеша, структура кеширања и одговарајућих алгоритама. Погледајте [8] за детаљније објашњење протокола за кеширање снооп -а [4] и кохеренције кеша [3,5], као и идеје дизајна иза НУМА -е.

Софтверска подршка за НУМА

Постоје две мере оптимизације софтвера које могу побољшати перформансе система који подржава НУМА архитектуру - афинитет према процесору и постављање података. Као што је објашњено у [19], афинитет процесора […] омогућава везивање и одвајање процеса или нити за један ЦПУ или низ ЦПУ -а, тако да ће се процес или нит извршавати само на одређеном ЦПУ -у или ЦПУ -у, а не било који ЦПУ. Израз постављање података односи се на софтверске модификације у којима се код и подаци држе што је могуће ближе у меморији.

Различити оперативни системи повезани са УНИКС-ом и УНИКС-ом подржавају НУМА на следеће начине (листа испод је преузета из [14]):

  • Силицон Грапхицс ИРИКС подршка за ццНУМА архитектуру преко 1240 ЦПУ -а са серијом Оригин сервера.
  • Мицрософт Виндовс 7 и Виндовс Сервер 2008 Р2 додали су подршку за НУМА архитектуру преко 64 логичка језгра.
  • Верзија 2.5 језгра Линука већ је садржавала основну НУМА подршку, која је додатно побољшана у наредним издањима језгра. Верзија 3.8 језгра Линука донела је нову основу НУМА која је омогућила развој ефикаснијих политика НУМА у каснијим издањима језгра [13]. Верзија 3.13 језгра Линука донела је бројне политике које имају за циљ стављање процеса близу његове меморије, заједно са руковањем случајевима, као што је дељење меморијских страница међу процесима или употреба прозирних огромних страница; нове поставке контроле система омогућавају омогућавање или онемогућавање балансирања НУМА, као и конфигурацију различитих параметара балансирања НУМА меморије [15].
  • И Орацле и ОпенСоларис моделирају НУМА архитектуру са увођењем логичких група.
  • ФрееБСД је додао почетни НУМА афинитет и конфигурацију смерница у верзији 11.0.

У књизи Цомпутер Сциенце анд Тецхнологи, Процеедингс оф тхе Интернатионал Цонференце (ЦСТ2016) Нинг Цаи сугерише да је проучавање НУМА архитектуре углавном било усредсређено на врхунско рачунарско окружење и предложио НУМА-свесно Радик партиционисање (НаРП), што оптимизује перформансе дељених кешева у НУМА чворовима ради убрзања апликација пословне интелигенције. Као такав, НУМА представља средину између система дељене меморије (СМП) са неколико процесора [6].

НУМА и Линук

Као што је горе наведено, Линук кернел подржава НУМА од верзије 2.5. И Дебиан ГНУ/Линук и Убунту нуде НУМА подршку за оптимизацију процеса са два софтверска пакета нумацтл [16] и нумад [17]. Уз помоћ наредбе нумацтл можете пописати попис доступних НУМА чворова у вашем систему [18]:

# нумацтл -хардвер
доступан:2чворови(0-1)
чвор0цпус:0 1 2 3 4 5 6 7 16 17 18 19 двадесет двадесет један 22 2. 3
чвор0величина:8157МБ
чвор0бесплатно:88МБ
чвор1цпус:8 9 10 Једанаест 12 13 14 петнаест 24 25 26 27 28 29 30 31
чвор1величина:8191МБ
чвор1бесплатно:5176МБ
растојања чворова:
чвор0 1
0:10 двадесет
1:двадесет 10

НумаТоп је користан алат који је развио Интел за праћење локалитета меморије у току извођења и анализу процеса у НУМА системима [10,11]. Алат може идентификовати потенцијална уска грла перформанси у вези са НУМА-ом и стога помоћи у поновној равнотежи алокације меморије/ЦПУ-а како би се максимизирао потенцијал НУМА система. Види [9] за детаљнији опис.

Сценарији употребе

Рачунари који подржавају НУМА технологију омогућавају свим ЦПУ -има да директно приступе целој меморији - ЦПУ -и ово виде као један, линеарни адресни простор. То доводи до ефикасније употребе 64-битне шеме адресирања, што резултира бржим кретањем података, мањим реплицирањем података и лакшим програмирањем.

НУМА системи су прилично атрактивни за апликације на страни сервера, као што су рударство података и системи за подршку одлучивању. Штавише, писање апликација за игре и софтвер високих перформанси постаје много лакше са овом архитектуром.

Закључак

Закључно, НУМА архитектура се бави скалабилношћу, што је једна од његових главних предности. У НУМА ЦПУ -у, један чвор ће имати већи пропусни опсег или мању латенцију за приступ меморији на истом чвору (на пример, локални ЦПУ захтева приступ меморији истовремено са удаљеним приступом; приоритет је на локалном ЦПУ -у). Ово ће драматично побољшати проток меморије ако су подаци локализовани на одређене процесе (а тиме и процесоре). Недостаци су већи трошкови преноса података са једног процесора на други. Све док се овај случај не дешава превише често, НУМА систем ће надмашити системе са традиционалнијом архитектуром.

Линкови и референце

  1. Упоредите НВИДИА Тесла са Радеон Инстинцт -ом, хттпс://ввв.итцентралстатион.цом/продуцтс/цомпарисонс/нвидиа-тесла_вс_радеон-инстинцт
  2. Упоредите НВИДИА ДГКС-1 са Радеон Инстинцт-ом, хттпс://ввв.итцентралстатион.цом/продуцтс/цомпарисонс/нвидиа-дгк-1_вс_радеон-инстинцт
  3. Кохерентност кеша, Википедија, хттпс://ен.википедиа.орг/вики/Цацхе_цохеренце
  4. Шпијунирање аутобуса, Википедија, хттпс://ен.википедиа.орг/вики/Бус_сноопинг
  5. Протоколи кохеренције кеша у вишепроцесорским системима, Штребери за штребере, хттпс://ввв.геексфоргеекс.орг/цацхе-цохеренце-протоцолс-ин-мултипроцессор-систем /
  6. Рачунарство и технологија - Зборник радова са међународне конференције (ЦСТ2016), Нинг Цаи (ур.), Ворлд Сциентифиц Публисхинг Цо Пте Лтд, ИСБН: 9789813146419
  7. Даниел П. Бовет и Марцо Цесати: Разумевање НУМА архитектуре у Разумевању језгра Линука, 3. издање, О’Реилли, хттпс://ввв.ореилли.цом/либрари/виев/ундерстандинг-тхе-линук/0596005652/
  8. Франк Деннеманн: НУМА Дееп Диве 1. део: Од УМА до НУМА, хттпс://франкденнеман.нл/2016/07/07/нума-дееп-диве-парт-1-ума-нума/
  9. Цолин Иан Кинг: НумаТоп: Алат за праћење система НУМА, хттп://смацкерелофопинион.блогспот.цом/2015/09/нуматоп-нума-систем-мониторинг-тоол.хтмл
  10. Нуматоп, хттпс://гитхуб.цом/интел/нуматоп
  11. Пакет нуматоп за Дебиан ГНУ / Линук, хттпс://пацкагес.дебиан.орг/бустер/нуматоп
  12. Јонатхан Кехаииас: Разумевање неуниформног приступа меморији/архитектура (НУМА), хттпс://ввв.склскиллс.цом/блогс/јонатхан/ундерстандинг-нон-униформ-мемори-аццессарцхитецтуре-нума/
  13. Линук Кернел Невс за Кернел 3.8, хттпс://кернелневбиес.орг/Линук_3.8
  14. Неуједначен приступ меморији (НУМА), Википедија, хттпс://ен.википедиа.орг/вики/Нон-униформ_мемори_аццесс
  15. Линук документација за управљање меморијом, НУМА, хттпс://ввв.кернел.орг/доц/хтмл/латест/вм/нума.хтмл
  16. Пакет нумацтл за Дебиан ГНУ/Линук, хттпс://пацкагес.дебиан.орг/сид/админ/нумацтл
  17. Нумад пакета за Дебиан ГНУ/Линук, хттпс://пацкагес.дебиан.орг/бустер/нумад
  18. Како да сазнам да ли је конфигурација НУМА омогућена или онемогућена ?, хттпс://ввв.тхегеекдиари.цом/центос-рхел-хов-то-финд-иф-нума-цонфигуратион-ис-енаблед-ор-дисаблед/
  19. Афинитет према процесору, Википедиа, хттпс://ен.википедиа.орг/вики/Процессор_аффинити

Хвала вам

Аутори се захваљују Геролду Руппрецхту на подршци приликом припреме овог чланка.

О ауторима

Плакедес Неханда је вишенамјенска, свестрано вођена особа која носи многе шешире, међу којима су планери догађаја, виртуелни асистент, преписивач, као и страствени истраживач, са седиштем у Јоханесбургу, Јужна Африка.

Принц К. Неханда је инжењер инструментације и контроле (метрологија) у Паефлов Метеринг у Харареу, Зимбабве.

Франк Хофманн ради на путу-по могућности из Берлина (Немачка), Женеве (Швајцарска) и Цапе Товн (Јужна Африка)-као програмер, тренер и аутор за часописе попут Линук-Усер и Линук Магазине. Он је такође коаутор књиге о управљању пакетима Дебиан ( хттп://ввв.дпмб.орг ).