Скільки ядер може обробити ядро ​​Linux?


14

Мене цікавлять теоретичні обмеження, можливо, приклади систем з величезною кількістю процесорів.


2
Скільки він може впоратися? або скільки можна впоратися, перш ніж втратити певну вигоду? також яке ядро? Я підозрюю, що ця відповідь дещо змінюється для комп’ютера, зафіксованого для управління суперкомп'ютером. Здається, я згадую, як читав про один екземпляр, використовуючи 4096 процесорів ...
xenoterracide

що встановлено патч, звичайний патчсет не може обробляти 4096 процесорів, але для цього виправлено Linux. (Здається, деякі відповіді IIRC напрошують це зробити)
ксенотеррацид

@xeno Я думаю, що факт, що є навіть набір патчів, який обробляє 4096 процесорів, - це речі, які слід згадати у відповіді.
thepang

Я не пригадую багато чого іншого, інакше я би дав відповідь, я також збільшував її результативність 16? сердечники були обмеженими ... і що певні частини ядра потребували перезапису, який вже почався. але насправді у мене немає цитат, і я не на 100%, тому я не відповідаю.
ксенотеррацид

Відповіді:


18

Щонайменше 2048 року на практиці. Як конкретний приклад, SGI продає свою УФ- систему, яка може використовувати 256 розеток (2048 ядер) та 16 ТБ спільної пам'яті, всі вони працюють під одним ядром. Я знаю, що є принаймні кілька систем, які продаються в цій конфігурації.

За даними SGI:

Altix UV працює з повністю модифікованим Linux, включаючи стандартні дистрибутиви Novell і Red Hat.


11

це те, що 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.


4
arch / x86 / Kconfig каже, що ці CONFIG_NR_CPUSмежі можна підвищити, якщо CONFIG_MAXSMPввімкнено.
ефемієнт

6

Ядро 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 .


SGI Altix UV 1000 (з 2009 року) може мати до 2560 ядер в одному зображенні системи.
СП Аріф Сахарі Wibowo

2

Ця дитина працює 10 368!


2
Я знаю, що це стара публікація, але ви посилаєтесь на кластерний комп'ютер. Питання полягає у запуску одного екземпляра ядра.
frodeborli

1

Нитки підпорядковуються багатозадачній моделі та схемі управління нитками. Якщо я пам'ятаю правильно, Ginux системи, що базуються на інтелі, використовується в Linux. Ідея полягає в тому, що вона має можливість 8192 ниток при максимальному розмірі. Це за умови, що система використовує gdt для управління потоками. На 32-бітних машинах керування перемиканням задач керується, а на 32 та 64-бітних машинах вектори переривання повинні мати записи gdt. Не впевнений, як це робить, але має бути досягнуто таку ж артикуляцію. Концепції комутації завдань ітератують GDT в моделях задач.

Якщо ви виходите із схеми gdt, ви, ймовірно, можете досягти того, для чого у вас є пам’ять, коли для кожного потоку є рамка стека сторінки, база коду сторінки для потоку та сторінки купі місця. Ви не можете припустити, що у вас є сторінка коду або купа, яка є випадковими змінними. Як правило, для кожного потоку є два кадри стека, один підтримується потоком і один підтримується ядром Linux. Ви додаєте концепцію віртуальної пам’яті про своп-простір, і модель вибухає з води, але це стосується пріоритету потоку ..


0

Також:

Якщо ви використовуєте Linux в якості контролера на УФ-SGI, а ви використовуєте Bladecenters з нею на власному ядрі 4.15, ви можете використовувати в момент:

4096 Стелажі для клинків. 1 стійка з використанням 1024 Core x 4096 Core. Ця Конфігурація буде в даний момент найвищим Core, що використовується в Linux. Ви можете контролювати всі ядра в Red Hat.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.