【ceph学习】rados bench性能测试工具介绍

2024-08-29 04:44

本文主要是介绍【ceph学习】rados bench性能测试工具介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rados bench性能测试工具介绍

  1. radosbench介绍
    Ceph 包含 rados bench 命令,用于在 RADOS 存储群集上执行性能基准测试。命令将执行写入测试,以及两种类型的读测试。在测试读取和写入性能时,–no-cleanup 选项非常重要。默认情况下,rados bench 命令会删除它写入存储池的对象。保留这些对象后,可以使用两个读取测试来测量顺序读取和随机读取的性能。

  2. 命令及参数

  • 读写命令
rados bench -p <pool_name> <run_time> <mode> [options]
  • 必选参数定义

    • pool_name:测试操作的池名字。
    • run_time:测试持续时长(单位为秒)。
    • mode:测试模式。取值有 write、seq 和 rand。其中 write 是写(Rados 没有顺序写或随机写之分),seq 和 rand 分别表示顺序读和随机读。
  • options其他参数

    • -c:Ceph 配置文件路径。如果使用的不是默认的 Ceph 配置文件 /etc/ceph/ceph.conf,则需要指定。
    • -b:write 模式中操作的块大小(block size),单位字节。默认为 4194304(4 MB)。
    • -O:write 模式中操作的对象大小(object size),单位字节。默认等于 -b。
    • –max-objects:write 模式中的最大的对象数量。设定此参数后,写到最大数量测试就会停止(可能会超出一些),否则会继续执行直到达到 seconds 时间。
    • -t:并发操作数。默认为 16。
    • –no-cleanup:write 模式中,在写入测试完成后删除不测试数据。不加此参数时,write 测试完成后测试数据会被删除,如果后面还要进行读测试的话,需要加这个参数保留数据。
    • -f:执行输出的格式。取值有 plain(默认)、json 和 json-pretty。
    • –run-name:本次测试的名字,这个名字和测试时拼接的 key 名字有关。默认为 “benchmark_last_metadata”。
    • –reuse-bench:write 模式中复用上一次的测试对象。不同的测试会有不同的对象前缀,加这个参数以后还用上一次的前缀,但前提是上一次测试加了 --no-cleanup 参数。
    • –show-time:在每一条输出前都加上日期/时间 data/time 前缀。
    • –no-verify:读对象的时候不验证内容。
    • –write-object:指定向对象中写入的内容。
    • –write-omap:指定向 omap 中写入的内容。
    • –write-xattr:指定向 extended attributes 中写入的内容。
  • 清理数据

如果我们在写测试中添加了 --no-cleanup 参数不清理数据,那么后面当我们不需要的时候,还需要使用子命令 cleanup 来删除这些数据:

rados cleanup [--run-name run_name] [--prefix prefix]
  • –run-name :写入测试时如果添加了这个参数,这里要添加一样的。默认也是 “benchmark_last_metadata”。
  • –prefix:要清理对象的前缀。

每次进行写入测试的时候,写入的对象都会有一个前缀,例如 benchmark_data_myhostname_3742558,前面是固定的 benchmark_data_,中间是机器的 host 名字,末尾是一串数字(看着应该是跟时间有关,因为可以排序),这个前缀会在 write 测试时会打印出来。

当多次执行带有 --no-cleanup 的写入测试后,池里就会存在很多个不同的前缀的对象。可以通过指定前缀,清理特定某一次测试写入的数据。如果不指定前缀,则默认清理最后一次写入测试的数据。

  1. 结果分析
  • 命令执行情况
ceph@node2:/$ rados bench -p rbd  1200  write -b 40960 -t 16  --no-cleanup
/*参数说明*/
hints = 1
Maintaining 16 concurrent writes of 40960 bytes to objects of size 40960 for up to 1200 seconds or 0 objects
/*对象前缀*/
Object prefix: benchmark_data_node2_139690
/*实时打印性能数据*/sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)0       0         0         0         0         0           -           01      16      1844      1828   71.4017   71.4062  0.00784974  0.008717872      16      3701      3685   71.9665   72.5391  0.00709388  0.008662393      16      5441      5425   70.6316   67.9688   0.0146895  0.008833164      16      7007      6991   68.2651   61.1719   0.0136184  0.009131085      16      8538      8522   66.5717   59.8047  0.00318715  0.009355576      16      9344      9328   60.7231   31.4844   0.0190202   0.01023987      16      9977      9961   55.5803   24.7266    0.010927   0.01120538      16     10518     10502   51.2741   21.1328   0.0439235   0.01216249      16     11280     11264   48.8839   29.7656   0.0717894   0.012730310      16     12045     12029   46.9835   29.8828  0.00995933   0.013281111      16     12918     12902    45.812   34.1016   0.0134464    0.01362412      16     13815     13799   44.9139   35.0391  0.00909432   0.013899113      16     14640     14624   43.9377   32.2266  0.00318153   0.014142114      16     15278     15262   42.5792   24.9219   0.0183044   0.0146673

示例中是写数据的bench数据结果。每列的含义如下:

  • sec:当前执行的秒数。

  • Cur ops:当前的并发操作数。这个值一般就是 -t 的值,可能小一点(跟执行情况有关)。

  • started:截至当前的已经开始写入的对象数。

  • finished:截至当前的已经完成写入的对象数。

  • avg MB/s:平均带宽。单位 MB/s。

  • cur MB/s:当前带宽。单位 MB/s。

  • last lat(s):当前延迟。单位秒。

  • avg lat(s):平均延迟。单位秒。

  • 最终性能结果:

Total time run:         1200.02
Total writes made:      1443431
Write size:             40960
Object size:            40960
Bandwidth (MB/sec):     46.9861
Stddev Bandwidth:       15.8027
Max bandwidth (MB/sec): 73.4375
Min bandwidth (MB/sec): 0
Average IOPS:           1202
Stddev IOPS:            404.55
Max IOPS:               1880
Min IOPS:               0
Average Latency(s):     0.0132992
Stddev Latency(s):      0.0341294
Max latency(s):         4.61661
Min latency(s):         0.00265286
  • Total time run:总测试运行时间。
  • Total writes made:总测试写入对象数。
  • Write size:写入时的 block 大小。单位字节。
  • Object size:写入时的对象大小。单位字节。
  • Bandwidth (MB/sec):平均带宽。单位 MB/sec。
  • Stddev Bandwidth:带宽标准差。
  • Max bandwidth (MB/sec):最大带宽。单位 MB/sec。
  • Min bandwidth (MB/sec):最小带宽。单位 MB/sec。
  • Average IOPS:平均 IOPS。
  • Stddev IOPS:IOPS 标准差。
  • Max IOPS:最大 IOPS。
  • Min IOPS:最小 IOPS。
  • Average Latency(s):平均延迟。单位秒。
  • Stddev Latency(s):延迟标准差。单位秒。
  • Max latency(s):最大延迟。单位秒。
  • Min latency(s):最小延迟。单位秒。
  1. 总结
    radosbench是一个可以直接往存储池进行压测数据的工具,绕过了前段的文件、对象、块等协议层的处理。适用于预埋数据,以及测试osd性能等场景。

这篇关于【ceph学习】rados bench性能测试工具介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116877

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]