解決策 1:
vmtouch は、この仕事に適したツールのようです。
ハイライト:
- キャッシュされているディレクトリの量を問い合わせる
- キャッシュされているファイルの量を照会します (また、どのページ、グラフィック表現も)
- キャッシュにファイルを読み込む
- キャッシュからファイルを削除
- キャッシュ内のファイルをロック
- デーモンとして実行
vmtouch マニュアル
編集: 質問で尋ねられた使用法は、vmtouch Hompage の例 5 に記載されています
Example 5
Daemonise and lock all files in a directory into physical memory:
vmtouch -dl /var/www/htdocs/critical/
EDIT2: コメントに記載されているように、git リポジトリが利用可能になりました。
解決策 2:
これは、vmtouch Virtual Memory Toucher を使用しても可能です。
このツールを使用すると、Linux システムのファイルシステム キャッシュを制御できます。 VM キャッシュ サブシステム内の特定のファイルまたはディレクトリを強制またはロックしたり、それを使用して VM に含まれるファイル/ディレクトリの部分を確認したりできます。
How much of the /bin/ directory is currently in cache?
$ vmtouch /bin/
Files: 92
Directories: 1
Resident Pages: 348/1307 1M/5M 26.6%
Elapsed: 0.003426 seconds
または...
Let's bring the rest of big-dataset.txt into memory...
$ vmtouch -vt big-dataset.txt
big-dataset.txt
[OOo oOOOOOOO] 6887/42116
[OOOOOOOOo oOOOOOOO] 10631/42116
[OOOOOOOOOOOOOOo oOOOOOOO] 15351/42116
[OOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 19719/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 24183/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 28615/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 31415/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 36775/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 39431/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] 42116/42116
Files: 1
Directories: 0
Touched Pages: 42116 (164M)
Elapsed: 12.107 seconds
解決策 3:
ファイルシステムのキャッシュに何かを入れるための貧乏人のトリックは、単純に cat して /dev/null にリダイレクトすることです。
解決策 4:
Linux は、可能な限り多くのディスク IO をメモリにキャッシュします。これは、キャッシュとバッファ メモリの統計です。適切なものを保管する場合、おそらくあなたよりもうまくいくでしょう。
ただし、どうしてもデータをメモリに保存したい場合は、tmpfs または ramfs を使用して RAM ドライブを作成できます。違いは、tmpfs はブロック デバイスが使用しているメモリのみを使用するため、ramfs は要求したすべてのメモリを割り当てることです。私の記憶は少しさびていますが、できるはずです:
# mount -t ramfs ram /mnt/ram
または
# mount -t tmpfs tmp /mnt/tmp
次に、データをディレクトリにコピーします。明らかに、マシンの電源を切るか、そのパーティションをアンマウントすると、データが失われます。
解決策 5:
2.6 カーネルのスワッピング機能とページ キャッシュ機能について詳しく読んだ後、「fcoretools」を見つけました。これは 2 つのツールで構成されています;
- fincore:アプリケーションがコア メモリに保存したページ数を明らかにします
- fadvise:コア メモリ (ページ キャッシュ) を操作できます。
(他の誰かがこれを興味深いと思った場合に備えて、ここに投稿します)