之前工作中做了很多存储测试相关的事情,对存储测试有一些想法,最近想用几篇文章来介绍下分布式存储测试相关的一些内容,这部分内容对学习存储有很好的促进作用,欢迎大家关注~
- 白话分布式存储测试(一)明确测试目标
- 白话分布式存储测试(二)熟悉测试工具 【将发布在微信公众号】
- 白话分布式存储测试(三)测试方法论 【将发布在微信公众号】
- 白话分布式存储测试(四)测试结果分析 【将发布在微信公众号】
首先,我们需要明确我们为什么要做测试,或者说明确我们做测试的目标是什么?
从宏观上看,存储测试要考虑三个维度:
分别从这三个维度展开一下
一、测试工具
测试工具可以做什么?
测试工具提供了诸多参数选项,可以尽可能逼真地模仿用户程序的IO模式。比如有用户告诉你他的程序会多线程随机写4K大小的数据块,他想知道他的程序跑在我们的分布式存储上性能如何? 这时你可以拿用户程序去直接跑一下,或者你也可以用测试工具模拟下用户程序来预估性能,但是如果用户很多呢,如果用户程序没有那么易上手呢?势必费时费力。 所以,测试工具帮我们应对了这个问题,我们可以提前用测试工具跑出一些常见IO模式的存储性能报告,这样当用户咨询的时候,我直接根据性能报告来匹配用户程序的IO模式来进行预估。
通常,我们做存储测试就是为了获得特定IO模式或者常见IO模式的性能数据。
存储测试时的IO模式一般要涵盖以下三个关注点:
关注点 | 解释 |
---|---|
关注IO延时 | 不关心每秒可以完成多少次IO,而是关心单次IO从提到到返回结果最快能多快 |
关注IO吞吐 | 在可以接受的IO延时范围内,每秒最多能完成多少次IO |
关注IO带宽 | 不关心每秒完成多少次IO,而是关心每秒可以读写多少MB的数据 |
测试工具调节IO模式的一些常见参数(以fio为例)有:
blocksize、numjobs、size、rw_pattern、ioengine、direct ...
通过调节这些参数,我们就可以测试出不同关注点的性能数据。
后面的文章将会介绍怎么通过调节这些参数来对不同的关注点进行测试
二、集群客户端
视线抬高,我们的关注点不再是某个用户的应用程序,而是很多用户的应用程序。这时,我们需要关注的是,一个集群客户端的性能瓶颈在哪。实际使用中,一个集群客户端可以承载多少用户应用程序的IO需求。未雨绸缪,提前规划好用户程序及集群客户端数。
三、存储集群
视线再抬高,关注点脱离单个集群客户端,这时,我们需要关注的是,多少个客户端满负荷工作能打满存储集群,也就是需要测试出整个存储集群的IO能力。
对于机械磁盘,集群的IO能力通常是可以通过底层磁盘的IO能力来进行估算的,这是因为机械磁盘性能低下,存储集群程序IO栈及网络延时的影响有限,集群IO能力变化不大。
对于非机械磁盘,其性能越好,存储集群程序IO栈及网络延时的影响会体现地越发明显,这时测试存储集群IO能力也就更加有意义。
同样,未雨绸缪,有了存储集群IO能力的参考值,我们可以提前规划集群客户端及用户应用程序。
四、后续
本文简单介绍了存储测试的几个常见目标,后续文章会详细介绍常用测试工具(fio、dd)的使用方式、存储测试方法论、测试结果分析等内容,欢迎关注 : )
网友评论