物理メモリが次のようにランクに分割されていることがわかりました (メモリ インターリービング)。
rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ...
rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ...
rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-...
rank3: [1536KB-2048KB] [3584KB-4096KB] ...
Linux カーネルはこれらのインターリーブ メモリを取得します。そのため、Linux カーネルから見える物理メモリは連続していません。これについて間違っている場合は修正してください。
私はコースの作業のために Linux カーネルのソース コードを見てきました。
sysfs (/sys/devices/system/memory) の作成中に、Linux カーネルは、これらの使用可能な物理メモリの特定のサイズ (私のシステムでは 128 MB) のセクション (memory0、memory1、...) を作成します。これらのディレクトリの状態ファイルを使用して、セクションをオフライン/オンラインにすることができます。(メモリーホットプラグ)
そのため、これらのセクションで表される物理メモリは分散しています。そのため、セクションのいずれかをオフラインにすると、散在するメモリが使用できなくなります。
これらのセクションが連続したメモリを参照するようにしたい。このようなもの :
memory0 : 0-128 MB
memory1 : 128-256 MB
....
そのため、一部のセクションをオフラインにすると、そのセクションに関連する連続した物理メモリが使用できなくなります。では、Linux カーネルに物理メモリをインターリーブではなく連続として認識させることはできますか?
これについて間違っている場合は修正してください。
ありがとうございました。