整个分布式块存储系统有着长长的 I/O 栈,每个 I/O 请求要穿过很多线程和队列。因此需要优化操作系统、 Qemu 、 Ceph ,以便榨干硬件的性能,达到企业级存储的要求。
一、操作系统:
对于操作系统的优化主要是关闭 CPU 节能模式、关闭 NUMA 、关闭 SWAP 、设置 SSD 的调度算法为 noop 、设置 OSD 上文件系统的挂载参数为 “noatime nobarrier” ,这些数据库的调优方法其实也适用于我们。
1:关闭 CPU 节能模式
开启CPU节能选项,CPU的频率降下来,发送指令随之变慢,I/0接口处理的操作次数减少。
2:关闭 NUMA
NUMA,非统一内存访问(Non-uniform Memory Access),介于SMP和MPP之间。
NUMA的几种方法:
1) BIOS中关闭NUMA设置
2) 在操作系统kernel层面关于numa,例如:
/etc/grub.conf的kernel行最后添加: numa=off
关于Linux的几个设置注意事项
MIN_FREE_KBYTES的目的是保持物理内存有足够的空闲空间,防止突发性的换页。
Linux swapiness缺省为60,减少swapiness会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存。
vfs_cache_pressure的缺省值是100,加大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,这个值越大,越倾向于内存回收。
调整这3个参数的目的就是让操作系统在平时就尽快回收缓冲,释放物理内存,这样就可以避免突发性的大规模换页。
sysctl -w vm.min_free_kbytes=409600
sysctl -w vm.vfs_cache_pressure=200
sysctl -w vm.swappiness=40(或者更低)
3:关闭 SWAP
4:设置 SSD 的调度算法为 noop
二、qemu优化:
对于 Qemu 的优化主要是 backport 社区最新的 patch ,比如 Throttle 算法,可以实现更平滑的 QoS 功能。下一步工作中,我们还会在 Qemu 中引入 IO Burst 功能,目前也仅有 AWS 公有云提供这种功能。
1:QoS优化,Throttle 算法
2:Qemu 中引入 IO Burst 功能
三、ceph优化:
朱荣泽说:我们对 Ceph 的代码和配置做了大量优化,而且有很多问题是时间长,规模上去之后才暴露出来的。主要优化点是增大文件标识符数量、增大队列长度、使用更高效的网络模型、优化处理线程模型、优化 Cache 算法、优化空洞读写等等,最终的成果非常显著,我们版本的 Ceph 的 4K 随机写 IOPS 比原生的 Ceph 提高了 3~6 倍, 4K 随机写的延迟接近 1ms 。
1:增大文件标识符数量、
2:增大队列长度、
3:使用更高效的网络模型、
4:优化处理线程模型、
5:优化 Cache 算法、
6:优化空洞读写
阅读(5089) | 评论(0) | 转发(0) |