SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
flashcache 内部原理和优化
核心系统部-内核组
Robin Dong <robin.k.dong@gmail.com>
讲师介绍
• 核心系统部-内核组-董昊(花名:三百)
• 2006年加入阿里巴巴-雅虎中国 从事c/c++服务端程序开发
• 2008年转入淘宝,继续从事c/c++服务端程序及公用库开发
• 2011年转入核心系统部内核组,目前从事文件系统和IO相关的内核开
发和调优
• 内核组百科:http://baike.corp.taobao.com/index.php/Kernel
• 内核组wiki:http://kernel.taobao.org/
课程目标与目标学员
• 面向学员:>=P6,有linux上编程开发经验
• 课程目标:通过本课程,学员可以:
1. 更深的理解linux的block层结构
2. 了解linux的device mapper框架
3. 了解flashcache的原理
课程大纲页
1. Linux内核的block层
2. Device Mapper原理
3. Flashcache原理
4. Flashcache改造
Linux内核的Block层
 Block层位于文件系统层之下,设备驱动层之上
图片来自 http://adrianhuang.blogspot.com/
Linux内核的Block层
 BIO与request
图片来自 http://lwn.net/Articles/26404/
Linux内核的Block层
 Linux内核的所有IO最后都走到submit_bio函数
图片来自
http://adrianhuang.blogspot.com/
Linux内核的Block层
 request_queue
图片来自 http://blog.csdn.net/fudan_abc/article/details/2034264
Linux内核的Block层
 IO调度器
 cfq (为每个进程准备一个队列)
 deadline (读请求、写请求两个队列)
 anticipatory (deadline的改进)
 noop
课程大纲页
1. Linux内核的block层
2. Device Mapper原理
3. Flashcache原理
4. Flashcache改造
Device Mapper原理
 将两个(或多个设备)聚合成一个虚拟设备
图片来自 http://www.ningoo.net/
Device Mapper原理
 线性聚合
 dmsetup create my_linear table.txt
 table.txt:
0 1048576 linear /dev/sda 0
1048576 2097152 linear /dev/sdb 0
Device Mapper原理
Device Mapper原理
 striped聚合(RAID0)
 dmsetup create my_stripe table.txt
 table.txt:
0 2097152 striped 2 32 /dev/sda 0 /dev/sdb 0
Device Mapper原理
课程大纲页
1. Linux内核的block层
2. Device Mapper原理
3. Flashcache原理
4. Flashcache改造
Flashcache原理
 Flashcache用device mapper框架实现
Flashcache原理
 直接处理传入虚拟设备的BIO
 默认每8个sector(512Bytes)为一个block,每512个block为一
个set; cache和disk都按此划分
 set内的block由LRU链表管理
 非常简单的Hash算法:在disk上属于哪个set,直接模上cache
的set数
Flashcache原理
Flashcache原理
 Writeback(回写)模式
– 写操作迅速完成(只写cache)
– 利用work_queue(由keventd内核线程执行)把cache中的
dirty block写往disk
Flashcache原理
 Flashcache的可调参数
 /proc/sys/dev/flashcache/fioa3+fioa1/
 dirty_thresh_pct (可以最多保持多少dirty blocks,针对单个set)
 do_sync
 fallow_clean_speed/fallow_delay
 skip_seq_thresh_kb (用32个seqio结构来跟踪连续的IO流)
课程大纲页
1. Linux内核的block层
2. Device Mapper原理
3. Flashcache原理
4. Flashcache改造
Flashcache改造
线上RDS平台(mysql hosting)需要按比例控制IO
– 某些进程可以使用50%的IO带宽,某些只能用20%
– cfq调度器可以调整每个进程分配的时间片做到这一点
Flashcache改造
 blokio-controller
– mount -t cgroup -o blkio none /cgroup
– mkdir -p /cgroup/test1/ /cgroup/test2
– echo 1000 > /cgroup/test1/blkio.weight
echo 500 > /cgroup/test2/blkio.weight
– echo ${PID1} > /cgroup/test1/tasks
echo ${PID2} > /cgroup/test2/tasks
Flashcache改造
 直接把flashcache的io scheduler改为cfq?
Flashcache是BIO based,根本不走io scheduler !
Flashcache改造
 直接在flashcache_map里调用__make_request?
 IRQ没有关闭,会报BUG_ON()
 直接利用device mapper带的map_rq?
 一个request可能会包含多个bio
Flashcache改造
 Device mapper提供的struct target_type
struct target_type {
uint64_t features;
const char *name;
struct module *module;
unsigned version[3];
dm_ctr_fn ctr;
dm_dtr_fn dtr;
dm_map_fn map;
dm_map_request_fn map_rq;
......
}
Flashcache改造
 改造方法:
