优化方法论
- 硬件层面
•硬件规划
•SSD选择
•BIOS设置 - 软件层面
•Linux OS
•Ceph Configurations
•PG Number调整
•CRUSH Map
•其他因素
软件优化
1.linux os
echo 4194303 > /proc/sys/kernel/pid_max批量修改for i in `seq 1 3`; do ssh z${i} 'echo 4194303 > /proc/sys/kernel/pid_max';done
2.•read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作,查看默认值
cat /sys/block/sda/queue/read_ahead_kbfor i in `seq 1 3`; do ssh z${i} 'cat /sys/block/sda/queue/read_ahead_kb';doneecho "8192" > /sys/block/sda/queue/read_ahead_kbfor i in `seq 1 3`; do ssh z${i} 'echo "8192" > /sys/block/sda/queue/read_ahead_kb';done
3.•swappiness, 主要控制系统对swap的使用,这个参数的调整最先见于UnitedStack公开的文档中,猜测调整的原因主要是使用swap会影响系统的性能
echo "vm.swappiness = 0" | tee -a /etc/sysctl.conffor i in `seq 1 3`; do ssh z${i} 'cat /etc/sysctl.conf';done批量设置for i in `seq 1 3`; do ssh z${i} 'echo "vm.swappiness = 0" | tee -a /etc/sysctl.conf';done
•查看系统最大文件打开数可以使用命令
cat /proc/sys/fs/file-maxfor 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
echo "deadline" > /sys/block/sd[x]/queue/schedulerecho "noop" > /sys/block/sd[x]/queue/schedulerfor i in `seq 1 3`; do ssh z${i} 'cat /sys/block/sd[x]/queue/scheduler';done
Ceph Configurations
max open filesceph tell osd.* injectargs --max_open_files 1596150
[osd] - filestore
filestore max sync interval 从日志到数据盘最大同步间隔(seconds) 5 15filestore min sync interval 从日志到数据盘最小同步间隔(seconds) 0.1 10ceph tell osd.* injectargs --filestore_max_sync_interval 15ceph tell osd.* injectargs --filestore_min_sync_interval 10filestore op threads 并发文件系统操作数 2 32ceph tell osd.* injectargs --filestore_op_threads 32
