私は現在、ディスクファイル操作(おそらく一種のdbms)のb + tree対普通のバランスツリーに対するパフォーマンステストをCで行っています.b + treeは、より少ないディスクしか実行できないため、bbstより高速であると予想されますI/O操作。しかし、いくつかのテストの後、システムがディスクファイルのキャッシュを行っていることがわかりました。ファイルは完全にメモリに保存されていました(私のメモリサイズは32GBです)。ディスクI/Oが実行されないので、b + treeは決してbbstより高速ではありません。だから、システムキャッシュを無効にしてb +ツリーをperfで勝つ方法があるのだろうか?私はO_DIRECT | O_SYNCでファイルを開こうとしました:ディスクファイルのシステム(UNIX)キャッシングを無効にする方法はありますか?
int fd = Open("sb.dat", O_DIRECT|O_SYNC|O_CREAT|O_RDWR, S_IRWXU|S_IRWXG|S_IRWXO);
これはうまくいかないようです。 1359821の
ページフォルトを:あなたはO_DIRECT
を使用する場合でも、カーネル私の知る限り9
なぜキャッシュをオフにしたいですか?それはあなたが実生活で得るものです。より多くのタスクやより多くのメモリ負荷でどのように動作するかを確認するには、いくつかの並列ベンチマークを実行するか、またはそのメモリを割り当ててアクセスする「memmuncher」アプリケーションを書きます(ループで - システムを実行する)。 –
'O_SYNC'についてはどうですか? – BAK
O_DIRECT | O_SYNC | O_CREAT | O_RDWRはまだ動作しませんでした。( –