/dev/shm
は、通常のファイルシステムでファイルを書き込むよりもどのように効率的ですか?私の知る限り、/dev/shm
もHDDのスペースであるため、読み取り/書き込み速度は同じです。
私の問題は、96GBのファイルがあり、64GBのみRAM(+ 64GBスワップ)です。次に、同じプロセスからの複数のスレッドがファイルの小さなランダムチャンク(約1.5MB)を読み取る必要があることです。 。
/dev/shm
はこれの良いユースケースですか?
ファイルを/home
から読み取り専用モードで開き、スレッドに渡して必要なランダムチャンクの読み取りを行うよりも高速ですか?
/dev/shm
は使用しません。これは、POSIXCライブラリがPOSIXAPIを介して共有メモリサポートを提供できるようにするために存在します。そうではないので、そこにあるものを突くことができます。
独自のインメモリファイルシステムが必要な場合は、好きな場所にマウントできます。
mount -t tmpfs tmpfs /mnt/tmp
、たとえば。
Linux tmpfs
は、RAMにのみ存在する一時ファイルシステムです。これは、背後にディスクストレージがないファイルキャッシュを持つことによって実装されます。メモリ不足の状態で、その内容をスワップファイルに書き込みます。スワップファイルが必要ない場合は、ramfs
を使用できます。
ファイルの読み取りを効率化するために/dev/shm
を使用することをどこで思いついたのかわかりません。それは、それがまったく機能しないためです。
mmap
システムコールを介してメモリマッピングを使用することを考えていたのではないでしょうか。
ここでこの回答を読んでください: https://superuser.com/a/1030777/4642 多くのtmpfs情報をカバーしています。