硬件性能测试指南
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 分的硬件可能不太适合运行,根据实际情况评估。