技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 不同SSD盘组合搜索引擎单机性能测试[2013年版]

不同SSD盘组合搜索引擎单机性能测试[2013年版]

浏览:2335次  出处信息

一、测试机器

Linux huawei_C5.co3 2.6.32-220.23.2.ali927.el5.x86_64 #1 SMP Mon Jan 28 14:57:06 CST 2013 x86_64 x86_64 x86_64 GNU/Linux
MemTotal:       49520300kB
Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz  * 24

二、测试目的

测试不同SSD盘组合策略HA3引擎性能,寻找到较好的SSD盘组合策略

三、测试环境配置

a) IO调度策略:deadline(sudo echo deadline > /sys/block/sdb/queue/scheduler)
b) 预读策略:关闭系统预读(sudo blockdev -setra 0 /dev/sdb1)
c) 针对raid,需要重新关闭raid的系统预读(sudo blockdev -setra 0 /dev/md0)
d) local_search线程数:64
e) 截断配置:粗排数10000,精排数300
f) 索引加载方式:Index    mmap none,Summary     cached 5%, Attribute   mmap lock
注:每次测试,需要手动清page cache (sudo vim /proc/sys/vm/drop_caches,写1,触发清除page cache)

四、测试数据

索引情况 attribute 4.8G index 59G summary 73G (”’44W”’ raw Doc)

五、测试方法

修改SSD盘策略,修改索引
启动local_search,先用abench -p 30 预热,然后abench -p 30 压测出qps(abench -p 30 时压测出的qps为峰值,-p太大 spin_lock锁很厉害,处理中)

六、测试结果

1. 不同SSD盘组合策略性能
2. raid0(两块盘)不同条带大小性能
3. raid0不同块数盘性能

七、测试说明

71G小索引-全内存:使用71G小索引,index 配置改为mmap lock,测试不考虑IO影响,全内存情况下引擎性能
ONE-SSD:测试136G大索引,单块SSD盘性能
RAIND0(64K):测试两块盘组成软raid 0
RAIND1:测试两块盘组成软raid 1,测试raid 1性能,主要用于对比测试,实际的高成本导致我们的应用场景不会使用raid 1
TWO-SSD(软连接,多个segment): 两块SSD盘,不做raid,索引用多segment形式,通过软连接将索引平均分到两块SSD盘
TWO-SSD(数据按term hashkey划分):两块SSD盘,不做raid,索引存两份,hack indexlib,seek时按term的hashkey模2到一块SSD盘(此为实验方法,实际使用时可以将索引按term切分)
RAIND0(two SSD):两块SSD组成RAID0
RAIND0(three SSD):三块盘组成RAID0,测试不同块数SSD 引擎性能
RAIND0(32K):两块SSD组成RAID0,条带大小设为32K,create raid时设置
RAIND0(64K): 两块SSD组成RAID0,条带大小为默认值
RAIND0(128K): 两块SSD组成RAID0,条带大小设为128K,create raid时设置

八、结果分析

1. 对比全内存和单块SSD大索引,索引量翻倍,性能减半
2. 对比单块SSD盘和RAID 0 ,单盘IO是瓶颈,而在两块盘做的RAID 0时,IO已经不是瓶颈,可以继续加压,而加压则会导致spin_lock锁很厉害,高峰值30%+(perf观测结果)
3. 对比同是两块盘组成的RAID 0、RAID 1,性能相差不大,FIO测试的IO性能也证明RAID 0 及RAID 1 性能相当
4. 两块SSD盘不做RAID,用软连接多个segment,IOPS需求也会提升,并不能提高性能,和单盘性能相当,
5. 两块SSD盘不做RAID,按term的hashkey选择读其中一个盘,此方案IO需求不变,均分到两块盘,性能最佳
6. 不同块数SSD盘组成RAID 0,引擎性能几乎无异,IO负载减小,FIO测试表明三块盘的IO性能明显提升
7. 两块SSD盘改变条带大小,性能几乎无异,数据分析表示,引擎读索引的平均IO大小较小,4KB的读占大部分,条带设置过大对我们的应用场景无效,设置过小又会影响性能提升。使用默认64KB即可

九、结论&建议

1. 对比A7机型和C5机型,C5的CPU性能较好(主频2.3,A7主频1.9),单盘时IO是瓶颈,而A7机型瓶颈在CPU,锁比较厉害,需要解决
2. IO瓶颈解决方法有两种,两块SSD盘做RAID0,有12%的性能提升,而两块盘不做RAID,可以达到18%的性能提升。两块盘不做RAID性能优于做RAID
3. 不同块数SSD盘测试引擎性能无异,此时瓶颈已经从单盘时的IO瓶颈转移到CPU瓶颈
4. 随着CPU性能的提升,IO是瓶颈,是主要矛盾,此时的解决方案可以是用多块SSD盘按term切分存索引。而当随着SSD盘数的增多,CPU则成为瓶颈,成为主要矛盾,spin_lock及smp_invalidate_interrupt消耗过大,20%~40%的CPU消耗,需要解决此问题
5. A7机型是单SSD盘,考虑到SSD盘的写性能及写寿命,推荐普通盘存log+SSD盘,增量索引可以单独存放。如果需要SSD盘写,则要考虑分区对齐、一些挂载选项及定时TRIM

建议继续学习:

  1. 我对技术方向的一些反思    (阅读:9945)
  2. SSD的主要缺陷及Wear Leveling技术详解    (阅读:8988)
  3. 基于SSD的数据库性能优化    (阅读:7489)
  4. SSD 寿命的检查和健康判断    (阅读:6475)
  5. Linux 中对 SSD 的优化 Discard,类 TRIM 的功能    (阅读:3948)
  6. SSD磨损数据的分析报告    (阅读:3908)
  7. SSD的随机写一定很慢吗?    (阅读:3300)
  8. SSD 想说爱你不容易    (阅读:2545)
  9. 数据的存储介质-固态存储SSD    (阅读:1895)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1