优化方法论

  1. 硬件层面
    •硬件规划
    •SSD选择
    •BIOS设置
  2. 软件层面
    •Linux OS
    •Ceph Configurations
    •PG Number调整
    •CRUSH Map
    •其他因素

软件优化
1.linux os

  1. echo 4194303 > /proc/sys/kernel/pid_max
  2. 批量修改
  3. for i in `seq 1 3`; do ssh z${i} 'echo 4194303 > /proc/sys/kernel/pid_max';done

2.•read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作,查看默认值

  1. cat /sys/block/sda/queue/read_ahead_kb
  2. for i in `seq 1 3`; do ssh z${i} 'cat /sys/block/sda/queue/read_ahead_kb';done
  3. echo "8192" > /sys/block/sda/queue/read_ahead_kb
  4. for i in `seq 1 3`; do ssh z${i} 'echo "8192" > /sys/block/sda/queue/read_ahead_kb';done

3.•swappiness, 主要控制系统对swap的使用,这个参数的调整最先见于UnitedStack公开的文档中,猜测调整的原因主要是使用swap会影响系统的性能

  1. echo "vm.swappiness = 0" | tee -a /etc/sysctl.conf
  2. for i in `seq 1 3`; do ssh z${i} 'cat /etc/sysctl.conf';done
  3. 批量设置
  4. for i in `seq 1 3`; do ssh z${i} 'echo "vm.swappiness = 0" | tee -a /etc/sysctl.conf';done

•查看系统最大文件打开数可以使用命令

  1. cat /proc/sys/fs/file-max
  2. for i in `seq 1 3`; do ssh z${i} 'cat /proc/sys/fs/file-max';done

•I/O Scheduler,关于I/O Scheculder的调整网上已经有很多资料,这里不再赘述,简单说SSD要用noop,SATA/SAS使用deadline

  1. echo "deadline" > /sys/block/sd[x]/queue/scheduler
  2. echo "noop" > /sys/block/sd[x]/queue/scheduler
  3. for i in `seq 1 3`; do ssh z${i} 'cat /sys/block/sd[x]/queue/scheduler';done

Ceph Configurations

  1. max open files
  2. ceph tell osd.* injectargs --max_open_files 1596150

[osd] - filestore

  1. filestore max sync interval 从日志到数据盘最大同步间隔(seconds) 5 15
  2. filestore min sync interval 从日志到数据盘最小同步间隔(seconds) 0.1 10
  3. ceph tell osd.* injectargs --filestore_max_sync_interval 15
  4. ceph tell osd.* injectargs --filestore_min_sync_interval 10
  5. filestore op threads 并发文件系统操作数 2 32
  6. ceph tell osd.* injectargs --filestore_op_threads 32