适用于 Linux 的 CPU 基准测试实用程序

fat*_*tso 84 performance cpu

我正在寻找一种实用程序,可以在单线程和多线程实例下对 CPU 性能进行基准测试。目前,我有一台带有 3.6 Ghz 双核 CPU (E7500) 的旧设备,我正在考虑用 3.2 Ghz 的四核 CPU (Q9400) 替换它。我想看看我是否会注意到额外的 2 个内核的性能改进(尽管内核速度有所下降)。我将使用相同的 FSB (400Mhz) 为 CPU 计时,每个 CPU 的缓存大小相同 (1.5MB),而且我有 4GB 内存(有可能升级到 6GB)

我儿子主要使用 PC 播放 TF2(我仍在尝试在 Linux 下工作),我也将其用于一些视频编码(MP4 到 DVD)

我想我可以更好地使用四核,但任何反馈都将不胜感激。

rɑː*_*dʒɑ 104

实际上有一个名为sysbench.

您可以使用以下命令安装它:

sudo apt-get install sysbench
Run Code Online (Sandbox Code Playgroud)

对于 CPU 基准测试,您可以这样做

sysbench --test=cpu --cpu-max-prime=20000 run
Run Code Online (Sandbox Code Playgroud)

其中 20000 就像最大事件计数。

  • 另请注意,默认情况下这是单线程测试。要测试 N 个内核,您可以使用 `--num-threads=N`,并使用 *per-request* 统计输出比较结果。 (17认同)
  • `--cpu-max-prime=20000` 是可选的,默认为 `10000`。我建议保留默认值并改用`--max-requests`(这是执行的操作数) (10认同)
  • 有没有地方可以比较输出以获得相对性能? (3认同)
  • 对于较新的版本,可以省略 `--test=` 选项,只需使用 `sysbench cpu...`。否则`sysbench` 1.0.18 打印:`警告:不推荐使用--test 选项。您可以在没有任何选项的情况下在命令行上传递脚本名称或路径。` (3认同)
  • @MestreLion `警告:--num-threads 已弃用,请改用 --threads` (3认同)

Col*_*ing 34

或者,可以使用stress-ng. 它有一个 CPU 压力测试,作为该工具内置的众多压力测试之一。cpu压力测试包含许多不同的CPU压力方法,涵盖整数、浮点、位运算、混合计算、素数计算和广泛的计算。

安装使用:

sudo apt-get install stress-ng
Run Code Online (Sandbox Code Playgroud)

要查看与 cpu 相关的压力方法,请使用:

stress-ng --cpu-method which
Run Code Online (Sandbox Code Playgroud)

例如,要在 4 个 CPU 线程上对矩阵乘积进行 60 秒的基准测试,请使用:

stress-ng --cpu 4 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [15876] dispatching hogs: 4 cpu
stress-ng: info:  [15876] successful run completed in 60.00s (1 min, 0.00 secs)
stress-ng: info:  [15876] stressor      bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [15876]                          (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [15876] cpu              71657     60.00    239.60      0.00      1194.25       299.07
stress-ng: info:  [15876] cpu:
stress-ng: info:  [15876]            885,244,279,148 CPU Cycles                    14.75 B/sec
stress-ng: info:  [15876]          1,289,303,858,968 Instructions                  21.49 B/sec (1.456 instr. per cycle)
stress-ng: info:  [15876]            201,499,961,692 Cache References               3.36 B/sec
stress-ng: info:  [15876]                    790,424 Cache Misses                  13.17 K/sec ( 0.00%)
stress-ng: info:  [15876]            157,689,508,544 Branch Instructions            2.63 B/sec
stress-ng: info:  [15876]              1,232,539,732 Branch Misses                 20.54 M/sec ( 0.78%)
stress-ng: info:  [15876]              5,755,605,036 Bus Cycles                    95.92 M/sec
stress-ng: info:  [15876]            817,296,440,876 Total Cycles                  13.62 B/sec
stress-ng: info:  [15876]                      8,532 Page Faults Minor            142.19 sec  
stress-ng: info:  [15876]                          0 Page Faults Major              0.00 sec  
stress-ng: info:  [15876]                        220 Context Switches               3.67 sec  
stress-ng: info:  [15876]                          0 CPU Migrations                 0.00 sec  
stress-ng: info:  [15876]                          0 Alignment Faults               0.00 sec  
Run Code Online (Sandbox Code Playgroud)

  • 作为stress-ng的作者,我最好详细说明一下。压力-ng 足以从中得出一些比较基准的结果,但尚未经过彻底校准以说明每个特定压力源存在多少偏差。因此,我建议多次运行压力测试,看看特定压力测试有多少变化,如果变化不大,那么可以认为它足够可靠,可以作为特定用例的基准。这完全取决于系统现在是否嘈杂/忙碌,I/O 的性能如何,是否交换等。 (5认同)
  • 比较 `stress-ng` 和 `sysbench`,一个告诉我系统 A 更快(125%),另一个告诉我系统 B 更快(140%),哪个是正确的? (4认同)
  • “无法定位包stress-ng!” (3认同)
  • 来自stress-ng联机帮助页:“stress-ng还可以测量测试吞吐率;这对于观察不同操作系统版本或硬件类型之间的性能变化很有用。但是,它从来没有打算用作精确的基准测试测试套件,所以不要以这种方式使用它。” (2认同)

小智 19

旧问题(尚未选择答案)

但是我最近正在寻找一个在包括 Ubuntu 在内的多个“发行版”(Termux 并不是真正的发行版)中可用的工具,虽然上述软件包是一个常见的不错选择,但我在这里阅读:https : //linuxhint.com/useful_linux_stress_test_benchmark_cpu_perf /那个 7-zip 有一个内置的基准测试工具!几乎每个发行版存储库中都可以找到 7zip。

要运行单线程基准测试: 7z b -mmt1

要运行多线程基准测试: 7z b

我的 Pixel 2 手机的结果:

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,8 CPUs LE)

