磁盘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. Quartz集群原理及配置应用

    1.Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现.作为一个优秀的开源调度框架,Quartz具有以下特点: (1) ...

  2. linux连接远程服务器提示拒绝访问

    如上图,出现的问题是因为端口号错误,如果不是正常连接的端口号,那么就是端口号被恶意更改! 解决方案: 关掉或者开启需要的端口号注释!

  3. Java transient关键字序列化时使用小记

    1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过 ...

  4. Java中的类加载器

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16102131 从java的动态性到类加载机制   我们知道,Java是一种动态语言.那么怎 ...

  5. 查看Mac电脑的开机记录

    回家以后,发现电脑前的地面上有烟灰.我记不住是不是我抽烟时掉的了.当然,如果不是我掉的,就是别人掉的了.要是别人掉的,估计是坐在我这玩儿电脑的时候掉的了.查一下开机记录吧.打开终端,输入“last|g ...

  6. MUI 版本更新

    MUI版本更新,一些js,css  就不写了. 一.app 端 1.APP html 代码 <li class="mui-table-view-cell"> <a ...

  7. Intent官方教程(5)在manifest中给组件添加<Intent-filter>

    Receiving an Implicit Intent To advertise which implicit intents your app can receive, declare one o ...

  8. 【Java】List集合按数量分组

    有时候,我们需要将大的集合按指定的数量分割成若干个小集合.(比如:集合作为SQL中IN的参数,而SQL又有长度限制,所以需要分批分几次进行查询) 虽然此需求感觉不常见,但偶也写过几次类似的方法,故记录 ...

  9. windows10 IOT +Azure会议概要总结

    windows10 IOT +Azure会议概要总结 会议资料将放到https://channel9.msdn.com/Blogs/WinHEC FAQ:msftsziot@microsoft.com ...

  10. Win 64 register usage

    http://www.mouseos.com/win64/registers.html Seems UEFI using rcx, rdx, r8, r9, r10, r11, r12 to stor ...