Ceph性能优化总结(v0.94)(3)

上面这段话的意思就是,Ceph OSD进程在往数据盘上刷数据的过程中,是停止写操作的。

[osd] - osd config tuning 参数名描述默认值建议值
osd max write size   OSD一次可写入的最大值(MB)   90   512  
osd client message size cap   客户端允许在内存中的最大数据(bytes)   524288000   2147483648  
osd deep scrub stride   在Deep Scrub时候允许读取的字节数(bytes)   524288   131072  
osd op threads   OSD进程操作的线程数   2   8  
osd disk threads   OSD密集型操作例如恢复和Scrubbing时的线程   1   4  
osd map cache size   保留OSD Map的缓存(MB)   500   1024  
osd map cache bl size   OSD进程在内存中的OSD Map缓存(MB)   50   128  
osd mount options xfs   Ceph OSD xfs Mount选项   rw,noatime,inode64   rw,noexec,nodev,noatime,nodiratime,nobarrier  

增加osd op threads和disk threads会带来额外的CPU开销

[osd] - recovery tuning 参数名描述默认值建议值
osd recovery op priority   恢复操作优先级,取值1-63,值越高占用资源越高   10   4  
osd recovery max active   同一时间内活跃的恢复请求数   15   10  
osd max backfills   一个OSD允许的最大backfills数   10   4  
[osd] - client tuning 参数名描述默认值建议值
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  
关闭Debug 3. PG Number

PG和PGP数量一定要根据OSD的数量进行调整,计算公式如下,但是最后算出的结果一定要接近或者等于一个2的指数。

Total PGs = (Total_number_of_OSD * 100) / max_replication_count

例如15个OSD,副本数为3的情况下,根据公式计算的结果应该为500,最接近512,所以需要设定该pool(volumes)的pg_num和pgp_num都为512.

ceph osd pool set volumes pg_num 512 ceph osd pool set volumes pgp_num 512 4. CRUSH Map

CRUSH是一个非常灵活的方式,CRUSH MAP的调整取决于部署的具体环境,这个可能需要根据具体情况进行分析,这里面就不再赘述了。

5. 其他因素的影响

在今年的(2015年)的Ceph Day上,海云捷迅在调优过程中分享过一个由于在集群中存在一个性能不好的磁盘,导致整个集群性能下降的case。通过osd perf可以提供磁盘latency的状况,同时在运维过程中也可以作为监控的一个重要指标,很明显在下面的例子中,OSD 8的磁盘延时较长,所以需要考虑将该OSD剔除出集群:

ceph osd perf osd fs_commit_latency(ms) fs_apply_latency(ms) 0 14 17 1 14 16 2 10 11 3 4 5 4 13 15 5 17 20 6 15 18 7 14 16 8 299 329 ceph.conf [global] fsid = 059f27e8-a23f-4587-9033-3e3679d03b31 mon_host = 10.10.20.102, 10.10.20.101, 10.10.20.100 auth cluster required = cephx auth service required = cephx auth client required = cephx osd pool default size = 3 osd pool default min size = 1 public network = 10.10.20.0/24 cluster network = 10.10.20.0/24 max open files = 131072 [mon] mon data = /var/lib/ceph/mon/ceph-$id [osd] osd data = /var/lib/ceph/osd/ceph-$id osd journal size = 20000 osd mkfs type = xfs osd mkfs options xfs = -f filestore xattr use omap = true filestore min sync interval = 10 filestore max sync interval = 15 filestore queue max ops = 25000 filestore queue max bytes = 10485760 filestore queue committing max ops = 5000 filestore queue committing max bytes = 10485760000 journal max write bytes = 1073714824 journal max write entries = 10000 journal queue max ops = 50000 journal queue max bytes = 10485760000 osd max write size = 512 osd client message size cap = 2147483648 osd deep scrub stride = 131072 osd op threads = 8 osd disk threads = 4 osd map cache size = 1024 osd map cache bl size = 128 osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier" osd recovery op priority = 4 osd recovery max active = 10 osd max backfills = 4 [client] rbd cache = true rbd cache size = 268435456 rbd cache max dirty = 134217728 rbd cache max dirty age = 5 总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8b74df59ba43119a11c67ed8f8c892e3.html