关于IO throttle

cgroup中blkio子系统的主要功能是实现对磁盘IO带宽的可定制化控制,目前支持的控制策略只要有两种:基于weight权重方式和基于流量方式(iops,bps)。weight方式依赖于内核原生的CFQ IO调度算法(其工作与IO调度层);流量方式即IO throttle工作在通用块层。

IO throttle: iops/bpsl

CFS:weight/iops

正常提交IO的流程(部分):
submit_bio 
         -> generic_make_request
                    ->1, generic_make_request_checks 
                             ->blkcg_bio_issue_check 
                                     ->blk_throtl_bio
                    ->2, blk_queue_bio

被throttle的IO的后续提交流程:
kworker(kthrotld)
          -> blk_throtl_dispatch_work_fn 
                     -> generic_make_request(还要经过造请求函数提交)

测试IO throttle,限制sda盘每秒IOPS为50:

使用systemtap探测,dd产生的IO 被throttle:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章