最近在鹏城实验室申请到了基于飞腾2000+处理器搭载麒麟V10的VPS,遂好好体验了一下国产处理器和国产操作系统结合的体验,首先放一下配置概览:
简单的介绍一下飞腾2000+这颗处理器吧,之前我已经体验过鲲鹏920和龙芯3A4000这两款国产处理器了,飞腾这款处理器本质上也是基于ARMv8架构的处理器,不过飞腾说这是自研的FTC663核心兼容ARMv8,是16nm制程,最大功耗10w,单芯片四核处理器。个人感觉无论从什么方面看,都要比同期的鲲鹏920处理器逊色不少,不过现在鲲鹏系列已经无法更新了,飞腾还可以继续往前走
通过系统可以看一下在Linux系统中这颗U是被正常识别的:
root@host-10-0-0-13:~# cat /proc/cpuinfo
processor : 0
model name : Phytium,FT-2000+/64
bogomips : 3600.00
Features : fp asimd evtstrm crc32
flags : fp asimd evtstrm crc32
CPU implementer : 0x70
CPU architecture: 8
CPU variant : 0x1
CPU part : 0x662
CPU revision : 2
我们也可以来看一下系统信息:
root@host-10-0-0-13:~# cat /proc/version
Linux version 4.4.131-20200415.kylin.desktop-generic (YHKYLIN-OS@Kylin) (gcc version 5.5.0 20171010 (Ubuntu/Linaro 5.5.0-12ubuntu1~16.04) ) #kylin SMP Wed Apr 15 18:30:40 CST 2020
硬件信息概况:
root@host-10-0-0-13:~# lshw -short
H/W path Device Class Description
===================================================
system Computer
/0 bus Motherboard
/0/0 processor cpu
/0/1 processor cpu
/0/2 processor cpu
/0/3 processor cpu
/0/4 memory 7944MiB System memory
/0/100 bridge QEMU PCIe Host bridge
/0/100/1 bridge QEMU PCIe Root port
/0/100/1/0 enp1s0 network Virtio network device
/0/100/1.1 bridge QEMU PCIe Root port
/0/100/1.1/0 storage Virtio SCSI
/0/100/1.2 bridge QEMU PCIe Root port
/0/100/1.2/0 bus uPD720200 USB 3.0 Host Controller
/0/100/1.2/0/0 usb2 bus xHCI Host Controller
/0/100/1.2/0/1 usb1 bus xHCI Host Controller
/0/100/1.2/0/1/1 input QEMU USB Mouse
/0/100/1.2/0/1/2 input QEMU USB Keyboard
/0/100/1.3 bridge QEMU PCIe Root port
/0/100/1.3/0 bus uPD720200 USB 3.0 Host Controller
/0/100/1.3/0/0 usb4 bus xHCI Host Controller
/0/100/1.3/0/1 usb3 bus xHCI Host Controller
/0/100/1.4 bridge QEMU PCIe Root port
/0/100/1.4/0 generic Virtio memory balloon
/0/100/2 bridge 82801 PCI Bridge
/0/100/2/0 bridge QEMU PCI-PCI bridge
/0/100/2/0/1 display VGA compatible controller
/0/100/6 bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/100/6/0 input Virtio input
/0/100/7 bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/100/8 bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/100/9 bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/100/a bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/100/b bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/100/c bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/100/d bridge 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0
/0/5 scsi0 storage
/0/5/0.0.0 /dev/sda disk 85GB SCSI Disk
/0/5/0.0.0/1 /dev/sda1 volume 189MiB Windows FAT volume
/0/5/0.0.0/2 /dev/sda2 volume 488MiB EXT4 volume
/0/5/0.0.0/3 /dev/sda3 volume 79GiB EXT4 volume
其中比较神奇的是我们可以发现这台电脑配备了国产GPU-景嘉微电子的JM7200,我也是在更新驱动的时候发现的
aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
简单来说就是可以解决很多奇怪的依赖问题,安装:
$ apt install aptitude
使用aptitude的方法与apt的方法相同,其他的使用环境和普通的Ubuntu并没有什么太大的不同,接下来我们来跑一下分好了
这里的性能测试主要针对CPU性能本身,使用的工具是UnixBench
UnixBench是一个类 Unix 系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试 Linux 系统主机的性能。UnixBench 的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据
Dhrystone 2 using register variables:此项用于测试 string handling,因为没有浮点操作,所以深受软件和硬件设计(hardware and software design)、编译和链接(compiler and linker options)、代码优化(code optimazaton)、对内存的cache(cache memory)、等待状态(wait states)、整数数据类型(integer data types)的影响
Double-Precision Whetstone:这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算
Execl Throughput:此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端
File copy:测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数
Pipe Throughput:管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在
Pipe-based Context Switching:这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输
Process Creation:测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。
process creation 的关注点是新进程进程控制块(process control block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较
System Call Overhead:测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的
Shell Scripts:测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8。(我在测试时取 1, 8)。这个脚本对一个数据文件进行一系列的变形操作(transformation)
在GitHub上可以获取到所有的源代码,来自行编译
$ git clone https://github.com/kdlucas/byte-unixbench.git
然后就可以开始编译了,针对ARM架构需要一些编译预选项
$ sed -i 's/-mtune=native//' Makefile
$ sed -i 's/-march=native//' Makefile
$ sed -i 's/$field eq "bogomips"/$field eq "bogomips" or $field eq "BogoMIPS" /g' Run
CPU整型跑分指令:
$ ./Run -c 1 dhry2reg
CPU浮点型跑分指令:
$ ./Run -c 1 whetstone
跑分数据如下:
核心数 | 整型 | 浮点 |
---|---|---|
1 | 1951.6 | 542.4 |
4 | 7747.9 | 2162.4 |
作为对比,这里使用另外三台VPS的不同架构的CPU作为对比:
这里主要测试单核性能,因为腾讯云的服务器只有一个核心
型号 | 整型 | 浮点 |
---|---|---|
Loongson-3A4000 | 1100.3 | 377.8 |
Huawei Kunpeng 920 | 3449.7 | 655.5 |
Intel® Xeon® Gold 6148 CPU @ 2.40GHz | 3395.3 | 1193.4 |
可以看出同是ARM架构的处理器,鲲鹏920无论是整型还是浮点性能都对飞腾2000+形成了差距