一、命令介绍

  sysbench是一个是一个开源的、模块化的、跨平台的多线程性能测试工具,它支持CPU运算性能、磁盘IO性能、调度程序性能、内存分配及传输速度、POSIX线程性能和数据库性能(OLTP基准测试)。

    Usage:
      sysbench [options] [testname] [command]

    1、支持的testname 
       fileio - 文件IO测试
       cpu - CPU性能测试
       memory - 内存功能速度测试
       threads - 线程性能测试
       mutex - 互斥锁性能测试
常规选项 含义
–threads=N 运行的线程数
–events=N 事件上限次数
–time=N 运行时长,以秒为单位

二、CPU测试

(1)常用参数


--cpu-max-prime=N: 素数生成数量的上限

如果设置为3,则表示2、3、5(要计算1-5共5次);如果设置为10,则表示2、3、5、7、11、13、17、19、23、29(要计算1-29共29次),默认值为10000。

--threads=N: 线程数

如果设置为1,则sysbench仅启动1个线程进行素数的计算;如果设置为2,则sysbench会启动2个线程,同时分别进行素数的计算。默认值为1,即单线程。

--time=N: 运行时长,单位秒。默认值为10

如果设置为5,则sysbench会在5秒内循环往复进行素数计算,从输出结果可以看到在5秒内完成了几次;比如配合--cpu-max-prime=3,则表示第一轮算得3个素数,如果时间还有剩就再进行一轮素数计算,直到时间耗尽。相同时间,比较的是谁完成的event多。

--events=N: event上限次数

每完成一轮就叫一个event,设置为100,则表示当完成100次event后,即使时间还有剩,也停止运行。默认值为0,则表示不限event次数,相同event次数,比较的是谁用时更少。
(2)实例
[root@cp ~]# sysbench --cpu-max-prime=10000 --threads=2 --time=30 cpu run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 2                                        ## 运行的线程数
Initializing random number generator from current time

Prime numbers limit: 10000                      ## 每个线程的素数上限

Initializing worker threads...

Threads started!

CPU speed:
    events per second:   932.57                 ## 所有线程平均每秒完成event的个数

General statistics:
    total time:                          30.0015s                   ## 总共运行时间
    total number of events:              27980                      ## 总共完成的event个数

Latency (ms):
         min:                                    1.05               ## 完成1次event的最少耗时
         avg:                                    2.14               ## 完成所有event的平均耗时
         max:                                   19.26               ## 完成1次event的最多耗时
         95th percentile:                        7.17               ## 95%的event完成的时间
         sum:                                59945.85               ## 所有线程的时间综合

Threads fairness:
    events (avg/stddev):           13990.0000/3.00                  ## 平均每个线程完成envet的次数,后一个值是标准差
    execution time (avg/stddev):   29.9729/0.01                     ## 平均每个线程平均耗时,后一个值是标准差

    注:
    stddev(标准差): 在相同时间内,多个线程分别完成的素数计算次数是否稳定,如果数值越低,则表示多个线程的结果越接近(即越稳定)。该参数对于单线程无意义。
    如果有2台服务器进行CPU性能对比,当素数上限和线程数一致时:相同时间,比较event;相同event,比较时间;时间和event都相同,比较stddev(标准差)。

三、线程测试

(1)常用参数

--thread-yields=N : 指定每个请求的压力,默认为1000

--thread-locks=N : 指定每个线程的锁数量,默认为8
  (2)实例
[root@cp ~]# sysbench --threads=2 --thread-yields=1000 --thread-locks=1 threads run

General statistics:
    total time:                          10.0031s
    total number of events:              4217

Latency (ms):
         min:                                    2.18
         avg:                                    4.74
         max:                                10002.54
         95th percentile:                        2.48
         sum:                                19999.84

Threads fairness:
    events (avg/stddev):           2108.5000/2107.50
    execution time (avg/stddev):   9.9999/0.00

[root@cp ~]# sysbench --threads=2 --thread-yields=1000 --thread-locks=10 threads run

General statistics:
    total time:                          10.0005s
    total number of events:              14193

Latency (ms):
         min:                                    1.21
         avg:                                    1.41
         max:                                    2.22
         95th percentile:                        1.50
         sum:                                19989.23

Threads fairness:
    events (avg/stddev):           7096.5000/8.50
    execution time (avg/stddev):   9.9946/0.00

                                                    ##对比锁的限制

发表回复

验证码: 2 + 1 =