web-dev-qa-db-ja.com

キャッシュアタイム書き込み

非常に長い時間キャッシュされるように時間の書き込みを設定する方法はありますか? I need atime(つまり、relatimeはそれをカットしません)が、パフォーマンスにそれほど影響を与えたくありません。場合によっては(停電など)、データの損失が許容される場合もあります(場合によってのみ)。

3
Tyler

Ext4のマウントオプションであるlazytimeを見つけました。これは、これを十分に解決します。

https://lwn.net/Articles/620086/

このモードでは、atime、mtime、およびctimeの更新は、メモリ内バージョンのiノードに対してのみ行われます。ディスク上の時間は、(a)iノードのiノードテーブルブロックを、ブロック内のiノードに関連する時間に関連しない変更のために更新する必要がある場合、(b)ユーザースペースがfsync()を呼び出す場合、または(c)削除されていないiノードのrefcountがゼロになります(ほとんどの場合、iノードに関連付けられている最後のファイル記述子が閉じているとき)。

このオプションは、カーネル4.0以降で使用できます。

同様に、デフォルトのrelatimeをオーバーライドする必要があります。そうしないと、relatimeのキャッシュ機能に加えてlazytime機能が得られます。これを行うには、strictatime AND lazytimeでマウントします。

3
Tyler