首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么读取文件的iowait为零?

为什么读取文件的iowait为零?
EN

Stack Overflow用户
提问于 2019-12-09 04:37:21
回答 1查看 68关注 0票数 0

在找到psutil之后,我做了一个简单的实验。有一个完全基于IO的函数,可以重复地从文件中读取一些numpy数组(每个文件都有763M大小)。然后,在100秒后使用"cpu_times"测量函数的时间使用情况。我预计大部分时间都在iowait上流逝,但结果如下:

代码语言:javascript
复制
pcputimes(user=22.92, system=77.1, children_user=0.0, children_system=0.0, iowait=0.0)

为什么iowait是零?为什么系统大部分时间都在运行?

代码如下:

代码语言:javascript
复制
def io_read_bound():
    i=0
    while True:
        a = np.load("/tmp/a%d.npy"%i)
        print(a.sum()) # for forcing use of data
        i = (i+1)%10

p = multiprocessing.Process(target=io_read_bound)
p.start()
ps = psutil.Process(p.pid)
time.sleep(100)
print(ps.cpu_times())

对于写numpy数组,这个实验的结果是合理的,并且74%的时间用于iowait。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-09 14:35:10

这里是我的作者。可能文件已经在缓存中了?您可以尝试使用vmtouch cmdline应用工具逐出文件缓存。如果您多次读取该文件并在每次循环中清除缓存,我非常确定计数器将会增加。前段时间我引入了iowait来尝试文件复制,这是我当时的经验。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59239682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档