CファイルI/Oでは、フラグを使用して、open()
であるファイルのキャッシュエフェクトを最小限に抑えることができます。私はこれがPOSIXの機能ではなく、バージョン2.4.10以降のLinuxカーネルに存在し、Linusは一般的なインタフェースに反対していることを理解しています。 NetBSDの下では、広告されたように動作するようです。例コール:Cのオープン(... O_DIRECT)の移植性?
int fd = open(filename, O_DIRECT);
私はいくつかの低レベルのディスクのベンチマークユーティリティを書き込もうとすると、O_DIRECT
は、OSのファイルシステム/ブロック・キャッシュの効果なしディスクとドライブのパフォーマンスを測定する潜在的に良い方法になりそうだ使用しています。理想的には、Linux、Windows(CygwinはOK)、Mac OS X、およびBSDシステムでベンチマークを実行できるようにしたいと考えています。 O_DIRECT
は、ベンチマークのための移植性と信頼性の観点から、OSディスクキャッシュをバイパスする最良の方法ですか?代わりがありますか?
open()の呼び出しには、O_DIRECT以外のフラグを含める必要があります。あなたがしたことは、暗黙のうちに、O_RDONLY、別名0を使用しています。 –
今後のGoogleの検索では、この他のStackOverflowに関する質問が返ってくる:http://stackoverflow.com/questions/2299402/how-does-one-do -raw-io-on-mac-os-x-ie-linux-o-direct-flag –