硬件性能测试指南
RHILEX 运行过程需要一定的硬件资源,资源越充足功能越优越。本指南将帮助开发者通过系统工具和基准测试评估嵌入式 Linux 设备的性能,包括 CPU、内存和存储等关键指标。
测试准备
环境准备
- 确保设备运行稳定的嵌入式 Linux 系统。
- 安装必要的测试工具,如 Sysbench 和 fio。
# 安装 Sysbench
sudo apt-get install sysbench
 
# 安装 fio
sudo apt-get install fio测试规划
- 确定需要测试的硬件部分(CPU、内存、存储)。
- 制定测试计划,包括测试次数和期望结果。
性能测试方法
CPU 性能测试
使用 Sysbench 进行 CPU 性能测试,评估设备的计算能力。
测试步骤
- 运行以下命令:
sysbench cpu run- 记录输出,特别注意每秒处理的事件数(events/sec)。
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
 
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
 
 
Prime numbers limit: 10000
 
Initializing worker threads...
 
Threads started!
 
CPU speed:
    events per second:  1373.53
 
General statistics:
    total time:                          10.0007s
    total number of events:              13738
 
Latency (ms):
         min:                                    0.66
         avg:                                    0.73
         max:                                    1.98
         95th percentile:                        0.77
         sum:                                 9993.60
 
Threads fairness:
    events (avg/stddev):           13738.0000/0.00
    execution time (avg/stddev):   9.9936/0.00评分参照表
| 每秒事件数 (events/sec) | 评分 | 
|---|---|
| >= 2000 | 5 | 
| 1000 - 1999 | 4 | 
| 500 - 999 | 3 | 
| 100 - 499 | 2 | 
| < 100 | 1 | 
| 无法运行或异常 | 0 | 
内存性能测试
使用 Sysbench 测试内存性能,评估数据处理能力。
测试步骤
- 运行以下命令:
sysbench memory run- 记录输出,特别注意每秒读取的 MB 数量。
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
 
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
 
 
Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global
 
Initializing worker threads...
 
Threads started!
 
Total operations: 68123210 (6811427.69 per second)
 
66526.57 MiB transferred (6651.78 MiB/sec)
 
 
General statistics:
    total time:                          10.0001s
    total number of events:              68123210
 
Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                    2.60
         95th percentile:                        0.00
         sum:                                 4580.90
 
Threads fairness:
    events (avg/stddev):           68123210.0000/0.00
    execution time (avg/stddev):   4.5809/0.00评分参照表
| 每秒读取的 MB (MB/sec) | 评分 | 
|---|---|
| >= 500 | 5 | 
| 300 - 499 | 4 | 
| 100 - 299 | 3 | 
| 50 - 99 | 2 | 
| < 50 | 1 | 
| 无法运行或异常 | 0 | 
存储性能测试
使用 fio 测试存储性能,评估 I/O 操作能力。
测试步骤
- 创建测试文件:
fio --name=readtest --rw=read --bs=1M --size=1G --runtime=30 --time_based --group_reporting- 记录输出,特别注意 IOPS(每秒 I/O 操作数)。
readtest: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1
fio-3.28
Starting 1 process
readtest: Laying out IO file (1 file / 1024MiB)
Jobs: 1 (f=1): [R(1)][100.0%][r=304MiB/s][r=304 IOPS][eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=29810: Fri Oct 25 22:27:46 2024
  read: IOPS=301, BW=302MiB/s (317MB/s)(9057MiB/30003msec)
    clat (usec): min=2724, max=21507, avg=3310.38, stdev=325.70
     lat (usec): min=2724, max=21507, avg=3310.55, stdev=325.73
    clat percentiles (usec):
     |  1.00th=[ 2802],  5.00th=[ 2933], 10.00th=[ 3163], 20.00th=[ 3195],
     | 30.00th=[ 3195], 40.00th=[ 3228], 50.00th=[ 3261], 60.00th=[ 3294],
     | 70.00th=[ 3359], 80.00th=[ 3425], 90.00th=[ 3556], 95.00th=[ 3720],
     | 99.00th=[ 4178], 99.50th=[ 4490], 99.90th=[ 5276], 99.95th=[ 6325],
     | 99.99th=[21627]
   bw (  KiB/s): min=278528, max=354304, per=99.97%, avg=309023.95, stdev=13012.16, samples=59
   iops        : min=  272, max=  346, avg=301.73, stdev=12.67, samples=59
  lat (msec)   : 4=98.32%, 10=1.66%, 20=0.01%, 50=0.01%
  cpu          : usr=0.06%, sys=3.95%, ctx=153978, majf=0, minf=266
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=9057,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1
 
Run status group 0 (all jobs):
   READ: bw=302MiB/s (317MB/s), 302MiB/s-302MiB/s (317MB/s-317MB/s), io=9057MiB (9497MB), run=30003-30003msec评分参照表
| IOPS | 评分 | 
|---|---|
| >= 5000 | 5 | 
| 3000 - 4999 | 4 | 
| 1000 - 2999 | 3 | 
| 500 - 999 | 2 | 
| < 500 | 1 | 
| 无法运行或异常 | 0 | 
结果分析
为了根据评分分数反馈性能指标的高低,可以设计一个综合评分公式。这个公式将结合各个性能指标的分数,计算出一个综合性能得分,并根据该得分提供相应的性能评级。下面是一个示例设计:
综合性能评分计算公式
- 
定义各项指标评分: - CPUScore
- MemoryScore
- StorageScore
 
- 
计算总分: 
Go
TotalScore = (CPUScore * CPUWeight) + (MemoryScore * MemoryWeight) + (StorageScore * StorageWeight)- 计算性能评级:
- 将总分与预定义的评分范围进行对比,得出性能评级。
 
合理的权重设置可以根据设备的实际应用场景和性能需求进行调整。以下是一组建议的权重,适用于一般的嵌入式 Linux 设备评估:
权重建议
| 指标 | 权重 | 
|---|---|
| CPUScore | 0.4 | 
| MemoryScore | 0.3 | 
| StorageScore | 0.3 | 
权重解释
- CPUScore (0.4): CPU 通常是性能的关键因素,尤其是在需要处理大量计算的应用中。因此,给予 CPU 更高的权重。
- MemoryScore (0.3): 内存容量和带宽直接影响设备的处理速度和响应能力,因此给予适当的权重。
- StorageScore (0.3): 存储性能(读写速度)对于数据密集型应用同样重要,因此也给予适当的权重。
说明
- 
分数范围: - 13-15分:优秀
- 10-12分:良好
- 7-9分:中等
- 4-6分:较差
- 0-3分:差
 
- 
评级反馈: - 根据综合得分,反馈出相应的性能评级,帮助开发者快速了解设备的性能水平。
 
💡
0-3 分的硬件可能不太适合运行,根据实际情况评估。