すべてのファイルを開くための次のコードがあります。
int ret= open(zFile, flags, mode);
posix_fadvise (ret, 0, 0, POSIX_FADV_RANDOM);
posix_fadvise return 0は、成功を意味します。
しかし、それは正しく機能していません。
OS:Ubuntu 12.04
Straceは、プログラムによって実行された読み取りが29088バイトであることを示しています。
次のコマンドを使用して、straceログからの読み取りを計算しました
cat fadvise3.log | grep read | awk '{SUM+=$NF} END {print SUM}'
しかし、iotopは、プログラムが2.5 MB.
- なぜそんなに読んでいるのかを知る方法はありますか?
- iotop O / pがstraceと一致しないのはなぜですか?
- なぜposix_fadvise(ret、0、0、POSIX_FADV_RANDOM); 動かない?
- プロセスの先読みを無効にするにはどうすればよいですか?
読むことについての詳細:私はsqliteライブラリを使用しています。そして、データベースを開くために関数posixOpenを変更しました。読み取りはsqliteによって行われます。