一、命令简介
sysbench 是一个跨平台的基准测试工具,用于评估系统性能,包括 CPU、内存、文件 I/O、数据库等性能。
比较同类测试工具
bench.sh
在上文 bench.sh:Linux 服务器基准测试中介绍了 bench.sh 一键测试脚本,它对新手十分友好。一键完成测试,主打一个省心。缺点是不能设置测试参数。
 
sysbench
本文的 sysbench 命令填补了bench.sh的缺陷,sysbench命令则可以设置测试参数,更为灵活。
安装 sysbench
apt update
apt install sysbench
第二章“命令参数”会比较枯燥,可以直接跳到第三章,查看命令用法,以及实测结果。
二、命令参数
基本命令格式:
sysbench [测试模块] [全局选项] [命令] [测试参数]
常用测试模块:
- cpu:CPU 性能测试。
- memory:内存测试。
- fileio:文件 I/O 性能测试。
- threads:线程性能测试。
- mutex:互斥锁测试。
- oltp:OLTP(数据库)测试。
常用的全局选项:
- --threads=N:设置并发线程数,N 是线程数,默认是 1。
- --time=N:设置测试运行的时间(秒),默认是无限制。
- --events=N:设置最大事件数,测试在事件数达到 N 后结束。
- --report-interval=N:设置每 N 秒打印一次报告。
- --rate=N:每秒产生的事件数。
Sysbench 命令:
- prepare:准备测试环境(如创建测试文件)。
- run:运行测试。
- cleanup:清理测试环境(如删除测试文件)。
三、命令示例
准备了三台主机,电视盒子是arm架构,其余是x86架构,使用sysbench命令分别测试不同单元的跑了,并记录。
-  虚拟机: - 2C2G
- CPU:i7 6700hq
- ubuntu 22.04
 
-  电视盒子: - 4C2G
- CPU:晶晨s905l3a。
- 系统:armbian(ubuntu24.04)
 
-  云服务器: - 4C4G
- CPU:未知
- 系统:ubuntu 22.04
 
