web-dev-qa-db-ja.com

fstabで「コミット」を増やすことの利点と欠点

私は過去に多くのあいまいなシステム最適化を行いましたが、powertopがUSBポートをautosuspend、それは彼らを永遠の眠りに追いやった、そして私がより高いswappiness

しかし、今日、/etc/fstab、オプションを設定したことに気づきましたcommit=60 for/および/ home。これはラップトップの最適化であり、ディスクへの書き込み量を減らしてバッテリーを節約したことを覚えています。しかし、これがデータの損失を引き起こす可能性があることを心配しました(バッテリーが切断されることがあり、起動時にfsckがいくつかの孤立したiノードについて通知します)。

このオプションの説明を探しているときに、次の説明に行きました(2番目の説明は以前の理解と矛盾しているようです)。

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.

https://forums.gentoo.org/viewtopic-p-4088752.html

commit = 60は、オーバーリードの書き込みの「即時」(デフォルトは5秒)優先順位付けを停止し、数秒後に書き込みをキャッシュします。これは、読み取りと書き込みが混在する状況でユーザーが読み取りを優先することを望んでいる場合に適しています。これにより、読み取りを続行する前に書き込みが完了するのを待つ間、プロセッサを一時停止するのではなくビジー状態に保つことができます。

私が見た実世界の例は、一見理由もなく、Gnomeプルダウンメニューが表示されるまで数秒待っています。その理由は、ディスクが書き込み中でビジーだったため、メニューを表示できるようにディスクからすべてのデータを取得する前に、CPUは書き込みが完了するのを待たなければならなかったためです。

commitは実際には何をしますか?それを増やすことの利点は本当にありますか(応答性や省電力など)?実際にデータが失われる可能性はありますか?

14
Teresa e Junior

commitは実際には何をしますか?

最良の説明の1つは hereallquixoticによって与えられたと思います。

それを増やすことの利点は本当にありますか(応答性や省電力など)?実際にデータが失われる可能性はありますか?

ext4公式ドキュメント に従って:

Ext4は、すべてのデータとメタデータを「nrsec」秒ごとに同期するように指示できます。デフォルト値は5秒です。これは、あなたが失った場合あなたの力が失われた場合、あなたは最後の5秒間の仕事を失うことになります(ただし、ジャーナリングのおかげでファイルシステムが破損することはありません)。このデフォルト値(または任意の低い値)はパフォーマンスを低下させますが、データの安全性。 0に設定すると、デフォルト(5秒)のままにするのと同じ効果があります。 それを設定する非常に大きな値に設定すると、パフォーマンスが向上します

commit値を増やすと、最新のN秒の作業(N =コミット間隔)が失われる可能性がありますが、ほとんどの場合、これはソフトウェアでは発生しませんそれでもfsync()を呼び出し、そのデータをディスクに書き込んで、コミット設定を上書きします。あなたはそれを「少なくともすべてこれを頻繁にディスクに書き込む」と見ることができます。1
一方、書き込みが少なく(ssdユーザーの間で非常に人気があります)、パフォーマンスが向上します(複数の書き込みが1つの大きな書き込みに結合され、コミット時間内の以前の書き込みへの更新はキャンセルされます) )。
省電力に関しては、 このページ によると、今日のcommit値を増やしても省電力ではないことがわかります。

12
don_crissti