优化方法论
- 硬件层面
•硬件规划
•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_kb
for i in `seq 1 3`; do ssh z${i} 'cat /sys/block/sda/queue/read_ahead_kb';done
echo "8192" > /sys/block/sda/queue/read_ahead_kb
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会影响系统的性能
echo "vm.swappiness = 0" | tee -a /etc/sysctl.conf
for 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-max
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
echo "deadline" > /sys/block/sd[x]/queue/scheduler
echo "noop" > /sys/block/sd[x]/queue/scheduler
for i in `seq 1 3`; do ssh z${i} 'cat /sys/block/sd[x]/queue/scheduler';done
Ceph Configurations
max open files
ceph tell osd.* injectargs --max_open_files 1596150
[osd] - filestore
filestore max sync interval 从日志到数据盘最大同步间隔(seconds) 5 15
filestore min sync interval 从日志到数据盘最小同步间隔(seconds) 0.1 10
ceph tell osd.* injectargs --filestore_max_sync_interval 15
ceph tell osd.* injectargs --filestore_min_sync_interval 10
filestore op threads 并发文件系统操作数 2 32
ceph tell osd.* injectargs --filestore_op_threads 32