1. CPU 性能测试
实际是测试 CPU 计算质数的性能,所以不能完全代表CPU的综合性能。
单核性能
sysbench cpu --cpu-max-prime=20000 run
- --cpu-max-prime=20000 表示计算 20,000 以内的质数。
- run 表示运行测试。
测试结果
- 虚拟机
CPU speed:events per second:   458.04General statistics:total time:                          10.0020stotal number of events:              4582Latency (ms):min:                                    2.09avg:                                    2.18max:                                    3.4695th percentile:                        2.30sum:                                 9999.88Threads fairness:events (avg/stddev):           4582.0000/0.00execution time (avg/stddev):   9.9999/0.00
- 电视盒子
CPU speed:events per second:   375.26General statistics:total time:                          10.0016stotal number of events:              3755Latency (ms):min:                                    2.66avg:                                    2.66max:                                    4.2495th percentile:                        2.66sum:                                 9999.37Threads fairness:events (avg/stddev):           3755.0000/0.00execution time (avg/stddev):   9.9994/0.00
- 云服务器
CPU speed:events per second:   337.99General statistics:total time:                          10.0010stotal number of events:              3381Latency (ms):min:                                    2.89avg:                                    2.96max:                                    4.1295th percentile:                        3.02sum:                                 9995.00Threads fairness:events (avg/stddev):           3381.0000/0.00execution time (avg/stddev):   9.9950/0.00
多核性能
sysbench cpu --cpu-max-prime=20000 --theads=核心数 run
把“核心数”换成你的服务器核心数,比如2,4,8。
测试结果:虚拟机>电视盒子>云服务器
- 虚拟机
CPU speed:events per second:   858.40General statistics:total time:                          10.0020stotal number of events:              8587Latency (ms):min:                                    2.22avg:                                    2.33max:                                   12.4595th percentile:                        2.43sum:                                19998.65Threads fairness:events (avg/stddev):           4293.5000/0.50execution time (avg/stddev):   9.9993/0.00
- 电视盒子
CPU speed:events per second:  1493.22General statistics:total time:                          10.0026stotal number of events:              14943Latency (ms):min:                                    2.66avg:                                    2.68max:                                   18.5495th percentile:                        2.71sum:                                39998.98Threads fairness:events (avg/stddev):           3735.7500/8.20execution time (avg/stddev):   9.9997/0.0
- 云服务器
CPU speed:events per second:  1339.86General statistics:total time:                          10.0027stotal number of events:              13405Latency (ms):min:                                    2.89avg:                                    2.98max:                                    4.7195th percentile:                        3.13sum:                                39989.84Threads fairness:events (avg/stddev):           3351.2500/13.35execution time (avg/stddev):   9.9975/0.00
2. 内存性能测试
测试内存的读写速度:
sysbench memory --memory-block-size=1M --memory-total-size=10G run
- --memory-block-size=1M:每次内存读写的块大小为 1 MB。
- --memory-total-size=10G:总共测试 10 GB 的数据量。
测试结果:虚拟机>云服务器>电视盒子
- 虚拟机
10240.00 MiB transferred (18088.04 MiB/sec)General statistics:total time:                          0.5645stotal number of events:              10240Latency (ms):min:                                    0.05avg:                                    0.05max:                                    0.1995th percentile:                        0.08sum:                                  561.64Threads fairness:events (avg/stddev):           10240.0000/0.00execution time (avg/stddev):   0.5616/0.00
- 电视盒子
10240.00 MiB transferred (4792.52 MiB/sec)General statistics:total time:                          2.1318stotal number of events:              10240Latency (ms):min:                                    0.21avg:                                    0.21max:                                    0.3795th percentile:                        0.21sum:                                 2126.68Threads fairness:events (avg/stddev):           10240.0000/0.00execution time (avg/stddev):   2.1267/0.00
- 云服务器
10240.00 MiB transferred (14686.15 MiB/sec)General statistics:total time:                          0.6950stotal number of events:              10240Latency (ms):min:                                    0.06avg:                                    0.07max:                                    0.1795th percentile:                        0.08sum:                                  690.30Threads fairness:events (avg/stddev):           10240.0000/0.00execution time (avg/stddev):   0.6903/0.00
3. 文件 I/O 性能测试
首先需要生成测试文件,然后运行 I/O 性能测试:
创建测试文件:
sysbench fileio --file-total-size=5G prepare
- --file-total-size=5G:生成一个 5 GB 的文件来测试。
写入速度:
- 虚拟机
5368709120 bytes written in 4.63 seconds (1106.91 MiB/sec).
- 电视盒子
内置mmc硬盘太小,无法完成测试。
- 云服务器
5368709120 bytes written in 155.73 seconds (32.88 MiB/sec).
运行 I/O 测试:
sysbench fileio --file-total-size=5G --file-test-mode=rndrw --max-time=60 --max-requests=0 run
- --file-test-mode=rndrw:以随机读写模式测试。
- --max-time=60:测试持续时间为 60 秒。
- --max-requests=0:请求次数不限。
测试结果:虚拟机>云服务器>电视盒子
- 虚拟机
File operations:reads/s:                      5385.18writes/s:                     3590.12fsyncs/s:                     11488.40Throughput:read, MiB/s:                  84.14written, MiB/s:               56.10General statistics:total time:                          60.0076stotal number of events:              1227881Latency (ms):min:                                    0.00avg:                                    0.05max:                                   28.1195th percentile:                        0.08sum:                                59288.93Threads fairness:events (avg/stddev):           1227881.0000/0.00execution time (avg/stddev):   59.2889/0.00
- 电视盒子
内置mmc硬盘太小,无法完成测试。
- 云服务器
File operations:reads/s:                      35.77writes/s:                     23.85fsyncs/s:                     76.33Throughput:read, MiB/s:                  0.56written, MiB/s:               0.37General statistics:total time:                          60.3794stotal number of events:              8081Latency (ms):min:                                    0.00avg:                                    7.47max:                                11084.3995th percentile:                        0.17sum:                                60354.33Threads fairness:events (avg/stddev):           8081.0000/0.00execution time (avg/stddev):   60.3543/0.00
清理测试文件:
sysbench fileio --file-total-size=5G cleanup
4. 数据库测试 (MySQL)
需要先配置 MySQL 相关选项,然后运行基准测试。
安装MySQL
sudo apt update
sudo apt install mysql-client-core-8.0 -y
sudo apt install mysql-server-8.0 -y
登录MySQL
sudo mysql -u root -p
创建测试数据库
CREATE DATABASE testdb;
退出MySQL
exit
创建测试表:
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root --mysql-password=yourpassword --mysql-db=testdb --tables=10 --table-size=10000 prepare
创建速度:虚拟机>电视盒子>云服务器
运行读写测试:
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root --mysql-password=yourpassword --mysql-db=testdb --tables=10 --table-size=10000 --threads=8 --time=60 run
- --tables=10:测试表的数量。
- --table-size=10000:每个表的行数。
- --threads=8:使用 8 个线程。
- --time=60:测试持续时间为 60 秒。
清理测试表:
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root --mysql-password=yourpassword --mysql-db=testdb cleanup
测试结果:虚拟机>电视盒子>云服务器
- 虚拟机
SQL statistics:queries performed:read:                            360430write:                           102980other:                           51490total:                           514900transactions:                        25745  (428.94 per sec.)queries:                             514900 (8578.78 per sec.)ignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)General statistics:total time:                          60.0187stotal number of events:              25745Latency (ms):min:                                    5.67avg:                                   18.64max:                                  104.1695th percentile:                       27.66sum:                               479997.75Threads fairness:events (avg/stddev):           3218.1250/14.90execution time (avg/stddev):   59.9997/0.01
- 电视盒子
SQL statistics:queries performed:read:                            117348write:                           33528other:                           16764total:                           167640transactions:                        8382   (139.60 per sec.)queries:                             167640 (2791.97 per sec.)ignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)General statistics:total time:                          60.0391stotal number of events:              8382Latency (ms):min:                                   23.51avg:                                   57.28max:                                  219.0995th percentile:                       92.42sum:                               480099.51Threads fairness:events (avg/stddev):           1047.7500/5.21execution time (avg/stddev):   60.0124/0.01
- 云服务器
SQL statistics:queries performed:read:                            6818write:                           1948other:                           974total:                           9740transactions:                        487    (7.98 per sec.)queries:                             9740   (159.60 per sec.)ignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)General statistics:total time:                          61.0263stotal number of events:              487Latency (ms):min:                                   89.65avg:                                  999.24max:                                 5688.3095th percentile:                     3841.98sum:                               486629.54Threads fairness:events (avg/stddev):           60.8750/1.69execution time (avg/stddev):   60.8287/0.07
这台云服务器实在太垃圾了,虽然一年的价格只要20块。CPU和数据库性能被电视盒子暴打。此外它是纯ipv6,使用起来颇多不便。只能说不测不知道,一测吓一跳。
电视盒子(armbian Linux)
