Allwinner H2+ Sysbench CPU Test (1)

这一篇是关于手上的 全志H2+ CPU 的个人测试结果,仅此参考而已!
对了,裸机,没有任何散热芯片。

首先,看 Linux 上的平台数据:
$ lscpu
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
Model name:            ARMv7 Processor rev 5 (v7l)
CPU max MHz:           1008.0000
CPU min MHz:           480.0000
$ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 1
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 2
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 3
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : Allwinner sun8i Family
Revision        : 0000
Serial          : ----------------------
$ getconf LONG_BIT
32
32位的系统,最小值是480MHz,的确有点可怕,只有测试了之后才知道大致的结果。

基于 Sysbench 5秒钟测试质素的结果:
$ sysbench --test=cpu --num-threads=1 --cpu-max-prime=20000 --max-time=5 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Time limit exceeded, exiting...
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          5.0096s
    total number of events:              89
    total time taken by event execution: 5.0087
    per-request statistics:
         min:                                 56.17ms
         avg:                                 56.28ms
         max:                                 59.74ms
         approx.  95 percentile:              56.27ms

Threads fairness:
    events (avg/stddev):           89.0000/0.00
    execution time (avg/stddev):   5.0087/0.00
你可以看到单线程是非常的卡,也非常的慢。 所以我打算写脚本来测试它在多少线程可以表现得最优秀,安装screen来使脚本后台运行,看top参数可以看到CPU已经慢慢的跑了。
$ top
top - 20:25:35 up 2 days,  6:51,  1 user,  load average: 1.18, 0.29, 0.36
Tasks: 111 total,   1 running,  64 sleeping,   0 stopped,   0 zombie
%Cpu(s): 99.8 us,  0.2 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   502900 total,   148556 free,    43212 used,   311132 buff/cache
KiB Swap:   251440 total,   251440 free,        0 used.   428828 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
31689 root      20   0    9192   1920   1600 S 400.0  0.4   0:16.77 sysbench
31666 root      20   0    4932   2264   1824 R   0.3  0.5   0:00.19 top
    1 root      20   0   24688   4608   2588 S   0.0  0.9   0:15.33 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:01.24 kthreadd
    3 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 rcu_gp
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 rcu_par_gp
    8 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq
    9 root      20   0       0      0      0 S   0.0  0.0   6:18.66 ksoftirqd/0
   10 root      20   0       0      0      0 I   0.0  0.0   0:23.47 rcu_sched
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.09 migration/0
   12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/0
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/1
   14 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 migration/1
   15 root      20   0       0      0      0 S   0.0  0.0   0:04.88 ksoftirqd/1
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/2
   19 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 migration/2
   20 root      20   0       0      0      0 S   0.0  0.0   0:04.41 ksoftirqd/2
   23 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/3
   24 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 migration/3
通过top观察,可以成功看到已经跑满了4核心的一段时间。 用脚本测试1-200线程分别计算质数5秒钟的结果,通过分析源文件分析,图表如下:
通过这张图,可以很清楚的看到当处理线程 >163 的时候,CPU开始出现很不稳定,因为Linux开始忙不过来了,处理的时间也变长了。

在CPU同时处理72和73条线程的时候操作系统还可以忙得过来,在有4条或以上的线程运行时,CPU开始发烫,CPU的极限是487,平均在400左右。

越多请求,CPU处理一条线程的时间就越久,导致系统越繁忙,导致系统波动就越大。

Datasheet

你可以从 wiki.friendlyarm 下载到有关 Allwinner H2+ 的 Datasheet,值得注意的是:
  • H2+ embeds one thermal sensor located in the CPU. The thermal sensor Generates interrupt to SW to lower temperature via DVFS, on reaching a certain thermal threshold.

In conclusion

数据都是我自己测试的,仅供参考。如果有问题可以在下面留言,我会看到的。不允许转载,但可以分享!请贴上链接和声明作者为Mane,谢谢!


Comments