– 在struct target_type里添加mk_rq方法
– 实现map_rq
– dm_io_async_bvec函数的改造:原先发出去的BIO现在改为放
入flashcache设备的request_queue里
Flashcache改造
Flashcache改造
按照每个进程的比例划分占用的cache空间
每个group一个LRU
可以从 cat /proc/flashcache/fioa3+fioa1/flashcache_blocks 里查看
每个group的名称、权重、已经使用了多少个block
推荐学习资料
BIO介绍: http://lwn.net/Articles/26404/
Block layer介绍:
http://blog.csdn.net/fudan_abc/article/details/2034264
Flashcache介绍:
http://www.ibm.com/developerworks/cn/linux/l-
devmapper/index.html
Q & A
Thanks!

Contenu connexe

Similaire à flashcache原理及改造

TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習Kyle Lin
 
選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅Shengyou Fan
 
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談Drupal Taiwan
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Poy Chang
 
2_Clustering.pdf
2_Clustering.pdf2_Clustering.pdf
2_Clustering.pdfFEG
 
企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處Oomusou Xiao
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
《数据库技术》课程描述
《数据库技术》课程描述《数据库技术》课程描述
《数据库技术》课程描述gh56789
 
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器Chieh Kai Yang
 
Lectora snap training school developing creative interactive content is easy.
Lectora snap training school developing creative interactive content is easy.Lectora snap training school developing creative interactive content is easy.
Lectora snap training school developing creative interactive content is easy.yunjuli
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代scott liao
 
Camtasia Studio 7.1 Training
Camtasia Studio 7.1 TrainingCamtasia Studio 7.1 Training
Camtasia Studio 7.1 Trainingyunjuli
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1天青 王
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceAlex Su
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgileCommunity
 
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDJoey Chen
 
深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做SAS TW
 
我的成长路与技术观
我的成长路与技术观我的成长路与技术观
我的成长路与技术观freezr
 

Similaire à flashcache原理及改造 (20)

Io 1
Io 1Io 1
Io 1
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習
 
選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅
 
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
 
2_Clustering.pdf
2_Clustering.pdf2_Clustering.pdf
2_Clustering.pdf
 
企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
《数据库技术》课程描述
《数据库技术》课程描述《数据库技术》课程描述
《数据库技术》课程描述
 
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
 
Lectora snap training school developing creative interactive content is easy.
Lectora snap training school developing creative interactive content is easy.Lectora snap training school developing creative interactive content is easy.
Lectora snap training school developing creative interactive content is easy.
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
Camtasia Studio 7.1 Training
Camtasia Studio 7.1 TrainingCamtasia Studio 7.1 Training
Camtasia Studio 7.1 Training
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B service
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDD
 
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
 
深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做
 
Linux File system
Linux File systemLinux File system
Linux File system
 
我的成长路与技术观
我的成长路与技术观我的成长路与技术观
我的成长路与技术观
 

Plus de Hao(Robin) Dong

ext2-110628041727-phpapp02
ext2-110628041727-phpapp02ext2-110628041727-phpapp02
ext2-110628041727-phpapp02Hao(Robin) Dong
 
Ext4 Bigalloc report public
Ext4 Bigalloc report publicExt4 Bigalloc report public
Ext4 Bigalloc report publicHao(Robin) Dong
 
Ext4 new feature - bigalloc
Ext4 new feature - bigallocExt4 new feature - bigalloc
Ext4 new feature - bigallocHao(Robin) Dong
 
Kernel在多核机器上的负载均衡机制
Kernel在多核机器上的负载均衡机制Kernel在多核机器上的负载均衡机制
Kernel在多核机器上的负载均衡机制Hao(Robin) Dong
 
Linux下Poll和Epoll内核源码剖析
Linux下Poll和Epoll内核源码剖析Linux下Poll和Epoll内核源码剖析
Linux下Poll和Epoll内核源码剖析Hao(Robin) Dong
 

Plus de Hao(Robin) Dong (9)

Transformer and BERT
Transformer and BERTTransformer and BERT
Transformer and BERT
 
Google TPU
Google TPUGoogle TPU
Google TPU
 
ext2-110628041727-phpapp02
ext2-110628041727-phpapp02ext2-110628041727-phpapp02
ext2-110628041727-phpapp02
 
Ext4 Bigalloc report public
Ext4 Bigalloc report publicExt4 Bigalloc report public
Ext4 Bigalloc report public
 
Overlayfs and VFS
Overlayfs and VFSOverlayfs and VFS
Overlayfs and VFS
 
Ext4 new feature - bigalloc
Ext4 new feature - bigallocExt4 new feature - bigalloc
Ext4 new feature - bigalloc
 
why we need ext4
why we need ext4why we need ext4
why we need ext4
 
Kernel在多核机器上的负载均衡机制
Kernel在多核机器上的负载均衡机制Kernel在多核机器上的负载均衡机制
Kernel在多核机器上的负载均衡机制
 
Linux下Poll和Epoll内核源码剖析
Linux下Poll和Epoll内核源码剖析Linux下Poll和Epoll内核源码剖析
Linux下Poll和Epoll内核源码剖析
 

flashcache原理及改造