Skip to content

Repository files navigation

cputest

Hits

Build and Release

CPU测试模块 (CPU Test Module)

功能(Features)

  • 使用sysbench测试CPU得分,支持从原生环境,Go重构的代码进行测试
  • 使用geekbench测试CPU得分
  • 当原环境都无依赖时,将使用Golang原生实现的程序测试进行测试,但单线程一般会比sysbench原程序(LUA版本)低300个左右的事件数每秒(得分)(8.8%误差)
  • 使用winsat测试CPU得分
  • -l指定输出的语言类型,可指定zhen,默认不指定时使用中文输出
  • -m指定测试的方法,可指定sysbenchgeekbench,默认不指定时使用sysbench进行测试
  • -t指定测试的线程数,可指定singlemulti,默认不指定时使用单线程进行测试
  • 全平台编译支持
  • 下载geekbench前检测本机剩余内存是否足以进行测试,检测是否有IPV4网络以获取结果,自动切换下载的版本
  • 支持纯 Go 结构化 CPU 持续计算测试,可指定时长和请求线程数,并按 affinity、cpuset、cgroup 配额确定有效线程

使用(Usage)

下载、安装、升级

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 配额后实际使用的线程数。每个有效线程会持续执行固定上限的素数校验;完成一轮记为一个 eventevents_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

在Golang中使用

go get github.com/oneclickvirt/cputest@v0.0.18

额外环境安装(非必须)

sysbench

可安装可不安装,已原生实现程序已包含,装了测的更准一些

geekbench

注意:geekbench测试不支持离线操作,需要确保宿主机存在IPV4网络时才能进行测试,纯IPV6网络也不能进行测试。

个人更推荐使用sysbench进行测试,geekbench测试的基准线随着版本不同是不一样的(对标版本初期最强劲的Intel的CPU),而sysbench的基准线一直是5秒内算素数,不存在变动。(同等条件下geekbench需要测试至少2分钟)

geekbench 二进制内嵌说明

对于 linux-amd64linux-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(可选)

若需在不含内嵌 Geekbench 的平台上使用,或需要指定 gb4/gb5/gb6 版本,可手动执行

curl -L https://raw.githubusercontent.com/oneclickvirt/cputest/main/dgb.sh -o dgb.sh && chmod +x dgb.sh

然后使用-v指定需要后续使用的geekbench版本gb4gb5gb6

若我后续使用geekbench6进行测试则

bash dgb.sh -v gb6

下载对应版本的geekbench

Releases

Used by

Contributors

Languages