GNU/Linux >> Linux の 問題 >  >> Linux

Linux 上のファイルを RAM にキャッシュ/プリロードする

解決策 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:コア メモリ (ページ キャッシュ) を操作できます。

(他の誰かがこれを興味深いと思った場合に備えて、ここに投稿します)


Linux
  1. Linuxのメモリ使用量

  2. LinuxコマンドラインでRAMサイズをGbで確認する方法

  3. Linuxでメモリバッファとキャッシュを削除する方法

  1. Linux で合計 RAM サイズとメモリ使用量を確認する方法

  2. Linux プロセスの RAM メモリ最高水準点のロギング

  3. Linux 読み取りスワップをメモリに戻す

  1. LinuxでLog2ramを使用してRAMにログファイルを書き込む方法

  2. Linuxでメモリキャッシュをクリアする方法

  3. Linux 非アクティブ メモリ