gpt4 book ai didi

c++ - posix_fadvise 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:59 30 4
gpt4 key购买 nike

我有以下用于打开所有文件的代码:

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。

  1. 有什么方法可以让我知道为什么阅读那么多?
  2. 为什么 iotop O/p 与 strace 不匹配?
  3. 为什么是 posix_fadvise (ret, 0, 0, POSIX_FADV_RANDOM);不工作?
  4. 如何禁用流程的预读?

关于阅读的更多细节:我正在使用 sqlite 库。并修改了他们的函数 posixOpen 以打开数据库。读取由sqlite完成。

最佳答案

posix_fadvise 将更改内核中内部 完成的预读量。它不会更改用户空间应用程序将传递给读取系统调用的参数。因此,除了在 strace 下运行它时,读取系统调用的参数会有任何不同之外,你不应该除外。

关于c++ - posix_fadvise 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10581874/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com