web-dev-qa-db-ja.com

効率のために/ dev / shmをいつどのように使用しますか?

/dev/shmは、通常のファイルシステムでファイルを書き込むよりもどのように効率的ですか?私の知る限り、/dev/shmもHDDのスペースであるため、読み取り/書き込み速度は同じです。

私の問題は、96GBのファイルがあり、64GBのみRAM(+ 64GBスワップ)です。次に、同じプロセスからの複数のスレッドがファイルの小さなランダムチャンク(約1.5MB)を読み取る必要があることです。 。

/dev/shmはこれの良いユースケースですか?
ファイルを/homeから読み取り専用モードで開き、スレッドに渡して必要なランダムチャンクの読み取りを行うよりも高速ですか?

7
ilija139

/dev/shmは使用しません。これは、POSIXCライブラリがPOSIXAPIを介して共有メモリサポートを提供できるようにするために存在します。そうではないので、そこにあるものを突くことができます。

独自のインメモリファイルシステムが必要な場合は、好きな場所にマウントできます。

mount -t tmpfs tmpfs /mnt/tmp、たとえば。

Linux tmpfsは、RAMにのみ存在する一時ファイルシステムです。これは、背後にディスクストレージがないファイルキャッシュを持つことによって実装されます。メモリ不足の状態で、その内容をスワップファイルに書き込みます。スワップファイルが必要ない場合は、ramfsを使用できます。

ファイルの読み取りを効率化するために/dev/shmを使用することをどこで思いついたのかわかりません。それは、それがまったく機能しないためです。

mmapシステムコールを介してメモリマッピングを使用することを考えていたのではないでしょうか。

ここでこの回答を読んでください: https://superuser.com/a/1030777/4642 多くのtmpfs情報をカバーしています。

8
Zan Lynx