LE
CPU Freq:  1509  2234  2434  2447  2433  2406  2430  2425  2400

RAM size:    3657 MB,  # CPU hardware threads:   8
RAM usage:    435 MB,  # Benchmark threads:      1

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       1666    99   1631   1621  |      30427   100   2608   2598
23:       1602    99   1644   1633  |      29815   100   2589   2581
24:       1517    99   1644   1632  |      29441   100   2595   2585
25:       1397    99   1607   1596  |      28748   100   2567   2559
----------------------------------  | ------------------------------
Avr:              99   1632   1620  |              100   2590   2581
Tot:              99   2111   2100
Run Code Online (Sandbox Code Playgroud)

  • 它与选项“-mm=*”一起运行多个测试效果很好。例如 `7z b -mm=*` (3认同)
  • 此页面上提到的其他工具在安装时引入了一堆明显无关的依赖项,但 `7z` 是独立的,因此是我的用例的赢家。 (2认同)

Cir*_*郝海东 15

phoronix 测试套件

sudo apt-get install phoronix-test-suite
phoronix-test-suite list-available-suites
# Chose one, and run it.
phoronix-test-suite run pts/cpu    
Run Code Online (Sandbox Code Playgroud)

对几个真实世界的 CPU 密集型用例进行基准测试,例如压缩、加密和数据库。

请注意,pts/cpu其他基准测试会占用几 GB 的磁盘空间。这可能意味着他们有更现实的工作负载。

在 Ubuntu 16.10 上测试。

  • 同意,如果您正在寻找一个简单的基准测试,那么您不需要 phoronix-test-suite,它很大,并且不断要求下载越来越多的依赖项来运行测试。(我确信当你真的想要这个时,它是非常彻底的) (4认同)
  • @downvoters 请解释:-) (3认同)
  • 谢谢。我淹没在测试选项中,在我第一轮使用 phoronix 时使用 build-suite。 (2认同)
  • 在描述 PTS 时应该提到的一件事是其基准的大小。运行提到的`pts/cpu` 基准测试会下载大约 3GB 的数据并使用大约 7GB 的磁盘空间(在用户的主目录中)。 (2认同)

Ant*_*nko 5

如果您没有 root 权限(例如托管 Web 服务器)

测量单芯:

-bash-4.2$ time cat </dev/urandom | head -c 1G | gzip >/dev/null

real    0m43.011s
user    0m42.608s
sys     0m8.819s
Run Code Online (Sandbox Code Playgroud)

测量所有核心:

-bash-4.2$ time cat </dev/urandom | head -c 1G | pigz >/dev/null

real    0m13.870s
user    0m45.988s
sys     0m6.803s
Run Code Online (Sandbox Code Playgroud)

如果您已经拥有pv但不想安装特殊的基准测试软件,那么它会更加简单

a@a-virtual-machine:~$ pv </dev/urandom | gzip >/dev/null 
 149MiB 0:00:04 [37.5MiB/s]
a@a-virtual-machine:~$ pv </dev/urandom | pigz >/dev/null 
 348MiB 0:00:02 [ 173MiB/s]
Run Code Online (Sandbox Code Playgroud)