Interesują mnie teoretyczne ograniczenia, być może przykłady systemów z ogromną liczbą procesorów.
Interesują mnie teoretyczne ograniczenia, być może przykłady systemów z ogromną liczbą procesorów.
Odpowiedzi:
Co najmniej 2048 w praktyce. Jako konkretny przykład, SGI sprzedaje swój system UV , który może wykorzystywać 256 gniazd (2048 rdzeni) i 16 TB pamięci współdzielonej, wszystkie działające pod jednym jądrem. Wiem, że w tej konfiguracji sprzedano co najmniej kilka systemów.
Według SGI:
Altix UV działa całkowicie niezmodyfikowany Linux, w tym standardowe dystrybucje zarówno Novell, jak i Red Hat.
oto, co Launchpad ma do powiedzenia na temat Ubuntu, więc myślę, że dotyczy to innych:
1.Intel x86:
Maximum CPUs: 32 (including logical CPUs)
Maximum memory: 64GB
Maximum filesize: 8TB
Maximum filesystem size (ext3) 16TB
Maximum per-process virtual address space: 4GB
2.AMD64/EM64T:
Maximum CPUs: 64
Maximum memory: 128GB
Maximum filesize: 8TB
Maximum filesystem size (ext3): 16TB
Maximum per-process virtual address space: N/A
These are standard max limitations whereas Linux cluster systems can scale up to 1024 CPU's.
To jest 32 lub 64 procesory odpowiednio dla x86 i x86_64.
Redhat mówi to samo, ale w przyjaznym dla zarządu stole . Redhat EL6 może wykonać 32 dla rdzeni x86 lub 128 lub 4096 rdzeni dla x86_64.
CONFIG_NR_CPUS
limity te można zwiększyć, jeśli CONFIG_MAXSMP
jest włączone.
Jądro Linux x86_64 może obsłużyć maksymalnie 4096 wątków procesora w jednym obrazie systemowym. Oznacza to, że przy włączonej hiperwątkowości maksymalna liczba rdzeni procesora wynosi 2048. Tak, są komputery z więcej niż 2048 rdzeniami procesorów; ale działają one jako klastry, w których współpracuje kilka jąder Linuksa, połączone szybkim interkonektem, zazwyczaj tkaniną Infiniband.
z najnowszego jądra 3.13 w ~ / arch / x86 / Kconfig:
config NR_CPUS
---help---
This allows you to specify the maximum number of CPUs which this
kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
supported value is 4096, otherwise the maximum value is 512. The
minimum value which makes sense is 2.
This is purely to save memory - each supported CPU adds
approximately eight kilobytes to the kernel image.
Aktualizacja: w nowszych jądrach jest to specyficzne dla architektury - na przykład 4.15 x86_64 pozwala ustawić NR_CPUS na 8192 w odpowiednich okolicznościach, podczas gdy 32-bitowe ramię zatrzymuje się na 32 .
To dziecko ma 10 368 punktów!
Wątki są subiektywne dla modelu wielozadaniowości i schematu zarządzania wątkami. Gdt systemów opartych na inteligencji jest używany w systemie Linux, o ile dobrze pamiętam. Chodzi o to, że ma możliwość 8192 wątków w maksymalnym rozmiarze. Zakładając, że system używa gdt do zarządzania wątkami. Na komputerach 32-bitowych przełączanie zadań jest zarządzane, a na komputerach 32- i 64-bitowych wektory przerwań muszą mieć wpisy gdt. Nie jestem pewien, jak robi to ramię, ale należy osiągnąć tę samą artykulację. Koncepcje przełączania zadań powtarzają GDT w modelach zadań.
Jeśli wyjdziesz ze schematu gdt, prawdopodobnie osiągniesz to, co masz w pamięci, kiedy masz, dla każdego wątku, ramkę stosu stron, bazę kodu strony dla wątku i stronę przestrzeni sterty. Nie możesz założyć, że masz stronę kodu lub sterty, która jest zmiennymi losowymi. Zasadniczo istnieją dwie ramki stosu dla każdego wątku, jedna obsługiwana przez wątek, a druga obsługiwana przez jądro Linuksa. Dodajesz koncepcje pamięci wirtualnej dla przestrzeni wymiany, a model jest wydmuchiwany z wody, ale chodzi o priorytet wątku.
Również:
Jeśli używasz Linuksa jako Kontroli na SGI UV i używasz z nim Bladecenters na własnym jądrze 4.15, możesz użyć na chwilę:
4096 Stojaki na ostrza. 1 stojak z wykorzystaniem 1024 rdzeni x 4096 rdzeni. Ta konfiguracja będzie w chwili najwyższej rdzenia używanego pod Linuksem. Możesz kontrolować wszystkie rdzenie w Red Hat.