作者:高玉涵
博客:blog.csdn.net/cg_i
日期:2021.7.14 20:00

“不服,来跑个分吧!”

——国内某科技圈知名人士的名言

分数不是衡量孩子的唯一标准

    第一幅图中一个满脸笑意的孩子拿着一张100分的卷子,颊上是他父母鼓励的唇印,与之形成鲜明对比的是另一个拿着一张55分卷子的孩子,他愁苦的脸上,巴掌印触目惊心。而第二幅图中,那个曾考了100分的孩子只考了98分,脸上也因此添了一道巴掌印,而另一个孩子却因为这次考了61分而获得了父母的吻。
    这则漫画反映了如今家长对孩子的成绩过于关注的现状,一个孩子无论成绩好坏,退步了就打,进步了就夸,仿佛那冰冷的数字就是孩子的一切,我理解父母们望子成龙、望女成凤的心态。然而,事实证明,分数的确不是评价孩子的惟一标准。善良、诚信、责任心等,也许是比智力更为宝贵的品质。
    巧合的是上述情景正发生在国产CPU、操作系统上。在美国对中国技术封锁的背景下,国产CPU、操作系统艰难起步,同时也迎来越来越好的发展历史机遇,产品性能逐渐提升。像此次性能测试的机器,CPU为国产Hygon C86 7280、操作系统为国产银河麒麟V10服务器版。这也是我第一次接触国产CPU和国产操作系统,这多少让我有些激动。
    相对于国外芯片“巨人”英特尔、操作系统“帝国”微软等等,国产CPU、操作系统在它们面前就是个“孩子”。国内舆论不是极左就是极右,鲜有科学看待国产IT发展。这可能缘于“父母望子成龙、望女成凤的心态”吧!只要踏踏实实做事,时间会证明一切。您看我这不就写了一篇,国产CPU性能测试的文章吗?这在以前是我想也不敢想的事情。

性能测试软硬件环境介绍

    跑分就是用软件测试系统成绩,分数是衡量系统各项指标较为直观的展现。通俗点讲就是好到什么程序、差到什么程度。一般测试用同一软件、系统,测试软件的成绩分,分数高的当然性能好。
    为了使“跑分”具趣味性、差异性,测试使用了两套硬件平台,主要参数如下:

    平台一

    OS: GNU/Linux -- 4.19.90-23.8.v2101.ky10.x86_64 -- #1 SMP Mon May 17 17:08:34 CST 2021
    
CPU型号:Hygon C86 7280 32-core Processor
    
单CPU内核数:32
    
CPU个数:2
    
总CPU线程数:128
    
内存:262690900 kB

    平台二

    OS: GNU/Linux -- 4.19.90-23.8.v2101.ky10.x86_64 -- #1 SMP Mon May 17 17:08:34 CST 2021CPU型号:Intel(R) Xeon(R) CPU E7-8891 v4 @ 2.80GHz
   
单CPU内核数:10
  
CPU个数:4
  
总CPU线程数:80
  
内存:526940828 kB

   注:以上参数来自麒麟操作系统/proc/cpuinfo、/proc/meminfo配置文件信息。

UnixBench工具概述

    UnixBench是最初的BYTE UNIX基准测试套件,多年来经过许多人的更新和修订(最新版本是V5.1.3)。
    下载地址:https://github.com/kdlucas/byte-unixbench
    UnixBench的目的是为类Unix系统的性能提供一个基本指标;因此,使用多个测试来测试系统性能的各个方面。然后将这些测试结果与基线系统的分数进行比较以产生一个指数值,这通常比原始分数更容易处理。然后组合整个索引值集以形成系统的整体索引。
    包括一些非常简单的图形测试来测量系统的2D和3D图形性能。
    如果您的系统有多个CPU,默认行为是两次运行选定的测试——一次运行每个测试程序的一个副本,一次运行N个副本,其中N 是CPU的数量。这旨在让您评估:
    运行单个任务时系统的性能
    运行多个任务时系统的性能

    值得注意的是,这是一个系统基准测试,而不是CPU、RAM或磁盘基准测试。结果不仅取决于您的硬件,还取决于您的操作系统、库,甚至编译器。

测试得分项说明

Dhrystone

    该基准测试用于衡量和比较计算机的性能。该测试侧重于字符串处理,因为没有浮点运算。它受硬件和软件设计、编译器和链接器选项、代码优化、高速缓存、等待状态和整数数据类型的影响很大。

Whetstone

    该测试测量浮点运算的速度和效率。该测试包含多个模块,旨在代表通常在科学应用中执行的混合操作。使用了多种C函数,包括sin、cos、sqrt、exp 和log,以及整数和浮点数学运算、数组访问、条件分支和过程调用。该测试测量整数和浮点算术。

execl Throughput

    此测试测量每秒可以执行的 execl 调用数。execl 是exec系列函数的一部分,它用新的进程映像替换当前进程映像。它和许多其他类似的命令是函数 execve()的前端。

File Copy

    这测量使用各种缓冲区大小将数据从一个文件传输到另一个文件的速率。文件读取、写入和复制测试捕获在指定时间内(默认为 10 秒)可以写入、读取和复制的字符数。

Pipe Throughput

    管道是进程间最简单的通信形式。管道吞吐量是进程可以将512字节写入管道并将其读回的次数(每秒)。管道吞吐量测试在现实世界的编程中没有真正的对应物。

Pipe-based Context Switching

    此测试测量两个进程可以通过管道交换递增整数的次数。基于管道的上下文切换测试更像是一个真实世界的应用程序。测试程序产生一个子进程,它与它进行双向管道对话。

Process Creation

    此测试测量进程可以分叉并获取立即退出的子进程的次数。进程创建是指为新进程实际创建进程控制块和内存分配,因此这直接适用于内存带宽。通常,该基准测试将用于比较操作系统进程创建调用的各种实现。

Shell Scripts

    shell 脚本测试测量进程每分钟可以启动和获取一组 shell 脚本的一个、两个、四个和八个并发副本的次数,其中 shell 脚本将一系列转换应用于数据文件。

System Call Overhead

    这估计了进入和离开操作系统内核的成本,即执行系统调用的开销。它由一个重复调用 getpid(返回调用进程的进程 ID)系统调用的简单程序组成。执行此类调用的时间用于估计进入和退出内核的成本。

Graphical Tests

    提供 2D 和 3D 图形测试;目前,特别是 3D 套件非常有限,包括 ubgears 程序。这些测试旨在对系统的2D 和 3D 图形性能提供一个非常粗略的概念。当然,请记住,报告的性能不仅取决于硬件,还取决于您的系统是否有合适的驱动程序。

性能测评分对比表

 

结果分析

    从上面的测试结果可以看出,Hygon C86 7280 平台单个并行任务得分为923.4;128个并行任务得分为8491.9。对比Intel E7-8891平台差距是明显的,由此可见X86平台下的国产CPU,生存环境依然举步维坚,但也没有想像的那么差“中国芯”比肩INTEL指日可待。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