博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从实际案例中探讨io中的延迟性能的作用
阅读量:6272 次
发布时间:2019-06-22

本文共 1278 字,大约阅读时间需要 4 分钟。

【问题背景】:
在某些项目中,用户自带测试工具,dd操作,fio(numjobs=1,iodepth=1)等忽略缓存操作的场景下。ceph块的单线程IO存在性能较差问题。
【问题影响】:
fio等典型测试用例在带宽和iops上测试结果偏差不大,但是对于超融合虚拟机场景,dd测试等单任务场景运行速度和体验较差。
【问题原因】:
更多是ceph原生的软件优化以及架构决定的io路径对延迟性能产生了消耗和衰减。这中间bluestore以及其他一些参数调优固然有用,但效果目前存疑。其他gluster等分布式存储可能有差异,但光是副本写惩罚一项就是逃不了的,不可能比裸盘高。在架构类似的情况下,只是软件优化的程度问题,差别应该不大。
ceph等的大部分分布式存储只能增加并发的总吞吐量,不但不会降低延迟,而且反而会增加延迟,在IOPS,带宽,延迟三个指标中的一个关键延迟性能上,分布式存储远远比不上传统存储。
延迟增加会导致单线程io场景的性能比较低。
io路径简单比较一下就可以明白:
传统: iscsi(千兆或万兆网)------本地硬盘/dev/sdx
分布式存储不使用缓存: iscsi(千兆或万兆网)-----librbd(不使用缓存)---(千兆或万兆网)----osd------副本写惩罚------ceph journal----xfs---/dev/sdx
分布式使用缓存:iscsi(千兆或万兆网)-----librbd或内核rbd(使用缓存)
这里以单线程dd带direct忽略缓存的测试模拟为例。
1,裸盘:比如100~200M/S, bs=1M的延迟是1000ms/100~200=5~10ms
2,普通hdd的分布式存储:比如25M/S, bs=1M的延迟是1000ms/25=40ms
3,带ssd或pcie缓存的分布式存储:比如100M/S, bs=1M的延迟是1000ms/50~100=10~20ms
在某些硬件条件和架构固定又没有作弊的情况下,是不可能超过理论值的。
比如假设hdd延迟最低5ms, 全hdd分布式存储可以在io路径中进行优化,但是只能趋近5ms,不可能超过5ms。因此有些场景性能较低无需莫名惊诧。
【解决思路】:
1,对于一些无需虚拟机,无需多路径等对数据一致性要求不高并且写负载不高的场景,可以适当使用缓存。
2,靠近iscsi的io前端,增加分布式带复制的缓存同步处理,或者使用一些类似RDMA等硬件设备辅助,总之通过硬件或软件在分布式多节点间实现低延迟同步缓存。该方案性能最高,但实现难度高。
3,使用类flashcache,bcache等在后端osd加缓存,作为osd的缓存,ssd的低延迟特性,可以有效增加单路操作的性能。
4,对io路径上其他必要节点进行硬件和软件调优。此处不做详细展开。
【总结】
在高负载大量写的场景下,使用写缓存很多时候是意义不大的。
但是在很多用户场景下,使用缓存的体验还是很好的,写个1G或几G的文件,能带来质的提升,因此需要区分好用户使用场景。鱼和熊掌不可兼得。

转载地址:http://iqlpa.baihongyu.com/

你可能感兴趣的文章
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
linux下查看和添加PATH环境变量
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
nginx 限速
查看>>
html5 聊天机器人
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
openstack虚拟机修改IP地址
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
初识 lex
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
TCP and UDP Small Servers
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Linux的dd命令
查看>>