V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jusonalien
V2EX  ›  Linux

安利一波自己开发的 qemu 虚拟化平台下的块设备的缓存系统

  •  
  •   jusonalien · 2016-01-09 22:44:50 +08:00 · 3605 次点击
    这是一个创建于 3030 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/jusonalien/VM-DB

    如果你对 qemu 这个虚拟化平台感兴趣,欢迎关注此项目。
    此项目的核心之处就是在 qemu 的块设备驱动上添加一个轻量级的缓存系统,基于基树(Radix-Tree)和双向侵入式链表开发,目前只放出测试代码,核心代码还在优化当中,已经可以保证虚拟机镜像文件的写入语义的正确性了(虚拟机可以准确地运行),文档也只是写的七七八八的,前阵子被其他的项目忙去了,没啥时间料理,这阵子又忙着期末考试,更没时间照料了。打算考完试的时候再去进行疯狂的优化,目前遇到的是块设备上多线程资源争夺的问题,(原先是 64 个线程跑的,被我改成了单线程了-,-)有兴趣的童鞋欢迎一起来 hack !

    第 1 条附言  ·  2016-01-24 19:55:33 +08:00
    https://github.com/jusonalien/VM-DB/tree/master/core_code

    哎。。。感觉是要弃坑了。。。已经没啥思路可以解决那个多线程的问题了。。。现在将核心代码传上来了。。对这个感兴趣的人随便拿去用吧。。。。。。
    6 条回复    2016-01-10 12:29:46 +08:00
    ryd994
        1
    ryd994  
       2016-01-09 23:21:47 +08:00
    全局变量这么多,估计要多线程不容易
    注意一下缩进和命名, Sort_dui 也真是 6666
    另外,相比 virtio 的缓存,你的优势在哪里(或者说你希望在哪里)?
    jusonalien
        2
    jusonalien  
    OP
       2016-01-09 23:38:16 +08:00
    @ryd994 更加轻量和专注咯~ 不用经过 host 上的 page cache ,我们打开的时候是用 O_DIRECT 标志位来打开的:)
    ryd994
        3
    ryd994  
       2016-01-10 00:51:30 +08:00
    @jusonalien 这样的话会有重复缓存的问题啊
    而且也无法利用 readahead 之类的特性
    jusonalien
        4
    jusonalien  
    OP
       2016-01-10 10:48:50 +08:00   ❤️ 1
    @ryd994 我并未具体研究过 virtio 部分的代码,并且之前也不知道 virtio 有过什么优秀的缓存系统,我们的确是基于 virtio 接口来使用虚拟机的,不过我们基于启动脚本的 cache=none 的这个参数来进行 hack 的,并且也在 qemu 里找到对应的标志位参数的代码,你说的重复缓存的问题或许原本就是存在的,我们只是基于其中的一个缓存系统进行了 hack 而已~ 这里有相关参数的文档 https://www.suse.com/documentation/sles11/book_kvm/data/sect1_1_chapter_book_kvm.html
    ryd994
        5
    ryd994  
       2016-01-10 11:00:50 +08:00 via Android   ❤️ 2
    @jusonalien 如果用 thread based io ,可以 cache= writeback 不过也算不得好
    避免重复缓存要让客户机知道“设备”自带缓存,就像真机里系统知道硬盘有缓存一样。
    extreme
        6
    extreme  
       2016-01-10 12:29:46 +08:00   ❤️ 1
    Brilliant you are.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1980 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 791ms · UTC 16:15 · PVG 00:15 · LAX 09:15 · JFK 12:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.