我有以下用于打开所有文件的代码:
int ret= open(zFile, flags, mode);
posix_fadvise (ret, 0, 0, POSIX_FADV_RANDOM);
并且 posix_fadvise 返回 0 表示成功。
但它不能正常工作。
操作系统: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 完成的。