web-dev-qa-db-ja.com

tmpfsは断片化できますか?

tmpfs はメモリにのみ存在するので、メモリのように断片化することはできますか?メモリを自動的にデフラグして、保存されたファイルのアクセス速度を少しでも上げるメカニズムはありますか?

6
Laurent Pireyn

私の知る限り、tmpfsファイルシステムをデフラグする方法はありません(少なくともFreeBSD、Linux、またはSolarisでは)。

基盤となる実装によっては、tmpfsが断片化する可能性があります(たとえば、一部のtmpfs実装がRAMにない-スワップスペースをかみ砕く:割り当てアルゴリズムによっては、割り当てられたスワップスペースが断片化される可能性があります)顕著な速度低下を示します)。

RAMのtmpfsが「断片化」する可能性もありますが、これは実際的な問題ではありません:RAMは「十分に高速」であるため、 RAMの非連続セクションへのアクセスを失うよりも、「デフラグ」しようとしてCPU時間を浪費します(回転遅延は心配せず、MMUまたはRAMの連続しないセクションにアクセスするのと同等であるのに対し、連続する一連のページは、おそらく無視できるほど小さいです。

率直に言って、このレベルのパフォーマンスが心配な場合は、とにかくtmpfsを使用したくないでしょう。VFSレイヤーのオーバーヘッドがRAMファイルシステムのように見えるからです多くの桁違い発生する可能性のあるメモリの断片化の問題(コンテキストの切り替えなど)よりも悪い。

11
voretaq7

すべてのtmpfs実装は、物理メモリではなく仮想メモリによってサポートされています。仮想メモリの隣接する領域が物理レベルで隣接する可能性は非常に低く、需要によってはRAM)に存在しない可能性があるため、この質問はあまり意味がありません。

2
jlliagre