Skip to content

02 全面发展 - CPU 及其多维评价体系

静态指标与动态指标

  • 静态指标:衡量的是 CPU 的硬件规格和性能参数,一般可从数据手册中获知
    • CPU 的时钟频率、核心数量、缓存大小等
    • 用于比较不同型号的 CPU 之间的性能差异
    • 评估处理器的理论性能
    • 现实生活中的静态指标:
      • 于个人 => 身高、体重、学历、样貌等
      • 于公司 => 市值、员工数量、主营业务
      • 是一些容易获知的参数
  • 动态指标:衡量的是 CPU 在实际使用中的性能表现,需要借助各类型 BenchMark
    • 程序的执行时间、响应速度、能耗等
    • 更能反映 CPU 在实际使用中的性能表现
    • 现实生活中的动态指标:
      • 于个人 => 性格、谈吐、人品、能力等
      • 于公司 => 公司理念,团队文化,创新精神
      • 需要在交流接触过程中感受

CPU 的静态指标

通常包括:

  • 核心数(物理核/逻辑核)
  • 基频频率
  • 睿频频率
  • Cache 大小
  • 制程
  • 典型功率
  • ……

Intel Xeon Gold 6226 CPU 静态指标

CPU Specifications
Total Cores
物理核
12
Total Threads
逻辑核
24
Max Turbo Frequency
最大睿频频率
3.70 GHz
Processor Base Frequency
处理器基础频率
2.70 GHz
Cache
Cache 大小
19.25 MB
Max # of UPI Links
UPI 数量
3
TDP
典型功率
125W

SPEC CPU

  • SPEC,英文全称为 Standard Performance Evaluation Corporation,译为标准性能评估组织,一个非营利性组织,制定了一系列基准测试标准
  • SPEC CPU 测试通常是计算机硬件评测中的重要参考标准之一,其主要测试场景包括:
    • 整数计算 (lnteger)
    • 浮点计算(Floating-point)
    • 访存 (Memory)
    • 控制流 (Control flow)
    • 压缩解压 (Compression/Decompression)
    • 加密解密 (Encryption/Decryption)
    • 图像处理 (lmage processing)
  • 非盈利组织 ≠ 软件免费使用

a53bbab3-bda5-4bb3-b992-41ef29f6d7e0

其他常用 BenchMark

  • Oracle:数据库,常用 tps/tpm 进行性能衡量;
  • MySQL:开源数据库,常用 tps/tpm 进行性能衡量;
  • Nginx:常用于网络性能测试,常用 99%latency 进行性能衡量;
  • SPECJbb:JAVA 性能测试工具,对内存敏感;
  • ……

自定义 BenchMark

通过在不同的处理器上,安装相同的操作系统,利用相同的编译器编译出相同计算任务(如计算 100W 以内的素数等)二进制文件并执行,比较两者的计算时间,可粗略评估不同处理器的计算性能。

说明

在某一特定计算任务中性能表现好,并不表明该处理器综合性能更优!

bash
sudo yum search time
sudo yum install time -y
bash
  linux_demo /usr/bin/time ./is_prime > /tmp/is_prime.log
0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 3456maxresident)k
0inputs+8outputs (0major+135minor)pagefaults 0swaps
  linux_demo /usr/bin/time -v ./is_prime > /tmp/is_prime.log
        Command being timed: "./is_prime"
        User time (seconds): 0.00
        System time (seconds): 0.00
        Percent of CPU this job got: 0%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 3456
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 136
        Voluntary context switches: 0
        Involuntary context switches: 0
        Swaps: 0
        File system inputs: 0
        File system outputs: 8
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
bash
  linux_demo /usr/bin/time ./quicksort 128 > /tmp/quicksort.log
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 3456maxresident)k
0inputs+8outputs (0major+138minor)pagefaults 0swaps
  linux_demo /usr/bin/time -v ./quicksort 128 > /tmp/quicksort.log
        Command being timed: "./quicksort 128"
        User time (seconds): 0.00
        System time (seconds): 0.00
        Percent of CPU this job got: 100%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 3456
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 136
        Voluntary context switches: 0
        Involuntary context switches: 0
        Swaps: 0
        File system inputs: 0
        File system outputs: 8
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0