Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7068268
  • 博文数量: 702
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12031
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。

文章分类

全部博文(702)

分类: 服务器与存储

2015-12-01 19:21:26

整个分布式块存储系统有着长长的 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) |
给主人留下些什么吧!~~