CPU测试模块 (CPU Test Module)
- 使用
sysbench测试CPU得分,支持从原生环境,Go重构的代码进行测试 - 使用
geekbench测试CPU得分 - 当原环境都无依赖时,将使用Golang原生实现的程序测试进行测试,但单线程一般会比sysbench原程序(LUA版本)低300个左右的事件数每秒(得分)(8.8%误差)
- 使用
winsat测试CPU得分 - 以
-l指定输出的语言类型,可指定zh或en,默认不指定时使用中文输出 - 以
-m指定测试的方法,可指定sysbench或geekbench,默认不指定时使用sysbench进行测试 - 以
-t指定测试的线程数,可指定single或multi,默认不指定时使用单线程进行测试 - 全平台编译支持
- 下载
geekbench前检测本机剩余内存是否足以进行测试,检测是否有IPV4网络以获取结果,自动切换下载的版本 - 支持纯 Go 结构化 CPU 持续计算测试,可指定时长和请求线程数,并按 affinity、cpuset、cgroup 配额确定有效线程
下载、安装、升级
curl https://raw.githubusercontent.com/oneclickvirt/cputest/main/ct_install.sh -sSf | bash
或
curl https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/cputest/main/ct_install.sh -sSf | bash
使用
cputest
或
./cputest
进行测试
Usage: cputest [options]
-h Show help information
-l string
Language parameter (en or zh)
-log
Enable logging
-json
Print the Go structured CPU result as JSON
-structured
Print the Go structured CPU result as JSON
-duration duration
Structured benchmark duration (for example 5s, at most 20s)
-threads int
Structured benchmark worker count
-m string
Specific Test Method (sysbench or geekbench)
-t string
Specific Test Thread Mode (single or multi)
-v show version
结构化测试示例:
cputest -json -duration 20s -threads 4结构化结果中的 requested_threads 是请求线程数,effective_threads 是结合 GOMAXPROCS、CPU affinity、cpuset 和 cgroup CPU 配额后实际使用的线程数。每个有效线程会持续执行固定上限的素数校验;完成一轮记为一个 event。events_per_second 是全部有效线程合计每秒完成的事件数,events 是总事件数,duration_ms 是实际运行时间。
融合项目中显示的 压力测试 : 20.005s / 2 线程 / 44.59 次/秒 / 892 次 与这些字段一一对应:实际时间 / 有效线程 / 每秒事件 / 总事件。工作线程完成最后一轮计算会使实际时间略高于设定时间。比较结果时应保持组件版本、时长和线程条件一致。
如果安装脚本未包含对应架构和系统,可自行到 https://github.com/oneclickvirt/cputest/releases/tag/output 查找对应架构和系统下载使用
rm -rf /root/cputest
rm -rf /usr/bin/cputest
go get github.com/oneclickvirt/cputest@v0.0.18
可安装可不安装,已原生实现程序已包含,装了测的更准一些
注意:geekbench测试不支持离线操作,需要确保宿主机存在IPV4网络时才能进行测试,纯IPV6网络也不能进行测试。
个人更推荐使用sysbench进行测试,geekbench测试的基准线随着版本不同是不一样的(对标版本初期最强劲的Intel的CPU),而sysbench的基准线一直是5秒内算素数,不存在变动。(同等条件下geekbench需要测试至少2分钟)
对于 linux-amd64 和 linux-arm64 平台,官方发布的二进制已通过 GitHub Actions 将 Geekbench 5.5.1 嵌入其中,无需手动安装即可直接使用 -m geekbench 进行测试。
其他平台(如 Windows、macOS、FreeBSD 及 Linux 其他架构)的二进制不含内嵌 Geekbench,若需使用请参考下方手动安装方式。
同等测试环境下,sysbench测试没有最低内存大小需求,而geekbench有最低内存大小需求(至少1GB内存)。
curl -L https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o addswap.sh && chmod +x addswap.sh && bash addswap.sh
执行后若显示
total used free shared buff/cache available
Mem: 512 0 512 0 0 0
Swap: 0 0 0
看到free那一列的大小上下加起来不足1512时,输入数字1选择添加虚拟内存,然后输入1512增加虚拟内存。
若需在不含内嵌 Geekbench 的平台上使用,或需要指定 gb4/gb5/gb6 版本,可手动执行
curl -L https://raw.githubusercontent.com/oneclickvirt/cputest/main/dgb.sh -o dgb.sh && chmod +x dgb.sh
然后使用-v指定需要后续使用的geekbench版本gb4或gb5或gb6
若我后续使用geekbench6进行测试则
bash dgb.sh -v gb6
下载对应版本的geekbench