title: CPU 测试
created: 2026-06-20
updated: 2026-08-14
type: concept
tags: [cpu, benchmark, stress-test, burn-in]
sources:
- raw/scripts/0cpu.sh
- raw/scripts/cpuburn_run.sh
- raw/scripts/mprime.sh
- raw/scripts/sysbench.sh
- raw/scripts/lmbench.sh
- raw/scripts/mlc.sh


CPU 测试

CPU 测试涵盖信息查看、基准性能测试(benchmark)压力/稳定性测试(stress-test / burn-in)三大类。本文梳理常用工具及其典型用法。


1. CPU 基本信息查看

lscpu

lscpu 从 /proc/cpuinfo 和 sysfs 中提取 CPU 架构信息,是最常用的概览命令。

lscpu

关键输出字段:
- Architecture — 架构(x86_64 / aarch64)
- CPU(s) — 逻辑核心总数
- Thread(s) per core — 每核超线程数
- Core(s) per socket — 每 socket 物理核数
- Socket(s) — 物理 CPU 颗数
- NUMA node(s) — NUMA 节点数
- L1d / L1i / L2 / L3 cache — 各级缓存大小

/proc/cpuinfo

直接读取 procfs 获取更细粒度信息:

cat /proc/cpuinfo
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l   # 物理 CPU 数量
cat /proc/cpuinfo | grep "cpu cores" | uniq                      # 每核物理核心数
cat /proc/cpuinfo | grep "siblings" | uniq                       # 每核线程数
cat /proc/cpuinfo | grep -c "processor"                          # 逻辑处理器总数

CPU 温度监控

通过 lm_sensors 读取 CPU 温度,常在压力测试中配合采集:

sudo yum install -y lm_sensors
sudo sh -c "yes|sensors-detect"
sensors

参见:memory-testing(温度采集常用于内存压力测试场景)、disk-storage-testing(NVMe 温度监控类似)


2. 基准性能测试(Benchmark)

Linpack(Intel MKL)

Linpack 通过求解高密度线性方程组(浮点运算)衡量 CPU 科学计算性能。结果单位为 GFLOPS

wget https://software.intel.com/content/dam/develop/external/us/en/documents/l_mklb_p_2021.1.1.001.tgz
cd l_mklb_p_2021.1.1.001/benchmarks_2021.1.1/linux/mkl/benchmarks/linpack
sh runme_xeon64
./xlinpack_xeon64

Geekbench

跨平台综合跑分工具,评估单核/多核性能:

curl -Ol https://cdn.geekbench.com/Geekbench-5.4.1-Linux.tar.gz
tar -xvf Geekbench-*-Linux.tar.gz
cd Geekbench-5.4.1-Linux

sysbench CPU

sysbench 的 CPU 测试通过素数计算(查找指定上限内的素数)评估整数运算能力:

sysbench cpu --cpu-max-prime=10000 --threads=1 run
sysbench cpu --cpu-max-prime=10000 --threads=$N run > sysbench.$N.out

Pi 测算(Super PI)

通过计算圆周率 π 的小数位数来评估 CPU 浮点性能:

wget ftp://pi.super-computing.org/Linux/super_pi.tar.gz
tar -xzvf super_pi.tar.gz
./super_pi 20    # 参数为位数
./super_pi 10000

SPEC CPU

业界权威的 CPU 综合基准测试套件,分为 SPEC CPU 2006 和 SPEC CPU 2017:

# 加载环境
. ./shrc

# CPU 2006 — 飞腾 S5000C 示例
runspec -c cpu2006-phygcc1032-5000C.cfg -T base -n 1 -l -r 1 -i ref fp
runspec -c cpu2006-phygcc1032-5000C.cfg -T base -n 1 -l -r 128 -i ref int

# CPU 2017
echo 3 > /proc/sys/vm/drop_caches
runcpu -c cpu2017-phygcc1032-5000C.cfg -I -T base -n 1 --threads=128 -i ref intspeed

lmbench

lmbench 是一套微基准测试工具,涵盖 CPU 和内存延迟/带宽:

make results
make see

3. 压力 / 稳定性测试(Stress-Test & Burn-In)

cpuburn

cpuburn 通过让 CPU 持续执行密集型指令来产生高热和高压,用于验证散热和长期稳定性:

# 下载并运行
wget https://cdn.pmylund.com/files/tools/cpuburn/linux/cpuburn-1.0-amd64.tar.gz
tar -xf cpuburn-1.0-amd64.tar.gz
cd cpuburn

# 单个核心,运行 3600 秒
./cpuburn -u 3600

# 两个核心,每 5 秒输出一次状态
./cpuburn -n 2 -u 5

mprime(Prime95)

mprime 是 Linux 版 Prime95,业界公认的 CPU 稳定性测试工具:

mkdir Prime95
tar xvf p95v308b17.linux64.tar.gz -C Prime95
cd Prime95
./mprime -t

交互菜单选择压力模式:

模式 选项 说明
Smallest FFTs 1 测试 L1/L2 缓存,高功耗/高温
Small FFTs 2 测试 L1/L2/L3 缓存,最高功耗/高温
Large FFTs 3 压力内存控制器和 RAM
Blend 4(默认) 综合测试

4. 微架构性能计数器(MLC)

Intel Memory Latency Checker(MLC)也包含 CPU 相关检测,详见 memory-testing


关键指标对比

工具 测试类型 主要关注指标 适用场景
Linpack 浮点科学计算 GFLOPS HPC 节点验收
sysbench 整数计算 events/sec, total time 快速多核扩展评估
Geekbench 综合跑分 Single/Multi-Core Score 跨平台对比
SPEC CPU 综合标准基准 SPECint/SPECfp 评分 官方认证基准
cpuburn 稳定性/散热 温度、是否 crash 散热验证
mprime 稳定性/缓存 FFH 错误数 Burn-in 验收
lmbench 微基准 延迟、带宽 系统调优分析
Super PI 浮点单核 计算耗时 快速浮点验证

