W jądrze Linuksa dokumentacja CONFIG_NUMA
mówi:
Enable NUMA (Non Uniform Memory Access) support.
he kernel will try to allocate memory used by a CPU on the
local memory controller of the CPU and add some more
NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.
Mam procesor Intel Core i7, ale AFAICT ma tylko jeden węzeł NUMA:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node 0
0: 10
Jaki jest więc cel CONFIG_NUMA=y
, kiedy i7 ma tylko jeden węzeł NUMA?
źródło
CONFIG_NUMA
docore i7
?Po pierwsze, zauważ, że Intel Core i7 jest tylko oznaczeniem marketingowym, a zwrot Intel Core i7 (lub nowszy) jest bardzo niejasny. Co to może znaczyć?
Teksty
Kconfig
pomocy jądra systemu Linux wspominające o Intel Core 7i , a następnie poprawione do Intel Core i7 , zostały wykonane w listopadzie 2008 roku. Dziennik zatwierdzeń brzmi:Może w uzasadniony sposób odnosić się tylko do procesorów Intel Core i7 wydanych lub ogłoszonych według specyfikacji do tego czasu. Byłyby to procesory Bloomfield oparte na mikroarchitekturze Nehalem , które przeniosły kontroler pamięci z mostka północnego na procesor (co AMD zrobiła w 2003 roku z Opteron / AMD64) i wprowadziły QuickPath Interconnect / QPI (jako zawieszenie HyperTransport AMD) do wzajemnego połączenia CPU / CPU i CPU / IOH (IO hub, ex-Northbridge).
Procesory Bloomdale i7 były pierwszymi wpisami w nowym schemacie nazewnictwa Core i {3,5,7} . Kiedy więc napisano ten tekst na temat Linuksa, i7 nie odnosiło się konkretnie do Core i7 w przeciwieństwie do i5 (pierwszy w 09/2009) lub i3 (pierwszy w 01/2010), ale najprawdopodobniej do nowej mikroarchitektury Nehalem z zintegrowany kontroler pamięci i QPI.
Istnieje informacja prasowa firmy Intel z 11/2008 na temat i7 ( Intel wprowadza najszybszy procesor na świecie ), która stwierdza, że procesor Core i7 ponad dwukrotnie zwiększa przepustowość pamięci poprzednich platform Intel „Extreme” , ale w ogóle nie wspomina o NUMA .
Wydaje mi się, że NUMA nie ma znaczenia dla komputerów stacjonarnych, nawet tych „ekstremalnych”.
NUMA ma znaczenie dla drogich serwerów, które mają kilka gniazd procesora (nie tylko kilka rdzeni na jednym gnieździe) z dedykowanymi liniami dostępu do pamięci fizycznej (nie tylko jednego kontrolera pamięci), dzięki czemu każdy procesor ma swoją dedykowaną pamięć lokalną, która jest „bliżej” niż pamięć innych procesorów. (Pomyśl o 8 gniazdach, 64 rdzeniach, 256 GB pamięci RAM). NUMA oznacza, że procesor może również uzyskać dostęp do pamięci zdalnej (pamięci lokalnej innego procesora) oprócz własnej pamięci lokalnej, aczkolwiek za wyższą cenę. NUMA to synteza architektury pamięci współużytkowanej, takiej jak SMP, w której cała pamięć jest jednakowo dostępna dla wszystkich rdzeni oraz architektury pamięci rozproszonej, takiej jak MPP (Massively Parallel Processing), która daje każdemu węzłowi dedykowany blok pamięci. Jest to MPP, ale wygląda jak SMP dla aplikacji.
Płyty główne do komputerów stacjonarnych nie mają podwójnych gniazd, a procesory Intel do komputerów stacjonarnych, w tym ekstremalne wersje i7, nie mają dodatkowego łącza QPI do konfiguracji z dwoma gniazdami.
Zobacz artykuł QPI z Wikipedii, aby zobaczyć, jak QPI jest istotny dla NUMA:
Sposób, w jaki procesor Intel Nehalem na płycie serwera z wieloma gniazdami zapewnia dostęp do pamięci nielokalnej, odbywa się za pośrednictwem QPI. Również w artykule na temat NUMA :
Sprawdź ten raport z 11/2008, aby zobaczyć, czy Intel wyłączył jedno z dwóch łączy QPI na i7, wyłączając w ten sposób konfigurację podwójnego gniazda, gdzie obowiązuje NUMA:
Odchodzę więc od pytania dotyczącego wyników badań Google… Pytasz, dlaczego doktorzy Linuxa zalecili włączenie go pod koniec 2008 roku? Nie jestem pewien, czy to pytanie ma poprawną odpowiedź… Musielibyśmy zapytać pisarza. Włączenie NUMA nie przynosi korzyści użytkownikom procesorów na pulpicie, ale też nie wyrządza im znaczących szkód, jednocześnie pomagając użytkownikom korzystającym z wielu gniazd, więc dlaczego nie? To mogło być uzasadnienie. Stwierdzono, że znalazło to odzwierciedlenie w dyskusji na temat wyłączania NUMA w narzędziu do śledzenia Arch Linux ( FS # 31187 - [linux] - wyłącz NUMA w plikach konfiguracyjnych ).
Autor dokumentu mógł również pomyśleć o potencjale NUMA architektury Nehalem, którego jedynymi przedstawicielami podczas pisania dokumentu były procesory Core i7 11/2008 (920, 940, 965); pierwsze układy Nehalem, dla których NUMA naprawdę miałoby sens, to prawdopodobnie procesory Xeon Q1 / 2009 z podwójnym łączem QPI, takie jak Xeon E5520 .
źródło
Myślę, że użycie
--show
przełącznika może mieć większy sens:Możesz więc kontrolować korzystanie z physcpubind w następujący sposób:
Ograniczyłoby to aplikację
myapp
do pierwszych 2 rdzeni procesora. Mój system to i5 z 4 rdzeniami.Referencje
źródło
Badałem to samo na komputerze stacjonarnym, budując własne jądro. Zdecydowałem się wyłączyć NUMA po wielu badaniach. Mój procesor to Core i7 3820, który ma 8 procesorów z HT. Ta strona pomogła mi podjąć decyzję.
wyłącz NUMA z plików konfiguracyjnych
Podsumowując, NUMA jest opłacalne tylko wtedy, gdy masz więcej niż 1 gniazdo procesora (niezależnie od rdzeni). Moc obliczeniowa jest bardzo niewielka na 1 komputerze z gniazdem procesora, nawet z wieloma rdzeniami, ale jest to prawie niezauważalne, więc większość dystrybucji pozostawia to włączone, ponieważ zapewni ogromną korzyść serwerom i maszynom z więcej niż 1 gniazdem.
źródło
Na komputerze z co najmniej jednym procesorem NUMA jest całkowicie bezużyteczny. Nie krępuj się wyłączyć go we własnym jądrze.
Zawsze możesz kontrolować wiązanie CPU za pomocą zestawu zadań (1) .
źródło