GNU/Linux >> Linux の 問題 >  >> Linux

Linux/FreeBSD での O_DIRECT と O_SYNC の比較

現在のハードディスクでは、ありません ディスクが書き込み完了を OS に報告したとしても、ファイルが実際にディスクに書き込まれることを保証します!これは、ドライブの組み込みキャッシュによるものです。

freeBSD では、 kern.cam.ada.write_cache を設定することでこれを無効にすることができます sysctl を 0 にします。これにより、劣化します。 パフォーマンスを大幅に書く .前回測定したときは (ICH-7 チップセットの WDC WD5001ABYS-01YNA0 ハードディスク、FreeBSD 8.1 AMD64)、連続書き込みパフォーマンス (dd if=/dev/zero of=/tmp/foo bs=10M count=1000 で測定) ) は 75,000,000 バイト/秒から 12,900,000 バイト/秒に低下しました。

ファイルが書き込まれたことを確実に確認したい場合は、

  • sysctl kern.cam.ada.write_cache=0 で書き込みキャッシュを無効にする 続いて camcontrol reset <bus>:<target>:<lun> .
  • O_SYNC でファイルを開きます オプション

注:

  • あなたの (HDD への) 書き込みパフォーマンスは完全に最悪です。
  • sync でパーティションをマウントしないでください オプション; すべての原因となります 同期して実行される I/O (読み取りを含む)。
  • O_DIRECT を使用しないでください .キャッシュを完全にバイパスしようとします。それはおそらく読み取りにも影響します。

O_DIRECT 基本的に、Oracle はカーネルのバッファ キャッシュ層をバイパスして独自のキャッシュを実行するためだけに存在します。セマンティクスが明確に定義されておらず、実行できる読み取りのサイズと配置に恣意的な制限があり、通常は使用しないでください。 O_SYNC 必要な効果が得られるはずですが、電源障害やクラッシュに対して堅牢な基盤となるファイルシステムがなければ、それでもニーズを満たすには十分ではない可能性があります.


Linux
  1. Linuxコマンドを使用して画像にテキストを書き込む方法

  2. Linux – LinuxでのO_directの使用?

  3. LinuxまたはFreeBSDでGrepコマンドを使用する方法

  1. Linux のファイル権限 – 読み取り/書き込み/実行

  2. LinuxでCでファイルを書く方法は?

  3. Linux で小さなゲームを作成するには何が必要ですか?

  1. FreeBSD v8.1 での Linux の「free」コマンドに相当するもの

  2. Linux / FreeBSD で MP3 の長さを取得する

  3. Linux (および FreeBSD) で DNS リゾルバーのキャッシュをフラッシュする方法