好问题 👍,sysbench 的 CPU 测试模式(sysbench cpu)和数据库/IO 测试不一样,它主要是 纯计算压力测试,目的是衡量 CPU 的算力,而不是内存/磁盘。下面我分几个方面讲清楚它的原理:
1. 测试逻辑
在 sysbench --test=cpu run(新版本是 sysbench cpu run)模式下:
- sysbench 会不断计算 素数(prime numbers),判断某个数是否是素数。
- 具体做法是:对每个候选数进行 整数除法,检查是否能被整除。
- 这个操作是典型的 整数运算(无浮点、无IO),因此非常依赖 CPU 的 ALU(算术逻辑单元)和 cache。
👉 所以 sysbench CPU 测试 本质是跑一个素数筛选的循环,看 CPU 每秒能做多少次运算。
2. 关键参数
-
--cpu-max-prime=N
指定最大素数范围,比如sysbench cpu --cpu-max-prime=20000 run,表示测试时要计算从 1 到 20000 的素数。- 数字越大 → 单次计算更重,CPU 压力更高。
- 数字太小 → 很快就算完了,测试结果可能偏高。
-
--threads=N
指定并发线程数,模拟多核利用率。 -
--time
指定测试时长,默认是 10 秒。
3. 结果指标
运行后 sysbench 会输出:
- events per second:每秒完成多少次“任务”(计算 prime 范围内素数的过程)。
- total number of events:总共完成了多少次素数计算。
- execution time:总执行时间。
- per-request statistics:平均、最小、最大、95%延迟(虽然CPU测试里延迟意义不大)。
4. 原理总结
-
CPU-bound 测试:只依赖 CPU 整数运算单元,不涉及内存/磁盘。
-
工作负载模式:用素数筛选算法模拟计算压力,保证 CPU 满载。
-
并行度:通过
--threads控制,测试多核/超线程性能。 -
局限性:
- 算法比较简单,不能全面代表真实负载(比如数据库里的复杂查询)。
- cache 影响很小,因为素数计算只需要少量循环变量。
✅ 简单一句话:
sysbench CPU 测试就是跑素数筛选,看 CPU 每秒能完成多少次运算,是一种“纯计算、无IO”的基准测试。
要不要我给你画一张 sysbench CPU 测试流程图(从线程启动 → 素数判断循环 → 收集统计)?这样你看起来会更直观。
2723

被折叠的 条评论
为什么被折叠?



