写一些指引,以后大家测试ssd的时候可以参考下:
1. 测试要尽可能避免cache的影响. 任何磁盘产品,在碰到io瓶颈的时候,都不可能快,这个时候才是真正的磁盘的性能. 如果我们在测试一些nosql产品的时候,发现有非常高的吞吐率,那么就要思考,是什么其他因素影响了测试结果,网上的许多测评就是陷入了这么一个误区,注意内存数据库和磁盘数据库的本质区别,即使是磁盘数据库实现了一定的缓存功能;
2. 随着时间增长,SSD盘可能有碎片,空间占用上升,这个时候性能会下降,所以需要较长时间的测试(我每种测试模型会测试>1小时) ,因为可能有GC的影响,需要考虑进去. 且需要测试不同空间占用比下的性能. 现实中,由于数据库一般在90%以上就必须考虑扩容,所以对于企业级应用,可以测试下几乎写满(>90%)情况下的性能, 此时的性能更参考价值.
3. 由于Raid卡,IO控制器,缓存等因素也会影响到SSD盘的性能. 需要留意此点. 老外有时使用一些高端的Raid卡,而国内估计一般是中低端;
4. 一般可测试raid5和raid1+0 . 为了节省成本,生产中建议使用Raid5. 虽然理论上raid5的性能会比较差,但raid卡厂商一般专门设计了优化raid5的技术, 不用太过care,而且很多情况下io也不成为瓶颈了. 为了进一步缩减成本,也有采用raid0的方案,这种情况下,完全不依靠存储的冗余,而是靠主机的高可用解决故障, 这个故障率会比较高.
5. 不仅要测试吞吐,还需要测试响应的稳定.以反映真实环境. #参考:Introducing new type of benchmark
6. 关于trim,由于raid不支持trim,但不用太care #大多数RAID卡并不支持TRIM命令,
Inter宣称以后会支持. 如果测试的话,可以生成一个读写混合的负载,测试读性能的下降;
7. 验证test案例覆盖了所有的情况,使用成熟稳定的工具,以免破坏数据.
8. ssd对于温度会比较敏感Temperature does matter;most data miss-compare errors occurred at either low temperature (25ºC) or hightemperature (70ºC)