oflag=direct
常にinを使用することがdd
使用されていないか、などを使用して操作を実行するよりもはるかに速いようです。pv
どんな状況でできますか?いいえそれを使いたいですかoflag=direct
?
答え1
私の頭の上から右:
- 直接IO書き込みを使用すると、ターゲットファイルが他のプロセスによってマッピングされると(通常は直接IO書き込み)、データが失われる可能性があります。
- 一部のファイルシステムは直接IOをサポートしていないか、直接IOで正しく動作しません。 2番目の可能性は、歴史的にBTRFSが直接IOを使用すると、ターゲットファイルのデータ破損を引き起こす可能性があることです。
- 直接IOは普遍的に高速ではありません。これには多くのことがありますが、一般的に直接IOが遅くなる一般的な状況は、システム書き込みストレージキャッシュに収まるほど小さいファイルをコピーして、ゼロ以外の検索待ち時間でストレージを遅くする場合です。
- 時々、一般的なIOの望ましい副作用が起こります。たとえば、ターゲットファイルが遅いリポジトリにあり、すぐに使用したい場合に便利です。この場合、直接IOを使用しないと、ファイルデータの少なくとも一部がまだページキャッシュに存在する可能性があるため、次の場合に時間を節約してください。ファイルを後で読んでください。多くは直接IOを使用しないため、パフォーマンスベンチマークを実行したい場合でもこれは重要です。
oflags=direct
真の移植性が必要な場合はLinux専用の拡張機能なので、可用性に頼ることはできません。