おそらく、膨大な数のCPUを備えたシステムの例など、理論的な限界に興味があります。
おそらく、膨大な数のCPUを備えたシステムの例など、理論的な限界に興味があります。
回答:
これは、ランチパッドが 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コアを実行できます。
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で停止します。
この赤ちゃんは10,368を実行します!
スレッドは、マルチタスクモデルおよびスレッド管理スキームの主観です。私が正しく覚えていれば、IntelベースのシステムのGdtはLinuxで使用されます。これは、最大サイズで8192スレッドの可能性があるという考えです。これは、システムがgdtを使用してスレッドを管理していることを前提としています。32ビットマシンではタスクスイッチングが管理され、32ビットマシンと64ビットマシンの割り込みベクターにはgdtエントリが必要です。どのように腕がそれを行うかはわかりませんが、同じ調音を達成する必要があります。タスク切り替えの概念は、タスクモデルでGDTを繰り返します。
gdtスキームから抜け出せば、スレッドごとにページスタックフレーム、スレッドのページコードベース、およびヒープスペースのページがあるときに、メモリがあるものに到達できると考えられます。ランダム変数であるコードまたはヒープのページがあると想定することはできません。通常、各スレッドには2つのスタックフレームがあり、1つはスレッドによって維持され、もう1つはLinuxカーネルによって維持されます。スワップスペースの仮想メモリの概念を追加すると、モデルは水面から吹き飛ばされますが、それはスレッドの優先順位に関するものです。