免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1443 | 回复: 3

[文件系统] 读取文件时间差异大, 原因不得而知? [复制链接]

论坛徽章:
0
发表于 2015-05-20 11:22 |显示全部楼层

我用的内核:  2.6.18-274.12.1.el5,  x86_64 x86_64 x86_64 GNU/Linux, 多CPU, 大内存.

特定程序teDing() 第一次读取文件花费1000秒.

可是如果在执行上面teDing()之前, 我先执行下面程序(对每个要读的文件都预先这么处理), 这时, 所有预处理时间+teDing()(当然是第一次读)的时间也最多不过200秒. 比没有预读处理的要少很多. 我多次这么实验. 得到的都是这样的现象.

什么原因?

谢谢高人赐教.



###############预读程序##################
#include <fcntl.h>

#define READSIZE 1024*1024*1024
char rbuf[READSIZE];

int main(int ac, char* av[]){
    int rfd=-1,rlen=-1,ret=-1;        

    if(ac == 2){
        if((rfd= open(av[1],O_RDONLY))== -1)   
            return -1;
        while((rlen = read(rfd,rbuf,READSIZE)) > 0){;}
        ret = close(rfd);
    }
    return ret;
}
#################################


论坛徽章:
0
发表于 2015-05-25 13:07 来自手机 |显示全部楼层
我理解是cpu将数据放到了cash,下次读取的时候,先看缓冲区有没有,有就从缓冲区读,没有才从硬盘读

论坛徽章:
0
发表于 2015-05-25 13:08 来自手机 |显示全部楼层
试着重启电脑,然后在读,估计时间会长一点
当然这都是猜测,可以验证下

论坛徽章:
0
发表于 2015-05-25 17:44 |显示全部楼层
回复 2# tg1681

好像就这么理解. 重启电脑肯定变慢. 内核有read缓存.


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP