Linuxカーネルはいくつのコアを処理できますか?


13

おそらく、膨大な数のCPUを備えたシステムの例など、理論的な限界に興味があります。


1
いくつまで処理できますか?利益を失う前に何個まで処理できますか?また、どのカーネル?スーパーコンピューターを実行するようにパッチを適用したコンピューターでは、この答えが多少変わると思います。私は... 4096個のプロセッサを使用して、単一のインスタンスについて読んで思い出しているようだ
xenoterracide

どのパッチセットか、通常のパッチセットは4096プロセッサを処理できませんが、Linuxはそれを行うためにパッチされています。(IIRCいくつかの答えはそれができることを示唆しているようです)
xenoterracide

@xeno 4096個のプロセッサを処理するパッチセットさえあるという事実は、回答で言及されるべきものだと思います。
シェパン

それ以上のことは思い出せませんが、そうでないと答えます。彼女のパフォーマンスも16を超えていますか?コアは限られていました...そしてカーネルの特定の部分はすでに始まっていた書き直しを必要としていました。しかし、実際には引用はなく、100%でもないので、答えていません。
xenoterracide

回答:


17

実際には少なくとも2048。具体的な例として、SGIはUVシステムを販売しています。UVシステムは256ソケット(2,048コア)と16TBの共有メモリを使用でき、すべて単一のカーネルで実行されます。この構成で販売されているシステムが少なくともいくつかあることを知っています。

SGIによると:

Altix UVは、NovellとRed Hatの両方からの標準ディストリビューションを含む、完全に変更されていないLinuxを実行します。


10

これは、ランチパッド 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.

これは、x86およびx86_64でそれぞれ32または64 CPUです。

Redhatは同じことを言っていますが、管理しやすい表にしています。Redhat EL6は、x86では32、x86_64では128または4096 CPUコアを実行できます。


4
arch / x86 / Kconfigは、有効にCONFIG_NR_CPUSするとこれらの制限を引き上げることができると言いますCONFIG_MAXSMP
一時的な

6

x86_64 Linuxカーネルは、単一のシステムイメージで最大4096のプロセッサスレッドを処理できます。これは、ハイパースレッディングが有効になっている場合、プロセッサコアの最大数が2048であることを意味します。はい。2048を超えるプロセッサコアを備えたコンピュータがあります。ただし、これらは、通常はInfinibandファブリックである高速インターコネクトで接続された複数のLinuxカーネルが連携するクラスターとして実行されます。

〜/ arch / x86 / Kconfigの最新のカーネル3.13から:

構成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個のコアを持つことができます。
SPアリフサハリウィボボ

2

この赤ちゃんは10,368を実行します!


これは古い投稿であることは知っていますが、クラスターコンピューターにリンクしています。問題は、単一のカーネルインスタンスを実行することです。
frodeborli

1

スレッドは、マルチタスクモデルおよびスレッド管理スキームの主観です。私が正しく覚えていれば、IntelベースのシステムのGdtはLinuxで使用されます。これは、最大サイズで8192スレッドの可能性があるという考えです。これは、システムがgdtを使用してスレッドを管理していることを前提としています。32ビットマシンではタスクスイッチングが管理され、32ビットマシンと64ビットマシンの割り込みベクターにはgdtエントリが必要です。どのように腕がそれを行うかはわかりませんが、同じ調音を達成する必要があります。タスク切り替えの概念は、タスクモデルでGDTを繰り返します。

gdtスキームから抜け出せば、スレッドごとにページスタックフレーム、スレッドのページコードベース、およびヒープスペースのページがあるときに、メモリがあるものに到達できると考えられます。ランダム変数であるコードまたはヒープのページがあると想定することはできません。通常、各スレッドには2つのスタックフレームがあり、1つはスレッドによって維持され、もう1つはLinuxカーネルによって維持されます。スワップスペースの仮想メモリの概念を追加すると、モデルは水面から吹き飛ばされますが、それはスレッドの優先順位に関するものです。


0

また:

LinuxをUV SGIの制御として使用していて、Bladecentersを4.15カーネルで使用している場合、Momentで使用できます。

4096ブレードラック。1024コアx 4096コアを使用する1ラック。この構成は、Linuxで使用する最高のCoreの瞬間になります。Red Hatですべてのコアを制御できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.