NUMA

Разбиране на NUMA архитектурата

Разбиране на NUMA архитектурата
Проектирането на компютри винаги е компромис. Четирите основни компонента на компютъра - централният процесор (CPU) или процесор, паметта, паметта и платката за свързване на компонентите (I / O bus система) - се комбинират възможно най-умно, за да се създаде машина, която е едновременно рентабилен и мощен. Процесът на проектиране включва най-вече оптимизация към процесори (копроцесори, многоядрена настройка), тип и обем памет, памет (дискове, файлова система), както и цена.Идеята на копроцесорите и многоядрената архитектура е да се разпределят операции на колкото се може повече единични изчислителни единици в възможно най-малкото пространство и да се направи паралелно изпълнение на изчислителните инструкции по-достъпно и достъпно. По отношение на паметта става въпрос за количеството или размера, които могат да бъдат адресирани от отделния изчислителен блок и кой тип памет работи с възможно най-ниската латентност. Съхранението принадлежи на външната памет и неговата производителност зависи от типа на диска, използваната файлова система, резби, протокол за прехвърляне, комуникационна тъкан и броя на свързаните устройства с памет.

Дизайнът на I / O шините представлява компютърните артерии и значително определя колко и колко бързо могат да се обменят данни между отделните компоненти, изброени по-горе. Най-добрата категория се води от компоненти, използвани в областта на високопроизводителните изчисления (HPC). Към средата на 2020 г. сред съвременните представители на HPC са Nvidia Tesla и DGX, Radeon Instinct и Intel Xeon Phi GPU-базирани ускорителни продукти (вж. [1,2] за сравнение на продукти).

Разбиране на NUMA

Неравномерният достъп до паметта (NUMA) описва архитектура на споделена памет, използвана в съвременните многопроцесорни системи. NUMA е изчислителна система, съставена от няколко единични възла по такъв начин, че съвкупната памет да се споделя между всички възли: „на всеки процесор е присвоена собствена локална памет и може да има достъп до паметта от други процесори в системата“ [12,7].

NUMA е интелигентна система, използвана за свързване на множество централни процесори (CPU) към всяко количество компютърна памет, налична на компютъра. Единичните NUMA възли са свързани през мащабируема мрежа (I / O шина), така че процесорът може систематично да осъществява достъп до паметта, свързана с други NUMA възли.

Локалната памет е паметта, която процесорът използва в определен NUMA възел. Чужда или отдалечена памет е паметта, която процесорът взема от друг NUMA възел. Терминът NUMA съотношение описва съотношението на разходите за достъп до чужда памет към разходите за достъп до локална памет. Колкото по-голямо е съотношението, толкова по-голяма е цената и следователно толкова по-дълго е необходимо за достъп до паметта.

Въпреки това отнема повече време, отколкото когато този процесор има достъп до собствената си локална памет. Достъпът до локална памет е основно предимство, тъй като съчетава ниска латентност и висока честотна лента. За разлика от това, достъпът до памет, принадлежаща на който и да е друг процесор, има по-висока латентност и по-ниска производителност на честотната лента.

Поглед назад: Еволюция на мултипроцесорите със споделена памет

Франк Денеман [8] заявява, че съвременните системни архитектури не позволяват наистина унифициран достъп до паметта (UMA), въпреки че тези системи са специално разработени за тази цел. Просто казано, идеята на паралелните изчисления беше да има група процесори, които си сътрудничат за изчисляване на дадена задача, като по този начин ускоряват иначе класическото последователно изчисление.

Както беше обяснено от Франк Денеман [8], в началото на 70-те години на миналия век „необходимостта от системи, които могат да обслужват множество едновременни потребителски операции и прекомерно генериране на данни, стана основна“ с въвеждането на релационни системи от бази данни. „Въпреки впечатляващата скорост на еднопроцесорната производителност, многопроцесорните системи бяха по-добре оборудвани за справяне с това натоварване. За да се осигури рентабилна система, общото адресно пространство на паметта стана фокус на изследванията. В началото се застъпваха системи, използващи напречен превключвател, но с тази сложност на дизайна, мащабирана заедно с увеличаването на процесорите, което направи системата, базирана на шина, по-привлекателна. Процесорите в шинна система [могат] да получат достъп до цялото пространство на паметта, като изпращат заявки по шината, много рентабилен начин за максимално оптимално използване на наличната памет.”

