dm-cache

我自己测试捣鼓的经验是,dm-cache有点摸不透,在这个地方搞得好好的,部署到另外地方就不行了,具体表现是随机4K的fio测试中,随机IO总不能被hit。。。先提一句,后面弄明白了再编辑此处!

dm-cache作为第一个进入kernel的ssd-cache,在3.9内核版本并入,目前是最稳定的。3.10版本的dm-cache采用了全新的smq淘汰策略。优化了内存消耗,并且提升了性能。

flashcache类似,dm-cache也是基于device-mapper框架

在kernel 2.6.x中dm-cache采用和flashcache相同的set associative hash,但是在3.x后代码重构完全去除了该算法,用mq(multi queue)取代,在3.10后是用smq(Stochastic multiqueue),smq算法解决了mq的一些问题,比如内存使用,mq每个cacheblock需要88byte,smq仅仅需要25byte。

  • 支持的缓存策略:writeback, write through, write aroud;
  • 可配置migration throuttling参数,控制迁移速度。premote和demote双向都会受这个阈值影响;
  • cacheblock缓存块大小可配置,范围 32kb-1GB,必须是32kb的倍数;
  • 内存消耗 25byte per cache block(smq);
  • meta cache和data cache使用不同设备或分区,因此可以利用dm特性单独做mirror等设置;
  • 大于cacheblock的bio会被dm切割;不同于flashcache,小于cache block大小的设备会也会缓存,但是需要先premote;
  • 架构灵活,可以自己开发添加policy;
  • storage/缓存技术/dm-cache/start.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)