web-dev-qa-db-ja.com

ramfsとtmpfsのパフォーマンスの違い

インメモリストレージシステムを約10 GBのデータ用にセットアップする必要があります。多くの読み取りとかなり定期的な書き込みがあります(新しいファイルの追加、古いファイルの削除)。
これで、tmpfsが通常のファイルシステムのように動作し、たとえばdf、これは素晴らしい機能です。しかし、私はramfsがIO操作の速度に関していくつかの利点を提供するかどうかに興味があります。使用時に消費メモリのサイズを制御できないことを知っています- ramfsそして、システムが空きRAMを完全に消費すると、システムがハングする可能性がありますが、このシナリオでは問題になりません。

要約すると、私は興味があります:
-パフォーマンスの観点から、より高速です:ramfsまたはtmpfs(そしておそらくその理由)?
-tmpfsはいつスワップ領域を使用しますか?すでに保存されているデータをswap(RAM現在実行中の他のプログラムの場合)に移動しますか)またはその時点で空きがない場合に新しいデータのみを移動しますかRAM ?

23
Ivan Kovacevic

私の推薦:

通常の条件下で実際の活動を測定して観察します。

これらのファイルが必要になることはほとんどなく、常にキャッシュから提供されます。しかし、 vmtouch と呼ばれる素晴らしいツールがあり、特定の瞬間に何がキャッシュにあるかを知ることができます。これを使用して、特定のディレクトリまたはファイルをキャッシュにロックすることもできます。定期的に使用した後の状態を確認してください。この状況では、tmpfsとramfsを使用する必要はありません。

参照: http://hoytech.com/vmtouch/

最もアクティブなファイルがおそらくキャッシュに常駐していることに驚かれることでしょう。


Tmpfsとramfsに関する限り、パフォーマンスに大きな違いはありません。操作上の違いがあります。実際の使用例はOracleであり、ramfsを使用して、RAMでデータがスワップされるリスクなしにデータを管理できるようになりました。tmpfsデータは、メモリのプレッシャーの下でスワップアウトできます。また、オンザフライでの設定のサイズ変更と変更の違いもあります。

21
ewwhite

これを考えすぎないでください。システムに十分なRAMを入れて、カーネルのディスクキャッシュに処理を任せる。

13
EEAA

1)パフォーマンスのベンチマーク。

このページ を参照として使用して、tmpfsとramfsのI/O比較を行いました。その結果、パフォーマンスに関してはほぼ同じです。

# !mount
mount | grep -E "tmp|ram"
tmpfs on /dev/shm type tmpfs (rw)
ramfs on /mnt/ram type ramfs (rw,size=1G)

# dd bs=1M count=1024 if=/dev/zero of=/dev/shm/test conv=fdatasync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.634054 s, 1.7 GB/s

# dd bs=1M count=1024 if=/dev/zero of=/mnt/ram/test conv=fdatasync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.559557 s, 1.9 GB/s

# dd bs=1M count=4096 if=/dev/zero of=/dev/shm/test conv=fdatasync
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 2.5104 s, 1.7 GB/s

# dd bs=1M count=4096 if=/dev/zero of=/mnt/ram/test conv=fdatasync
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 2.36923 s, 1.8 GB/s

2) このページ によると、tmpfsはスワップを使用し、ramfsはスワップを使用しません。

7

十分な量のRAMをインストールして、さまざまなカーネルバッファ、アプリケーションスタックとヒープ、通常のファイルシステムキャッシュ、およびそこに配置するすべてのファイルをホストする場合、ramfstmpfsより遅くなることはありません。物理I/Oは、間違いなくその領域のパフォーマンス低下の主な原因です。

ただし、RAM=がインストールされていない場合、ramfsを使用すると、仮想メモリヒューリスティックを使用しているため、tmpfsよりも遅くなる可能性があります。ディスク(つまり、スワップ領域)に何を配置するかを決定するには、RAM tmpfsを使用すると、ファイルシステムデータがRAMこれはリソースの浪費になる可能性があります。

2番目の質問に答えるには、はい、tmpfsは、最後の「ホット」データではなく、最初に古いデータをスワップ領域に移動します。

1
jlliagre