私はRHCSAを勉強していますが、いくつかの教育資料で見た文章が混乱しています。
実際の最大RAMはなく、理論的にはRHEL 6では128TBのRAMを実行できます。しかし、これは単なる理論です。 RHEL 6では、Red Hatがサポートする最大RAMは32ビットシステムでは16GB、64ビットシステムでは2TBです。
128TBの理論的限界がどこから出てくるのか説明できますか? RHEL 6が他の最大制限を明確に定義している場合、作者は理論的制限が存在することをどのように知っているのか混乱します。これは64ビットアーキテクチャの理論的な制限ですか?それともここに別の理由があるのでしょうか?
答え1
カーネル文書では、Documentation/x86/x86_64/mm.txt
:
Virtual memory map with 4 level page tables:
0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
2 47バイト = 128TiB
答え2
短い答え
各Linuxプロセスは最大128 TBを処理できます。仮想メモリ。しかし、これはLinuxカーネルの機能を超えています。物理。したがって、この制限は理論的です。
予測可能な「ワーストケース」の使用シナリオに基づいてランダムに選択された可能性があります。
詳細な回答
実際には、ハードウェアが許可するよりも多くのRAMを使用することはできません(48ビット=256TB 一般的な最近では、Linuxカーネルが処理できる物理メモリの量によって制限されます。
たとえば、Intelではx86 64ビットLinux は以下より長く使用できません。64TB物理メモリ(バージョン以降2.6.30、しかしそれ 16TB直前)。 RHEL 6は以下を使用します。2.6.32コア。
64ビットからS390アーキテクチャ、これ同じ制限適用可能です(なぜなら2.6.28)。ただし、32ビットを使用する場合には制限があります。4GBしかし、使用奇妙なトリックコールPAE、あなたは64GB(通常はx86で使用されます)
他の64ビットアーキテクチャはあまり制限がないと仮定します。
レッドハットビュー制限テーブル詳しくは(ありがとうございます。ホイゲンス)。
答え3
仮想メモリと物理揮発性メモリを混同しないでください。前者はCPUアーキテクチャにのみ適用され、揮発性メモリと不揮発性メモリの両方にマッピングされます。 RAMとも呼ばれる後者は、カーネルの観点からCPUアーキテクチャとは無関係でなければなりません。
今日のAMDとIntel x86_64の実装ただ48ビットアドレス指定可能な仮想メモリをサポートします。これは、カーネルがプロセスVMごとに2^48 = 256TiBを処理できることを意味します。
x86_64 アーキテクチャの Linux カーネルは、アドレス指定可能な VM 空間を、ユーザー空間用の 128TiB とカーネル空間用の 128TiB の 2 つの部分に分けます。したがって、理論的には、プロセスは合計128 TiBの仮想メモリを処理できます。
カーネルが処理できる最大の揮発性物理メモリは別の側面ですが、その情報はわかりません。
RHCSA作成者声明の紹介
「実際の最大RAMはありません。理論的には、RHEL 6では128TB RAMを実行できます」という説明の作成者は、誤ったまたは誤って理解されている用語を使用しています。以下は、RHEL 3、4、5、6の機能をまとめたRed Hat Webサイトの表です。。彼らは明示的に「プロセスあたりの最大x86_64仮想アドレス空間[...] 128TB [RHEL 6の場合]」と明示しています。
このページでは、RHEL 6が最大2TB / 64TBのRAM(物理揮発性メモリ)をサポートしていることが示されています。これは、最大2TB RAMで認証されており、理論的には最大64TBまで可能であることを意味すると思います。この点で、SLESははるかに明確です。。
答え4
単に理論的なものに過ぎないもう一つの理由は、実装経験が不足しているからです。
プログラマはしばしば、ハードウェア機能よりもはるかに早く変数のサイズを変更し、カーネルに危険な「リーフ&リスタート」プログラミングが必要ないようにします。この機能を備えたハードウェアは10年以上使用できないためです。
ただし、可変サイズが唯一の制限ではありません。データ構造とそのアルゴリズムには独自の制限があります。 128TBの各4KBページを説明するデータ構造の線形巡回を想像してください。いくつかの明確な答えがあります。 4KBページを使用せず、線形データ構造を使用せず、データ構造に頻繁にアクセスしないでください。ロードを可能な限りハードウェアにオフロードしてください。しかし、私たちが直面するまでは、未知のより微妙なデータ構造+アルゴリズムの制限があります。
私たちは明日の魔法のように128TBのPCを発見し、そのPCからLinuxを起動しようとするとパフォーマンスがひどくなり、おそらくあまりにも悪くて起動しないかもしれません。しかし、アルゴリズムを変更することはマイナーな作業であり、データ構造を変更することはいくつかの作業ですが、まだ広く理解されている変数のサイズを変更するよりもはるかに少ないです。したがって、メモリサイズが増加するにつれて、これらの特性の変化を見ることができる。