2015 August 19 ceph
Ceph性能调优——Journal与tcmalloc
最近对Ceph做了一下简单的性能测试,发现Journal的性能与tcmalloc的版本对性能影响很大。
测试结果
object size | bw(MB/s) | lantency(s) | pool size | journal | tcmalloc version | max thread cache |
4K | 2.676 | 0.0466848 | 3 | SATA | 2.0 | |
4K | 3.669 | 0.0340574 | 2 | SATA | 2.0 | |
4K | 10.169 | 0.0122452 | 2 | SSD | 2.0 | |
4K | 5.34 | 0.0234077 | 3 | SSD | 2.0 | |
4K | 7.62 | 0.0164019 | 3 | SSD | 2.1 | |
4K | 8.838 | 0.0141392 | 3 | SSD | 2.1 | 2048M |
可以看到:
- (1)SSD journal带来了一倍的性能提升;
- (2)使用tcmalloc 2.1,并调整max thread cache参数后,也带来了将近一倍的性能提升;
- (3)副本数量对性能的影响也很大。
tcmalloc的问题
Ceph自带的tcmalloc为2.0,测试过程中发现CPU利用率很高,几乎90%:
这是因为tcmalloc的TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES默认值太小,导致线程竞争引起的。邮件列表已经很多讨论这个问题:
调整该参数后,性能大幅提升,同时CPU利用率大幅下降。
Journal相关
Journal大小
Journal大小的选择尊循下面的规则:
即osd journal的大小应该设置为(磁盘的带宽 * 同步时间) 的2倍。参考这里。
Journal存储介质
由于OSD先写日志,然后异步写数据,所以写journal的速度至关重要。Journal的存储介质的选择参考这里
SSD: Intel s3500 240G的结果:
在线调整journal
增加如下内容:
两个小问题
在ext3文件系统上,mkjournal会报下面的错误:
这是因为ext3不支持fallocate:
当journal为文件时,打开journal文件时,会输出下面的错误:
即ceph对于这种情况不会使用aio,为什么呢???
其它资料
摘自