2011-06-25 11 views
2

ファイルがあります。a.datは1GBで、ディスクに常駐しています。パフォーマンス上の理由から、私はこのファイルを再利用し、新しいファイルを作成して成長させるのではなく、必要に応じてその内容を上書きするだけです(それぞれの拡張操作はinodeでサイズを更新する必要があります)。xfs - ファイルに書き込むときにmtimeを変更しない方法は?

私はファイルのmtimeとctimeがいつ更新されるかを調べるために、より多くのパフォーマンスを絞り込み、openmountのマニュアルページを検索しました。私の理解から、ファイルの内容を変更するたびに、mtimeおよび/またはctimeが更新されます。これはxfsの仕組みですか?

もしそうなら、Linuxでこれを無効にする方法はありますか?私はmtimeとctimeは気にせず、それぞれの書き込み操作でそれらを更新するコストがかかりません。

最終的には、ファイルシステムを完全に削除してデバイスに直接書き込みますが、その間にファイルシステムでこれを行う方法があると考えています。それに応答して

EDITを明確にするために、私はSSDに書いていますし、SSDの外に私ができるすべての操作を絞る

答えるようにすることは非常に重要です。 SSDは理論的には1秒あたり25Kのオーダーで処理することができ、これらはそれぞれ重要です。私は自分のファイルに書き込む以外のものを無駄にしたくない。そのメモでは、実際には私が書いているディスクに200個の1GBのファイルがあります。私は上記の質問で問題を単純化しようとしていました。

さらに、各書き込みは同期でなければならず、ビットがディスク上にあることを確認するまでプログラムは続行されません(です)。しかし、私はこのメモが質問に接するものだと思う。

+0

幸運を祈る!しかし、なぜこれはC++としてタグ付けされていますか? –

+0

私はc/C++でコーディングしています。私はその言語には必ずしも固有のものではないと思うが、Cのソリューションが最も有用だろう。 – JaredC

答えて

3

mtimeおよびctimeのセマンティクスについては、man 2 statを参照してください。実際には、mtimeとctimeはinodeのインメモリコピーで更新され、ディスクに非同期でフラッシュされます。

大規模なカーネルハッカーがなければ、iノードのmtimeアップデートをスキップすることはできません。ある32bitカウンタから別のメモリ位置へのコピーが減速していると本当に思っているのであれば、誤って高速部分を最適化しようとしています。 write(2)

1GBファイルのファイル書き込みパフォーマンスを向上させたいですか?ブロックキャッシュが使用するメモリを増やし、mtimeを忘れてしまいます。ディスク書き込みの途中で引っ張られ、電源コードが同期で助けていないよう

同期書き込みは意味のある意味での安全性を提供することはありませんコメントに応じて追加

。これが、xfsやext3 +のようなジャーナル化されたファイルシステムが使われている理由です。あなたが望むことができる最高のものは、失敗に直面した一貫性です。

あなたが記録されたデータはビットがコミットされる前は常にが失敗することができますあなたが何かのようにバッテリバックアップSRAMの書き込みバッファでRAIDを構築する場合でも、基本的には不可能である石で鋳造されているという確信を望んでいるように見えます。生のボリュームを書き込むことで、ジャーナルファイルシステムよりも保護が少なくなります。

あなたの質問にあなたの設計意図を明確にすれば、より良い答えが可能かもしれません。腸のレベルでは、たとえ書き込み時間が長くても、小さな1GBのファイルでは、フラッシュメモリはスピン酸化物よりも故障しにくいという印象を与えますが、正式な宣言ではありません。

+0

ブロックキャッシュの追加は、すべての書き込みが同期する必要がある場合は役に立ちません。したがって、いつでもエラーから回復できます。私は、メモリコピーを最適化しようとしていない、私は、ディスクにフラッシュされるinodeの回数を最小限に抑えようとしています。私はそれが毎回の変更操作で起こったのか、定期的に起こったのか不明でした。明らかに、すべての変更操作でそれをフラッシュすると、ディスクへの書き込みが増幅されます。あなたはそれが事実ではないと言っているように聞こえる。私が 'stat'セマンティクスを見て、それが私を助けるかどうかを見ていきます。 – JaredC

+0

あなたのポイントを明確にするために編集された質問。 – JaredC

+0

説明をありがとう。 SSDは私には分かりませんので、従来のドライブを使用していると思いました。この記事は表面的に分かりやすいようです:http://www.zdnet.com/blog/perlow/geek-sheet-a-tweakers-guide-to-solid-state-drives-ssds-and-linux/9190 – msw