ceph存储优化方法

5270阅读 0评论2015-12-01 hiyachen
分类:服务器与存储

整个分布式块存储系统有着长长的 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:优化空洞读写
上一篇:使用gdb和core dump迅速定位段错误
下一篇:ceph的crush算法