Компютърните системи, базирани на шина, обаче идват със затруднение - ограниченото количество честотна лента, което води до проблеми с мащабируемостта. Колкото повече процесори се добавят към системата, толкова по-малка е честотната лента на възел. Освен това, колкото повече процесори се добавят, толкова по-дълга е шината и в резултат на това е по-висока латентността.

Повечето процесори са конструирани в двумерна равнина. Процесорите също трябваше да имат вградени контролери за памет. Лесното решение да имате четири шини памет (отгоре, отдолу, отляво, отдясно) към всяко ядро ​​на процесора позволи пълната налична честотна лента, но това отива само досега. Процесорите застояха с четири ядра за значително време. Добавянето на следи отгоре и отдолу позволява директни шини към диагонално противоположните процесори, тъй като чиповете стават 3D. Поставянето на четириядрен процесор на карта, която след това се свърза към шина, беше следващата логична стъпка.

Днес всеки процесор съдържа много ядра с общ кеш в чипа и памет извън чипа и има променливи разходи за достъп до паметта в различни части на паметта в сървъра.

Подобряването на ефективността на достъпа до данни е една от основните цели на съвременния дизайн на процесора. Всяко ядро ​​на процесора беше снабдено с малък кеш от първо ниво (32 KB) и по-голям (256 KB) кеш от ниво 2. По-късно различните ядра ще споделят кеш от ниво от няколко MB, чийто размер значително нараства с времето.

За да се избегнат пропуски в кеша - искане на данни, които не са в кеша - много време за изследване се отделя за намиране на точния брой кешове на процесора, структури за кеширане и съответни алгоритми. Вижте [8] за по-подробно обяснение на протокола за кеширане snoop [4] и кохерентност на кеша [3,5], както и идеите за дизайн зад NUMA.

Софтуерна поддръжка за NUMA

Има две мерки за оптимизация на софтуера, които могат да подобрят производителността на система, поддържаща архитектура NUMA - афинитет на процесора и разположение на данни. Както е обяснено в [19], „афинитет на процесора [...] позволява свързването и развързването на процес или нишка с един процесор или диапазон от процесори, така че процесът или нишката ще се изпълняват само на определения процесор или процесори, а отколкото всеки процесор.„Терминът„ разположение на данни “се отнася до софтуерни модификации, при които кодът и данните се съхраняват възможно най-близо в паметта.

Различните операционни системи UNIX и UNIX поддържат NUMA по следните начини (списъкът по-долу е взет от [14]):

В книгата „Компютърни науки и технологии, Сборник от международната конференция (CST2016)“ Нинг Цай предполага, че изследването на архитектурата NUMA е било фокусирано главно върху изчислителната среда от висок клас и е предложило NUMA-наясно Radix Partitioning (NaRP), което оптимизира производителността на споделени кешове в NUMA възли за ускоряване на приложенията за бизнес разузнаване. Като такъв, NUMA представлява посредник между системите със споделена памет (SMP) с няколко процесора [6].

NUMA и Linux

Както беше посочено по-горе, ядрото на Linux поддържа NUMA от версия 2.5. Както Debian GNU / Linux, така и Ubuntu предлагат поддръжка на NUMA за оптимизация на процеса с двата софтуерни пакета numactl [16] и numad [17]. С помощта на командата numactl можете да изброите списъка на наличните NUMA възли във вашата система [18]:

# numactl - хардуер
на разположение: 2 възли (0-1)
възел 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
размер на възел 0: 8157 MB
възел 0 безплатно: 88 MB
възел 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
размер на възел 1: 8191 MB
възел 1 безплатно: 5176 MB
разстояния от възли:
възел 0 1
0: 10 20
1: 20 10

NumaTop е полезен инструмент, разработен от Intel за наблюдение на местоположението на паметта по време на работа и анализиране на процеси в NUMA системи [10,11]. Инструментът може да идентифицира потенциални недостатъци на производителността, свързани с NUMA, и по този начин да помогне за балансиране на разпределението на паметта / процесора, за да увеличи максимално потенциала на NUMA система. Вижте [9] за по-подробно описание.

Сценарии за използване

Компютрите, които поддържат технологията NUMA, позволяват на всички процесори да имат директен достъп до цялата памет - процесорите виждат това като едно линейно адресно пространство. Това води до по-ефективно използване на 64-битовата схема за адресиране, което води до по-бързо движение на данни, по-малко репликация на данни и по-лесно програмиране.

