• IO调度器


    由于对blktrace的好奇,来到了block层.通过阅读block层的代码,自己的几个错误认知被纠正,比如

    一) 同步操作时,进程是在驱动中睡觉真实情况是:进程在文件系统睡觉

    二) 对同一个数据块的读写是在block控制

    真实情况是:对同一数据块的是在文件系统中控制.

    两个周来,对文件系统肃然起敬,文件系统是一个你要花至少一年,才只能读懂其50%的模块,甚至,要想领悟文件系统的精髓,你要读page-cache,要读block层,甚至要理解存储芯片的读/写/擦除特性,真是a long long journey!

    前面对page-cache做了一个大致的分析,基本能够理清其中的脉络,已经达到了效果,所以想往下走,看看block层,block层最重要的是IO调度器,看下IO调度器是怎么回事.

    下面几篇文章就分析deadline-ioscheduler.

     31 struct bvec_iter {
     32     sector_t        bi_sector;  /* device address in 512 byte  sectors */ 下发到设备的首地址
     34     unsigned int        bi_size;    /* residual I/O count */ 下发的数量
     36     unsigned int        bi_idx;     /* current index into bvl_vec */
     38     unsigned int            bi_bvec_done;   /* number of bytes completed in current bvec */
     40 };  

    bio相关函数积累:

    bio_end_sector(bio)

    bio_data_dir(bio)

    bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
    blk_rq_merge_ok 对bio是否能合入rq做了最严格的过滤,

    从block层取出一个request之后, 就开始

     323     q->request_fn_active++;
     324     q->request_fn(q); /* scsi_request_fn */ 这里的request_fn中调用的是scsi_request_fn!
     325     q->request_fn_active--;
     

  • 相关阅读:
    C#获取url中参数键值对的方法
    一款css3很美的iphone注册表单样式
    很震撼的HTML5视频播放器,电影院的感觉
    html5菜单折纸效果
    web服务器之nginx与apache
    安装win8、ubuntu双系统的过程
    新学C#线程使用总结
    人民币大写金额转换C#方法
    可以调整gif动画图片尺寸的很实用的php类
    JS获取html对象的几种方式说明
  • 原文地址:https://www.cnblogs.com/honpey/p/5789588.html
Copyright © 2020-2023  润新知