存储基准测试指标
存储的工作负载
对于一个存储系统来说,评价性能好坏的有几个标准单位。
-
IOPS:每秒钟的处理 IO 请求数
-
吞吐量(MB/s):单位时间内的读写数据量
-
响应时间 / 等待时间:处理一个请求的时延,包括从发送请求到接到响应的时间
而对于底层的存储介质来说,主要的操作就是读和写,还有一些文件系统元数据的操作。而读写根据地址空间的访问模式分成随机访问和顺序访问。随机访问的逻辑地址/物理地址是不可预测的,而顺序访问是根据当前的逻辑地址依次访问。
读写请求的块大小也对系统的性能有影响。一般来说,小块的请求更看重 IOPS 或响应时间,大块的请求以吞吐量为考量。
底层存储还有个重要因素就是队列深度,就是在端口队列中等待服务的 I/O 请求数量。适当增大队列深度,可以测出磁盘的峰值,但 IOPS 不会随着队列深度的增加而一直增加,达到一定峰值后会有所下降。对于 IO 请求的等待时间,随着队列深度的增加而增大。
存储的工作负载
根据请求块大小,顺序随机访问读写模式的不同,存储负载可以可以分成几个典型的类型:
· 数据库 (OLTP):也叫联机事务处理,表示事务性非常高的系统,以小的事务以及小的查询为主。负载类型以小块的随机(随机约占 80%)写(读 25%,写 75%)为主,主要评估响应时间。
· 数据仓库 (OLAP):也叫联机分析处理,支持复杂的分析操作,侧重决策分析,并且提供直观易懂的查询结果。负载类型以大块顺序(顺序约占 80%)读(读 75%,写 25%)为主,主要评估吞吐量。
· 视频数据采集:负载类型以大块顺序写为主。
· 虚拟桌面基础架构:负载类型以小块的随机读写(读 50%,写 50%)为主。
· 物联网:负载类型以混合大小块的顺序写为主。
现实世界的负载要比这些典型的负载模型复杂的多,选取复杂基准测试是为了更真实的模拟生产环境中的负载,来指导我们对系统的评估和改造。
模拟业务测试
与操作简单且使用广泛的 dd、fio 等方式不同,在 k8s 中部署几种 database ,然后模拟企业中可能发生的业务场景,通过它们的性能表现来评估底层存储的性能
-
CockroachDB
-
HammerDB
-
CosBench