Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

187 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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