NUMA системите са доста привлекателни за сървърни приложения, като например извличане на данни и системи за подкрепа на решения. Освен това писането на приложения за игри и софтуер с висока производителност става много по-лесно с тази архитектура.

Заключение

В заключение, архитектурата NUMA адресира мащабируемостта, което е едно от основните й предимства. В NUMA CPU един възел ще има по-висока честотна лента или по-ниска латентност за достъп до паметта на същия този възел (e.ж., локалният процесор иска достъп до паметта едновременно с отдалечения достъп; приоритетът е на локалния процесор). Това драстично ще подобри пропускателната способност на паметта, ако данните са локализирани в определени процеси (и по този начин процесори). Недостатъците са по-високите разходи за преместване на данни от един процесор в друг. Докато този случай не се случва твърде често, система NUMA ще надминава системите с по-традиционна архитектура.

Връзки и справки

  1. Сравнете NVIDIA Tesla vs. Radeon Instinct, https: // www.itcentralstation.com / products / сравнения / nvidia-tesla_vs_radeon-instinct
  2. Сравнете NVIDIA DGX-1 срещу. Radeon Instinct, https: // www.itcentralstation.com / products / сравнения / nvidia-dgx-1_vs_radeon-instinct
  3. Кохерентност на кеша, Уикипедия, https: // en.wikipedia.org / wiki / Cache_coherence
  4. Шумване на автобус, Уикипедия, https: // en.wikipedia.org / wiki / Bus_snooping
  5. Протоколи за съгласуваност на кеша в многопроцесорни системи, Geeks за отрепки, https: // www.geeksforgeeks.org / cache-coherence-protocols-in-multiprocessor-system /
  6. Компютърни науки и технологии - Сборник с доклади от Международната конференция (CST2016), Ning Cai (Ed.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Даниел П. Бовет и Марко Чезати: Разбиране на архитектурата на NUMA в Разбиране на ядрото на Linux, 3-то издание, O'Reilly, https: // www.oreilly.com / библиотека / преглед / разбиране-на-linux / 0596005652 /
  8. Франк Денеман: NUMA Deep Dive Част 1: От UMA до NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-deep-dive-part-1-uma-numa /
  9. Колин Иън Кинг: NumaTop: Инструмент за наблюдение на системата NUMA, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitoring-tool-tool.html
  10. Numatop, https: // github.com / intel / numatop
  11. Numatop на пакета за Debian GNU / Linux, https: // пакети.debian.org / buster / numatop
  12. Джонатан Кехаяс: Разбиране на неравномерния достъп / архитектура на паметта (NUMA), https: // www.sqlskills.com / блогове / Джонатан / разбиране-не-еднакво-памет-достъпархитектури-нума /
  13. Новини за ядрото на Linux за ядро ​​3.8, https: // kernelnewbies.org / Linux_3.8
  14. Неравномерен достъп до паметта (NUMA), Wikipedia, https: // en.wikipedia.org / wiki / Uniform_memory_access
  15. Документация за управление на паметта на Linux, NUMA, https: // www.ядро.org / doc / html / latest / vm / numa.html
  16. Пакет numactl за Debian GNU / Linux, https: // пакети.debian.org / sid / admin / numactl
  17. Пакет номер за Debian GNU / Linux, https: // пакети.debian.org / buster / numad
  18. Как да разбера дали конфигурацията на NUMA е активирана или деактивирана?, https: // www.thegeekdiary.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled /
  19. Афинитет на процесора, Wikipedia, https: // en.wikipedia.org / wiki / Processor_affinity

Благодаря ти

Авторите биха искали да благодарят на Геролд Руппрехт за подкрепата при подготовката на тази статия.

Относно авторите

Plaxedes Nehanda е мултиквалифициран, самоуправляващ се универсален човек, който носи много шапки, сред които е организатор на събития, виртуален асистент, транскриптор, както и запален изследовател, базиран в Йоханесбург, Южна Африка.

Принц К. Неханда е инженер по измерване и контрол (метрология) в Paeflow Metering в Хараре, Зимбабве.

Франк Хофман работи по пътя - за предпочитане от Берлин (Германия), Женева (Швейцария) и Кейптаун (Южна Африка) - като разработчик, обучител и автор на списания като Linux-User и Linux Magazine. Той е и съавтор на книгата за управление на пакети Debian (http: // www.dpmb.организация).

Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...