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

Understanding Numa Architecture



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

Дизайнът на 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. Различните ядра по -късно ще споделят кеш от ниво 3 от няколко MB, чийто размер нараства значително с течение на времето.

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

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

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

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

  • Поддръжка на Silicon Graphics IRIX за ccNUMA архитектура над 1240 CPU с поредица сървъри Origin.
  • Microsoft Windows 7 и Windows Server 2008 R2 добавиха поддръжка за NUMA архитектура над 64 логически ядра.
  • Версия 2.5 на ядрото на Linux вече съдържаше основна поддръжка на NUMA, която беше допълнително подобрена в следващите версии на ядрото. Версия 3.8 на ядрото на Linux донесе нова NUMA основа, която позволи разработването на по -ефективни NUMA политики в по -късните версии на ядрото [13]. Версия 3.13 на ядрото на Linux донесе многобройни политики, които имат за цел да поставят процес близо до неговата памет, заедно с обработката на случаи, като например споделяне на страници с памет между процесите или използване на прозрачни огромни страници; новите настройки за управление на системата позволяват активиране или деактивиране на балансирането на NUMA, както и конфигурирането на различни параметри за балансиране на NUMA памет [15].
  • И Oracle, и OpenSolaris моделират NUMA архитектура с въвеждането на логически групи.
  • FreeBSD добави начален NUMA афинитет и конфигурация на политика във версия 11.0.

В книгата „Компютърни науки и технологии, Известия на Международната конференция (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)
възел0cpus:0 1 2 3 4 5 6 7 16 17 18 19 двайсет двадесет и едно 22 2. 3
възел0размер:8157MB
възел0Безплатно:88MB
възел1cpus:8 9 10 единадесет 12 13 14 петнадесет 24 25 26 27 28 29 30 31
възел1размер:8191MB
възел1Безплатно:5176MB
разстояния до възли:
възел0 1
0:10 двайсет
1:двайсет 10

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

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

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

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

Заключение

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

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

  1. Сравнете NVIDIA Tesla срещу Radeon Instinct, https://www.itcentralstation.com/products/comparisons/nvidia-tesla_vs_radeon-instinct
  2. Сравнете NVIDIA DGX-1 срещу Radeon Instinct, https://www.itcentralstation.com/products/comparisons/nvidia-dgx-1_vs_radeon-instinct
  3. Кохерентност на кеша, Уикипедия, https://en.wikipedia.org/wiki/Cache_coherence
  4. Подслушване с автобус, Уикипедия, https://en.wikipedia.org/wiki/Bus_snooping
  5. Протоколи за съгласуваност на кеша в многопроцесорни системи, отрепки за отрепки, 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/library/view/understanding-the-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.html
  10. Нуматоп, https://github.com/intel/numatop
  11. Пакет numatop за Debian GNU / Linux, https://packages.debian.org/buster/numatop
  12. Джонатан Кехаяс: Разбиране на неравномерния достъп/архитектура на паметта (NUMA), https://www.sqlskills.com/blogs/jonathan/understanding-non-uniform-memory-accessarchitectures-numa/
  13. Новини за ядрото на Linux за ядро ​​3.8, https://kernelnewbies.org/Linux_3.8
  14. Неравномерен достъп до паметта (NUMA), Уикипедия, https://en.wikipedia.org/wiki/Non-uniform_memory_access
  15. Документация за управление на паметта на Linux, NUMA, https://www.kernel.org/doc/html/latest/vm/numa.html
  16. Пакет numactl за Debian GNU/Linux, https://packages.debian.org/sid/admin/numactl
  17. Пакет numad за Debian GNU/Linux, https://packages.debian.org/buster/numad
  18. Как да разбера дали конфигурацията NUMA е активирана или деактивирана ?, https://www.thegeekdiary.com/centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled/
  19. Афинитет към процесора, Уикипедия, https://en.wikipedia.org/wiki/Processor_affinity

Благодаря ти

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

За авторите

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

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

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