sysbench科普:YABS之外,商家和测评人都在用的压测工具
YABS很火,但它的CPU和磁盘分数底层用的就是sysbench。小够讲清楚sysbench是什么、能测什么、和YABS/Geekbench的关系,以及看商家贴出的sysbench分数时要注意什么。
我是小够。VPS圈天天有人贴跑分,YABS的截图满天飞。但很少有人问一句:YABS测CPU和磁盘的那部分,到底用的什么工具?答案是 sysbench——一个开源的模块化基准测试工具,YABS只是把它包了一层,加上网络测试,做成一键脚本。今天把sysbench本身讲透,以后你看任何跑分,心里都有杆秤。
sysbench是什么
sysbench最早是MySQL官方的人写的,原本用来给数据库做压测,后来发展成通用基准工具。它是模块化的:CPU、内存、磁盘IO、线程调度、互斥锁、数据库(MySQL/PostgreSQL),每个都是独立子命令。你想测哪块,就调哪个模块。
和YABS的关系很简单:YABS跑CPU测试时,背后调的就是 sysbench cpu;跑磁盘IO时,背后调的是 fio(另一个工具,后面单开一篇讲)。所以看懂sysbench,就等于看懂了YABS一半的输出。
和Geekbench的区别:Geekbench是闭源商业软件,跑分跨平台可比性强,但你看不到它到底怎么算的;sysbench开源免费,参数全透明,缺点是不同人用的参数不一样,分数不能直接横向对比——这点后面会细说。
它能测什么(常用模块)
CPU模块:sysbench cpu --cpu-max-prime=20000 run。原理是让CPU算质数,线程数可调。输出里关键看"total time"和"events per second"——时间越短、每秒事件越多,单核性能越强。注意,它测的是纯计算,没有内存和磁盘参与,所以很"干净"。
内存模块:sysbench memory --memory-block-size=1M --memory-total-size=10G run。测内存读写带宽,输出是MiB/sec。VPS上这个数字主要看有没有离谱的低——如果只有几百MiB/sec,说明宿主机内存超分严重或者限得太狠。
文件IO模块:sysbench fileio --file-test-mode=rndrw prepare/run/cleanup。三段式:先prepare生成测试文件,再run实测,最后cleanup删掉。能测顺序/随机读写。VPS商家贴的"磁盘跑分"很多就是这一项。
线程模块:sysbench threads run,测线程调度延迟。对VPS选购参考意义不大,知道有这功能就行。
为什么商家爱贴sysbench分数
三个原因:免费、开源、一键。商家在宣传页贴个sysbench CPU分数,成本为零;买家看不懂细节,只觉得"数字大就是强"。这里就有第一个坑:sysbench分数高度依赖参数。--cpu-max-prime=20000和--cpu-max-prime=200000跑出来的"events per second"完全不是一个量级,但截图里经常不写参数。看到商家贴分,先问三个问题:参数是什么、线程数是多少、测试时机器负载如何。答不上来的,分数看看就好。
第二个坑是单核vs多核。sysbench cpu默认用全部线程跑,但有些商家贴的是--threads=1的单核分,有些贴的是全核分,混在一起比没有意义。单核分看日常响应(建站、跑脚本的体感),多核分看并发能力,两个都要看,混着比不行。
小够的使用建议
- 自己跑,别信截图:买VPS到手第一件事,自己跑一遍
sysbench cpu --cpu-max-prime=20000 --threads=1 run和--threads=$(nproc) run,单核多核各一份,存档。这是你以后判断"机器是不是变慢了"的基线。 - 参数固定再对比:要对比两台机器,必须同一套参数、同一版本sysbench。不同版本算法有微调,跨版本比不严谨。
- 别只看CPU:sysbench不测网络,VPS的体验一半在网络。CPU分再高,晚高峰丢包10%,该卡还是卡。跑分和测速要配合看。
- 警惕"优化过的"分数:有些超售严重的机器,空载时跑分漂亮,一上负载就原形毕露。sysbench是短时爆发测试,反映的是峰值不是持续性能。真想看持续性能,得看长时间压测——这就是为什么小够一直说,跑分只看一半,另一半看口碑和退款政策。
实战:三条命令建基线
理论讲完,上手。三条命令,跑完你就有自己的基线了:
# 单核:看日常响应
sysbench cpu --cpu-max-prime=20000 --threads=1 run
# 全核:看并发能力
sysbench cpu --cpu-max-prime=20000 --threads=$(nproc) run
# 内存带宽:看有没有被限
sysbench memory --memory-block-size=1M --memory-total-size=10G run
记下三个数字:单核events per second、全核events per second、内存MiB/sec。存到备忘录,三个月后重跑一次,差10%以内正常,差30%以上,要么邻居变多了,要么商家动了手脚。
版本注意:sysbench 1.0 vs 0.4
市面上还有老教程用sysbench 0.4,算法和1.0不一样,分数不能混比。装的时候确认版本:
sysbench --version
Ubuntu 22.04+的源里默认是1.0,没问题。看到商家截图分数高得离谱,先看版本——0.4的分数天然偏高,拿0.4的分数和你1.0的比,等于作弊。
一句话总结
sysbench是YABS的"发动机",开源免费但参数敏感;商家截图看看就好,自己动手跑一份、参数记清楚,才是你的真实基线。下一篇讲fio——YABS磁盘测试背后的另一个工具,4K随机读写到底在测什么。