Ceph性能优化

一、硬件选型

(1)服务器

1GHz CPU per  OSD (the  more the better)

1GB  RAM  per OSD

1GHz  CPU*4  per  MON

4GB  RAM  per  MON

(2)硬盘

SSD、HDD配比1:3~5 (推荐使用Intel DC 3700或同等级以上SSD) 

每个物理节点OSD数量最好控制在单机最大网络带宽以内(每块SATA磁盘平均吞吐量100MB/s)

(3)网卡

每个物理节点最多1个10G或最少4个1000M(采用多网卡bonding方式,mode4)

(4)RAID

write through(no cache)

Raid1(OSD)

(5)IDRAC/ILO

(6)10G switch

10GB网口数量 = 服务器数量*2,跨多个机柜需要用到40GB级联口

      InfinBand架构是一种支持多并发链接的“转换线缆”技术。InfinBandr的核心就是把I/O子系统从服务器主机中剥离出去,通过光纤介质,采用基于交换的端到端的传输模式连接他们。

RDMA

RDMA(Remote Direct Memory Access)技术全称远程直接数据存储,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快递移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和文本交换操作,因而能解放内存带宽和CPU周期用于改进应用系统性能。

二、Accelio + ceph

(1)Accelio:https://github.com/accelio/accelio/

Accelio  is an Open Soure high-performance, asynchronous, reliable messaging and RemoteProcedure Call(RPC) library. Accelio optimizes hardware acceleration for Remote Direct MemoryAccess (RADMA),TCP/IP and shared-memory.

(2)Configure ceph

./configure -enable-xio

三、Ceph + Infiniband(RDMA)

SATA  SSD

PCIe  SSD

四、系统优化

(1)开启HT,充分发挥处理器的性能

(2)关闭NUMA,减少跨NUMA节点访问的性能损耗

  1. 添加内核参数numa=off
  2. 在BIOS里关闭NUMA

(3)关闭节能模式,选择Performance模式

  1. for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor;do [ -f $CPUFREQ] || continue;echo -n performance > $CPUFREQ;done
  2. 在BISO里设置

(4)CPU bound

(5)Memory Limit

增大kernel pid max

$:echo 4194303 > /proc/sys/kernel/pid_max

增大数据预读值,提高读性能

$:echo "8192" > /sys/block/sda/queue/read_ahead_kb

SWAP的使用倾向概略率,在centos7中,最后保留1-10之间

$:sysctl -w vm.swappiness=0

IO调度策略,对于SATA/SAS 选择deadline.SSD用noop

$:echo "deadline" > /sys/block/sd[x]/queue/scheduler
$:echo "noop" > /sys/block/sd[x]/queue/scheduler

调整脏数据回写比例

$:echo 5 > /proc/sys/vm/diry_background_ratio
$:echo 10 > /proc/sys/vm/dirty_ratio

(6)文件系统

推荐选择XFS文件系统,并保证4k对齐。添加以下挂载参数

rw,noatime,nodiratime,nobarrier,inode64,logbufs=8,logbsize=256k,delaylog

(7)上层应用

  1. 在fio测试中可以发现,iodepth值对测试结果有着显著的影响,所以client端能够选用Linux aio库,理论上是可以在一定程度上优化性能
  2. 云环境中的VM,可以使用virtio scsi实现多队列支持

(8)网卡MTU

网卡增大MTU值,可以增强传输性能,但在交换机上需要同等的设置

临时设置

$:ifconfig eth0 mtu 9000

永久设置

$:echo "MTU=9000" >> /etc/sysconfig/network-script/ifcfg-eth0
$:service network restart

 

参数名 描述 默认值 建议值
public network 客户端访问网络   192.168.100.0/24
cluster network 集群网络   192.168.1.0/24
max open files 如果设置了该选项,Ceph会设置系统的max open fds 0 131072
filestore xattr use omap0 为XATTRS使用object map,EXT4文件系统时使用,XFS或者btrfs也可以使用 false true
filestore max syncinterval 从日志到数据盘最大同步间隔(seconds) 5 15
filestore min sync interval 从日志到数据最小同步间隔(seconds) 0.1 10
filestore queue max sync interval 数据盘最大接受的操作数 500 2500
filestore queue min sync interval 数据盘一次操作最大字节数(bytes) 100<<20 10485760
filestore queue commiting max ops 数据盘能够commit的操作数 500 5000
filestore queue commiting min ops 数据盘能够commit的最大字节数(bytes) 100<<20 1048760000
filestore op threads 并发文件系统操作数 2 32
osd journal size OSD日志大小(MB) 5120 20000
journal max write bytes journal一次性写入的最大字节数(bytes) 10<<20 1073714824
journal max write entries journal一次性写入的最大记录数 100 10000
journal  queue max ops journal一次性最大在对列中的操作数 500 50000
journal queue max bytes journal一次性最大在队列中的字节数(bytes) 10<<20 10485760000
osd max write size osd一次可写入的最大值(MB) 90 512
osd client write size 客户端允许在内存中的最大数据(bytes) 524288000 2147483648
osd client message size cap 在Deep scrub时候允许读取的字节数(bytes) 524288 131072
osd deep scrub stride

OSD进程操作的线程数

2 8
osd op threads OSD密集型操作例如恢复和scrubbing时的线程 1 4
osd map cache size 保留OSD Map的缓存(MB) 500 1024
osd map cache blsize OSD进程在内存中的OSD Map缓存(MB) 50 128
osd recovery op priority 恢复操作优先级。取值1-63,值越高占用资源越高 10 4
osd recovery max active 同一时间内活跃的恢复请求数 15 10
osd max backflls 一个OSD允许的最大backfills数 10 4
rbd cache RBD缓存 true true
rbd cache size RBD缓存大小(bytes) 33554432 268435456
rbd cache max dirty 缓存为write-back时允许的最大dirty字节数(bytes),如果为0,使用write-through 25165824 134217728
rbd cache max dirty age 在被刷新到存储盘前dirty数据存在缓存的时间(seconds) 1 5

(9)条带设置

(10)tcmalloc

  1. 调整max thread cache :TCMALLOC_MAX_TOTAL_CACHE_BYTES=128M
  2. @@-3026+3027@@  /etc/init.d/cepe

    3. cmd="$SYSTEMD_RUN -r bash -c '$files $cmd --cluster $cluster -f' "

五、性能测试

1、rados测试

$:rados -p rbd bench -b 4194304 60 write -t 32 --no-cleanup
$:rados -p rbd bench -b 4194304 60 seq -t 32 --no-cleanup
$:rados -p rbd cleanup --prfix benchmark_data_ubuntu-ceph-06_30928

2、FIo工具

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章