Ramdriveのメモリ領域を指定する方法

Ramdriveのメモリ領域を指定する方法

私たちはLinuxベースのベンチマーククラスタを確立しています。各ノードはtftpを介して起動し、オペレーティングシステムがローカルRAMドライブにコピーされ、ベンチマークアプリケーションでローカルドライブとして使用されるのと同じRAMドライブであるヘッドレス、ディスクレスマシンになります。私の質問は次のとおりです。

このマシンには2つのCPUがあり、各CPUには独自のメモリスティックがあり、そのメモリスティックに接続する4つのメモリチャネルがあります(メモリスティックは最大メモリスループットのために4つのメモリチップの倍数で満たされます)。 RAMディスクが使用するメモリ領域を制御できない場合は、単一チャネルの1つの領域に作成され、そのチップ上のすべてのメモリを使用できます。これは、アプリケーションが実行されているときにメモリバンクからRAMディスクを取得するCPUで実行されているスレッドの「ローカル」メモリのメモリ帯域幅が、他のCPUのスレッドより25%少ないことを意味します。そうだろう悪い。したがって、RAMディスクが使用するメモリ領域を制御する必要があります。

それともこれは問題ではなく、メモリコントローラが4チャンネルチップ間に連続したメモリアドレスを配置することを信頼できますか?これは、大量のメモリをキャッシュにインポートするときにメモリ帯域幅を最大化するため、意味があります。

私はこれがどのように機能するのかわからず、少し悟りを望んでいました...

ベストアンサー1

RAMディスクサポートを使用していますかtmpfs

その場合は、このパラメータを使用して特定のmpolNUMAノードに割り当てることができます(カーネルではCONFIG_NUMAを有効にする必要があります)。

mount -t tmpfs -o size=32g,mpol=prefer:0 tmpfs /mnt/ramdisk / mnt / ramdiskにインストールされているNUMAノード0にデフォルトの32 GBのRAMディスクが作成されます。

tmpfsのドキュメントは非常に素晴らしいです。https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt

おすすめ記事