Мене цікавлять теоретичні обмеження, можливо, приклади систем з величезною кількістю процесорів.
Мене цікавлять теоретичні обмеження, можливо, приклади систем з величезною кількістю процесорів.
Відповіді:
Щонайменше 2048 року на практиці. Як конкретний приклад, SGI продає свою УФ- систему, яка може використовувати 256 розеток (2048 ядер) та 16 ТБ спільної пам'яті, всі вони працюють під одним ядром. Я знаю, що є принаймні кілька систем, які продаються в цій конфігурації.
За даними SGI:
Altix UV працює з повністю модифікованим Linux, включаючи стандартні дистрибутиви Novell і Red Hat.
це те, що Launchpad повинен сказати про Ubuntu, тому я думаю, це стосується інших:
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.
Це 32 або 64 процесора для x86 та x86_64 відповідно.
Редхат говорить те саме, але в зручній для мене таблиці . Redhat EL6 може робити 32 для x86 або 128 або 4096 процесорних ядер для x86_64.
Ядро x86_64 Linux може обробляти максимум 4096 потоків процесора в одному зображенні системи. Це означає, що з увімкненою гіперрезьбою максимальна кількість процесорних ядер - 2048. Так, є комп'ютери з більш ніж 2048 процесорними ядрами; але вони працюють як кластери, де співпрацюють кілька ядер Linux, пов'язаних з високошвидкісним взаємозв'язком, як правило, тканиною Infiniband.
від самого поточного ядра 3.13, в ~ / arch / x86 / Kconfig:
конфігурація 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.
Оновлення: Для новіших ядер це специфічно для архітектури - наприклад, для 4.15 x86_64 дозволяє встановити NR_CPUS на 8192 за правильних обставин, тоді як 32-бітна рука зупиняється на 32 .
Ця дитина працює 10 368!
Нитки підпорядковуються багатозадачній моделі та схемі управління нитками. Якщо я пам'ятаю правильно, Ginux системи, що базуються на інтелі, використовується в Linux. Ідея полягає в тому, що вона має можливість 8192 ниток при максимальному розмірі. Це за умови, що система використовує gdt для управління потоками. На 32-бітних машинах керування перемиканням задач керується, а на 32 та 64-бітних машинах вектори переривання повинні мати записи gdt. Не впевнений, як це робить, але має бути досягнуто таку ж артикуляцію. Концепції комутації завдань ітератують GDT в моделях задач.
Якщо ви виходите із схеми gdt, ви, ймовірно, можете досягти того, для чого у вас є пам’ять, коли для кожного потоку є рамка стека сторінки, база коду сторінки для потоку та сторінки купі місця. Ви не можете припустити, що у вас є сторінка коду або купа, яка є випадковими змінними. Як правило, для кожного потоку є два кадри стека, один підтримується потоком і один підтримується ядром Linux. Ви додаєте концепцію віртуальної пам’яті про своп-простір, і модель вибухає з води, але це стосується пріоритету потоку ..
Також:
Якщо ви використовуєте Linux в якості контролера на УФ-SGI, а ви використовуєте Bladecenters з нею на власному ядрі 4.15, ви можете використовувати в момент:
4096 Стелажі для клинків. 1 стійка з використанням 1024 Core x 4096 Core. Ця Конфігурація буде в даний момент найвищим Core, що використовується в Linux. Ви можете контролювати всі ядра в Red Hat.