##CEPH Mimic版本 - Bluestore io过程、延迟分析及优化建议##
Ceph bluestore与filestore相比较, 除了bluestore不需要写journal,就IO过程(流程)来讲大体上是类似的,OSD侧的io流程、过程调用分析网络上已经有很多文章了,在这里就不再展开,我将过程贴到下方:
写流程:
读流程:
我们来看看Bluestore中写IO状态迁移:
在Bluestore::queue_transactions方法中会创建事务上下文TransContext并初始化(设置开始时间-start、初始状态-STATE_PREPARE),然后执行经由OSD层封装的transaction,接着调用_txc_state_proc提交io以及metadata,最后返回应答。
需要注意的是:bluestore中通过配置*_deferred_*参数来控制io的行为,默认情况下io size=32KB及以下,进行的是deferred io,而aio与deferred io的过程有些区别,请看如下图表:
基本状态迁移图如下:
STATE_PREPARE
|
|
STATE_AIO_WAIT
|
|
STATE_IO_DONE
|
|
STATE_KV_QUEUED
|
|
STATE_KV_SUBMITTED
|
|
STATE_KV_DONE ————————— STATE_DEFERRED_QUEUED
|