磁盘IO和网络IO隔离与共享是混部应用中基本需求,从早些年的BVC到现在的Matrix,以及Galaxy,或者未来的BS/Mint混部都遇到类似的问题:由于无法有效实现IO级的隔离(包括吞吐隔离、延时隔离、故障/安全隔离,优先预留),磁盘资源只能以盘块为单位进行物理隔离,即使数据集很小的应用也不得不分配整块盘独占,这就导致了大量盘块的存储空间浪费。

精确的IO隔离是很有挑战的,在现实应用中的IO隔离的功能应用主要包括两类:Isolation for Sharing和Isolation for Reservation。Isolation for sharing主要focus在如何提高IO资源的利用率,比如100MB/s的IO资源如何调度才能充分发挥到100%利用率,如果无争抢则单一应用可以全部用完所有的资源。而Isolation for reservation主要focus在hard limit的范畴,比如小流量上线限制不得超过10MB/s,即使剩余90MB/s空闲也不得占用,这一般应用在故障/安全隔离领域,即限制用量在给定的警戒线之内。2008年我在XtreemOS项目中参与cgroup社区所开发cgroup-based disk limitation isolation功能(IBM france的Daniel Lezcano和IBM usa的Serge E. Hallyn主导,他们也是后来container社区的maintainer),就属于Isolation for Reservation的功能,它后来被应用NASA的安全计算网格。期间,我还接触了当时正在和日本一个团队正在竞争进入kernel主干的BFQ disk scheduler,它是Isolation for Sharing类型的一个很棒的工作。其中budage-based fair scheduling的算法可以很好地兼顾隔离和吞吐,不仅仅可以用在disk IO也可以应用在network IO等很多地方。BFQ作者Paolo valente当年还给我发了一份还未发表的详细设计文档,当然后来这些工作都发表在正式的会议和期刊上。

本周推荐阅读的是Paolo valente在2010年发表在IEEE Transactions on Computers上的High Throughput Disk Scheduling with Fair Bandwidth Distribution,首次正式提出BFQ算法。当然后续在2012年还有一篇发表在SYSTOR上的补充版Improving Application Responsiveness with the BFQ Disk I/O Scheduler也可以做深入阅读;另外Paolo也把相关代码开源了。

[转载] 每周推荐阅读 BFQ:实现IO的隔离共享与高吞吐访问的更多相关文章

  1. [转载] 【每周推荐阅读】C-Store:列式存储数据库

    Record-based与column-based是数据库和存储系统里面两种不同的data layout.我们的思维逻辑是基于行记录的,即Record-based data layout,数据记录都是 ...

  2. 【转载】SSD 下的 MySQL IO 优化

    一 目录 一 目录 二 背景 三 SSD 特性 四 基于 SSD 的数据库优化 五 A 项目 MySQL 主从关系图 六 程序切换之前调优 6.1 修改系统 IO 调度算法 6.2 修改 innodb ...

  3. Java程序员到架构师的推荐阅读书籍

    作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...

  4. Web前端开发推荐阅读书籍

    前言 前端工程师在中国兴起也就5年左右,以前公司里没有专门前端工程师的这个职位,很多前端方面的任务都是由全栈工程师来完成,有的基础一点的后台或者设计的帮助分担一些.但是随着互联网的快速发展,特别是所谓 ...

  5. 彻底弄懂JS的事件冒泡和事件捕获(不推荐阅读)

    由于搬去敌台了,好久没来博客园,今天无意中翻到有“误认子弟”的评论,这里特意做个说明. 本文中关于事件冒泡和事件捕获的描述和例子都是OK的,错就错在后面用jquery去展示了利用事件冒泡的例子有误,其 ...

  6. Java程序员进阶架构师推荐阅读书籍

    [IT168 技术]作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些 ...

  7. C++ day01 预备知识、C++综述、教材、推荐阅读。

    C++ day01: 1.预备知识? 1)什么是编程 编程,即编订程序. 程序 = 数据 + 算法(蛋糕 = 糖.鸡蛋.奶油 + 打鸡蛋.加糖.烤) 2)编程语言 最初的编程是用二进制代码(即“机器码 ...

  8. Java程序员的推荐阅读书籍

    作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...

  9. SQLite剖析之异步IO模式、共享缓存模式和解锁通知

    1.异步I/O模式    通常,当SQLite写一个数据库文件时,会等待,直到写操作完成,然后控制返回到调用程序.相比于CPU操作,写文件系统是非常耗时的,这是一个性能瓶颈.异步I/O后端是SQLit ...

随机推荐

  1. Linux自动删除n天前备份

    Linux是一个很能自动产生文件的系统,日志.邮件.备份等.因此需要设置让系统定时清理一些不需要的文件. 语句写法: find 对应目录 -mtime +天数 -name "文件名" ...

  2. iOS 判断相机权限是否被限制,判断相机是否可以使用

    判断相机权限是否被限制 需要导入   AVFoundation 类 [objc] view plain copy #import <AVFoundation/AVFoundation.h> ...

  3. mysqlbinlog抽取二进制日志中某库某表的日志

    1.先使用myqlbinlog命令把整个库的二进制日志抽取出来 mysqlbinlog --database=db_name mysql-bin.xxxxxx > db_name.sql 2.然 ...

  4. 杭电1013-Digitai Root(另解)

    #include<stdio.h>#define maxsize 1000 int main(){    char N[maxsize+1];    int i,j,sum,n;    c ...

  5. win7里边使用telnet命令提示telnet不是内部或外部命令

    Win7默认没有安装telnet功能,所以你直接用telnet命令是用不了的: 你可以去“控制面板”-->“程序”(在左下角)--->“打开或关闭Windows功能”,勾上“telnet客 ...

  6. [团队项目]后续安排 Github

    6.后续安排 第16周 周二晚7点之前将本代码上传到GITHUB. 周三上课时运行你们的系统给我观赏一下. 根据博客,运行演示,github代码情况评定第二个冲刺的分数. 至此,软件工程学期平时分截止 ...

  7. syntactically incorrect() 404

    遇到这个错误就来记录一下吧. 这个错误是springMVC报出的错误.大致的意思就是form传值的类型和controller中的参数不符. 有可能是名字错误,有可能是类型不对.比如前面你传来的是  p ...

  8. javascript学习(三) 内置对象

    一:事件(Event)对象 在触发dom事件的时候都会产生一个event对象 type   获取事件类型 target  获取事件目标 stopPropagation()  阻止事件冒泡 preven ...

  9. uva 11417 - GCD

    GCDInput: Standard Input Output: Standard Output Given the value of N, you will have to find the val ...

  10. mysqli报错(HY000/2002)

    Warning: mysqli::mysqli(): (HY000/2002): 没有那个文件或目录 解决:把localhost 换成127.0.0.1就好了.