出链


sysbench 详解

sysbench — 多维度基准测试工具

sysbench 是一个模块化、跨平台的基准测试工具,支持 CPU、内存、文件 I/O、线程、互斥体和数据库(MySQL)等多维度性能测试。它的设计哲学是"一个工具搞定所有基础性能评估",常用于服务器硬件验收、性能基线建立和系统调优前后的对比测试。

安装方法

包管理器安装(推荐)

# Ubuntu/Debian
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench

# RHEL/CentOS
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench

源码编译安装

# 从 GitHub 克隆
git clone https://github.com/akopytov/sysbench.git
cd sysbench

# 编译(不含 MySQL 支持)
./autogen.sh
./configure --without-mysql
make -j
make install

# 验证安装
sysbench --version

命令语法

sysbench [options]... [testname] [command]

CPU 测试

CPU 测试通过计算指定范围内的素数来评估处理器的整数运算能力。

基本命令

sysbench cpu run

# 指定最大素数和线程数
sysbench cpu --cpu-max-prime=10000 --threads=1 run

多线程扩展性测试

通过逐步增加线程数,观察 CPU 性能的扩展曲线,评估多核处理能力:

for threads in 1 2 4 8 16 32 48 128; do
  sysbench cpu --cpu-max-prime=10000 --threads=$threads run \
    > sysbench.$threads.out
done

参数说明

参数 默认值 说明
--cpu-max-prime 10000 素数的上界,值越大计算量越大
--threads 1 并发线程数

结果解读

CPU speed:
    events per second:   452.63

内存测试

内存测试通过大块数据的顺序或随机读写来评估内存子系统的吞吐能力。

基本命令

sysbench memory run

参数说明

参数 默认值 说明
--memory-block-size 1K 每次内存操作的块大小
--memory-total-size 100G 总传输数据量(越大测试越充分)
--memory-scope global 内存访问范围(global/local)
--memory-hugetlb off 是否使用 HugeTLB 页
--memory-oper write 操作类型:write(写)/ read(读)
--memory-access-mode seq 访问模式:seq(顺序)/ rnd(随机)

典型测试场景

# 顺序写测试
sysbench memory --memory-block-size=1M --memory-total-size=50G \
  --memory-access-mode=seq --memory-oper=write run

# 随机读测试
sysbench memory --memory-block-size=1M --memory-total-size=50G \
  --memory-access-mode=rnd --memory-oper=read run

结果解读

Total operations: 10485760 (983456.32 per second)
30720.00 MiB transferred (3021.34 MiB/sec)

文件 I/O 测试

文件 I/O 测试模拟文件系统层面的读写负载。

测试流程

# 第 1 步:准备测试文件
sysbench fileio --file-num=8 --file-total-size=256M prepare

# 第 2 步:运行测试(选择一种模式)
sysbench fileio --file-num=8 --file-total-size=256M --file-test-mode=rndrw run
sysbench fileio --file-num=8 --file-total-size=256M --file-test-mode=seqrd run
sysbench fileio --file-num=8 --file-total-size=256M --file-test-mode=seqwr run

# 第 3 步:清理测试文件
sysbench fileio --file-num=8 --file-total-size=256M cleanup

参数说明

参数 默认值 说明
--file-num 128 测试文件数量
--file-total-size 2G 所有测试文件的总大小
--file-test-mode 测试模式:rndrw, seqrd, seqwr, rndrd, rndwr

测试模式

模式 含义 模拟场景
rndrw 随机混合读写 数据库事务处理
seqrd 顺序读 大文件流式读取
seqwr 顺序写 日志写入、文件导出
rndrd 随机读 文件服务器
rndwr 随机写 缓存更新

线程/互斥体测试

用于评估系统在大量线程并发情况下的调度和同步性能。

线程测试

sysbench threads run
参数 默认值 说明
--thread-yields 1000 每次请求的 yield 次数
--thread-locks 8 每个线程持有的锁数量

互斥体测试

sysbench mutex run
参数 默认值 说明
--mutex-num 4096 互斥体数组大小
--mutex-locks 50000 每个线程的互斥体锁定次数
--mutex-loops 10000 互斥体锁外空循环次数

MySQL 数据库 OLTP 测试

sysbench 内置了 oltp_* 测试套件,用于评估 MySQL 数据库的 OLTP(在线事务处理)性能。

测试流程

# 准备数据
sysbench --mysql-host=localhost --mysql-port=3306 \
  --mysql-user=test --mysql-password=mima \
  --mysql-db=tempdb oltp_insert prepare

# 运行测试
sysbench --mysql-host=localhost --mysql-port=3306 \
  --mysql-user=test --mysql-password=mima \
  --mysql-db=tempdb oltp_insert run

# 清理数据
sysbench --mysql-host=localhost --mysql-port=3306 \
  --mysql-user=test --mysql-password=mima \
  --mysql-db=tempdb oltp_insert cleanup

支持的 OLTP 测试模式包括:oltp_insertoltp_read_writeoltp_read_onlyoltp_update_index 等。

结果解读总结

测试类型 关键指标 说明
CPU events/sec 每秒事件数,越高越好
内存 MiB/sec 内存带宽,越高越好
文件 I/O read/write MiB/sec, IOPS 文件系统吞吐和 IOPS
线程 events/sec 线程调度性能
MySQL tps, qps 每秒事务数/查询数

相关概念