1. ホーム
  2. linux

[解決済み] dev/shmを効率よく使うには、いつ、どのように使えばいいのでしょうか?

2022-03-04 13:53:39

質問

どのように /dev/shm 通常のファイルシステムにファイルを書き込むよりも効率的なのでしょうか?私の知る限りでは /dev/shm もHDD上のスペースなので、読み書きのスピードは同じです。

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

/dev/shm は、良いユースケースなのでしょうか?
から読み取り専用でファイルを開くよりも速くなるのでしょうか? /home そして、必要なランダムチャンクを読み取るためにスレッドに引き継ぐのでしょうか?

どのように解決するのですか?

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

自分専用のインメモリファイルシステムが欲しいなら、好きなところにマウントすればいいのです。

mount -t tmpfs tmpfs /mnt/tmp は、例えば

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

を使うという発想はどこから出てきたんだろう。 /dev/shm というのも、ファイルを読み込む際の効率性を高めるためのもので、それはまったく違うからです。

もしかしたら、メモリマッピングを使おうと考えていたかもしれません。 mmap システムコール?

この回答はこちらからご覧ください。 https://superuser.com/a/1030777/4642 は、tmpfsに関する多くの情報を網羅しています。