版本号:sysbench1.1


简介

    sysbench 是一个用于评估系统性能的多功能基准测试工具,它主要通过执行内存操作来评估系统的内存性能。例如:内存随机读写、顺序读写等,并在测试过程中记录这些操作时的吞吐量、延迟等指标,从而评估系统内存的性能表现。

        

文章目录如下

1. 参数说明

1.1. 命令语法

1.2. 常用参数

2. 常用方法

2.1. 基本用法&报告解读

2.2. 测试内存读取速度

2.3. 测试内存写入速度

2.4. 测试内存多线程

3. 测试总结


        

1. 参数说明

1.1. 命令语法

sysbench memory <参数选项> run

1.2. 常用参数

内存配置参数

--memory-block-size=SIZE    # 指定测试的内存块大小 [默认1K]
--memory-total-size=SIZE    # 指定测试数据的总大小 [默认100G]
--memory-scope=STRING       # 设置访问内存作用域{global,local} [默认global]
--memory-hugetlb[=on|off]   # 是否开启大页分配 [默认off]
--memory-oper=STRING        # 设置内存操作类型 {read, write, none} [默认write]
--memory-access-mode=STRING # 设置存储器访问方式 {seq(顺序),rnd(随机)} [默认seq]

其他常用测试选项

--threads=N          # 测试线程数 [默认1]
--time=N             # 测试时间(单位:s) [默认10]
--report-interval=N  # 定期报告统计信息间隔时间(单位:s), 0表示禁用 [默认0]
--verbosity=N        # 详细日志级别(0~5), 0表示只输出重要信息, 5表示输出debug [默认3]
--histogram=[on|off] # 输出延迟直方图 [默认off]

        

2. 常用方法

2.1. 基本用法&报告解读

可以直接执行内存测试,内存块大小、总大小、操作类型、访问方式和测试时间等都采用默认值

sysbench memory run    # 默认参数测试
sysbench memory --threads=5 run    # 指定并发数

5个线程测试报告解读

Total operations: 41883710 (4188284.18 per second)  # 总事务数、每秒事务数

40902.06 MiB transferred (4090.12 MiB/sec)          # 总传输大小、每秒传输大小

Throughput:
    events/s (eps):               4188284.1756      # 每秒事务数
    time elapsed:                 10.0002s          # 运行时间
    total number of events:       41883710          # 总事务数

Latency (ms):
         min:                     0.00              # 最小响应时间
         avg:                     0.00              # 平均响应时间
         max:                     64.18             # 最大响应时间
         95th percentile:         0.00              # 95%响应时间
         sum:                     18287.73          # 总响应时间

Threads fairness:
    events (avg/stddev):          8376742.0000/68949.13 # 每个线程的总事务/标准偏差
    execution time (avg/stddev):  3.6575/0.14           # 每个线程的总处理时间/标准偏差

        

2.2. 测试内存读取速度

  • 这种方法用于测试内存读取的性能,通过吞吐量(Throughput)、延迟(Latency)来评估性能。

顺序读取(默认)

sysbench memory --memory-block-size=8K --memory-total-size=10G --memory-oper=read run

随机读取(--memory-access-mode=rnd)

sysbench memory --memory-block-size=8K --memory-total-size=10G --memory-oper=read --memory-access-mode=rnd run

        

2.3. 测试内存写入速度

  • 这种方法用于测试内存写入的性能,通过吞吐量(Throughput)、延迟(Latency)来评估性能。

顺序写入(默认)

sysbench memory --memory-block-size=8K --memory-total-size=10G --memory-oper=write run

随机写入(--memory-access-mode=rnd)

sysbench memory --memory-block-size=8K --memory-total-size=10G --memory-oper=write --memory-access-mode=rnd run

        

2.4. 测试内存多线程

  • 这种方法用于评估系统在处理多任务或多用户负载时的性能表现,通过吞吐量(Throughput)来评估性能。
sysbench memory --memory-total-size=10G --memory-block-size=8k --threads=100 run

        

3. 测试总结

我们通过 sysbench 来测试内存的读写速度,它的关键参数如下:

--memory-oper=read:指定读

--memory-oper=read:指定写

--memory-access-mode=seq:指定顺序读/写

--memory-access-mode=rnd:指定随机读/写

  • 根据实际情况可以测试系统的读写性能,但sysbench1.1中没有同时读写的选项,所以只能单测

        

根据应用程序使用的块大小可以模拟内存的块大小测试:

--memory-block-size=1K:指定块大小

  • 小块(1K):可能会导致较高的吞吐量,适合小数据量、频繁访问的场景。
  • 大块(32K):可能会有较低的吞吐量,但更适合大数据处理或批量操作。

        

在线程数的选择上也是工具程序的真实线程或需要模拟的线程数来选择,而数据量则是越大测试结果约稳定,一般来说默认的100G比较合适

--threads=100:指定线程数

--memory-total-size=100G:指定测试大小

        

使用技巧

1、先查询当前版本支持的内存测试参数:

  • sysbench memory help

2、测试内存记住几个参数

  • sysbench memory <选项> run
  • 再根据需要指定的参数将help中的参数拷贝到<选项>即可

【示例】

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