【飞腾平台实时Linux方案系列】第二十一篇 - 飞腾平台实时Linux性能测试与优化总结。
摘要:本文介绍了飞腾芯片在实时系统中的性能测试与优化方法。针对变电站、轨道交通等关键场景的硬实时需求,详细讲解了如何搭建测试环境(Ubuntu+RT内核)、使用cyclictest工具进行延迟测试,以及通过锁频、绑核、中断亲和等优化手段将延迟控制在100μs以内。文章包含一键安装脚本、测试命令和常见问题解决方案,帮助实现国产芯片替代传统DSP方案,降低成本40%的同时确保供应链安全。适用于能源、交
一、简介:为什么要给飞腾做“实时体检”?
-
国产芯趋势:能源 PLC、矿山集控、车载 ECC 纷纷选用飞腾(FT-1500A/FT-2000/4),但芯片微架构、Cache 拓扑与 x86 不同,默认内核配置无法发挥实时性能。
-
痛点场景:
-
变电站测控装置:GOOSE 消息 1 ms 内不响应 → 保护误动。
-
轨道计轴系统:中断延迟 > 50 μs → 丢轴计数,影响行车安全。
-
-
掌握测试+优化技能 = 让“国产芯+实时Linux”真正落地,替代传统 DSP/FPGA 方案,硬件成本降 40%,供应链安全可控。
二、核心概念:5 个关键词先搞懂
| 关键词 | 一句话说明 | 飞腾平台注意点 |
|---|---|---|
| PREEMPT_RT | Linux 实时补丁,将中断线程化、自旋锁变互斥锁 | 需配合飞腾 ARCH=arm64 配置 |
| cyclictest | 实时延迟基准工具,测 IRQ→任务唤醒时间 | 本文用 RT-Tests 2.5 |
| 调度延迟 | 任务就绪→获得 CPU 的间隔,SIL 2 要求 < 100 μs | 受 CPU 变频、NUMA 影响 |
| DCVS | 飞腾动态调频,默认开启 → 延迟抖动大 | 测试前建议锁定频率 |
| 可伸缩拓扑 | 飞腾 64 核采用 4 × Cluster | taskset 绑核时避免跨 Cluster |
三、环境准备:10 分钟搭好“飞腾测试工作台”
1. 硬件
-
CPU:飞腾 FT-2000/4 或 FT-1500A(arm64 v8)
-
内存 ≥ 8 GB,SSD ≥ 128 GB,预留网口 × 2(千兆+千兆)
2. 软件
| 组件 | 版本 | 安装命令 |
|---|---|---|
| OS | Ubuntu 20.04 for ARM | 飞腾官网镜像 |
| 实时内核 | linux-5.15.71-rt53 | 见下文一键脚本 |
| 测试套件 | rt-tests 2.5 | apt install rt-tests |
| 性能工具 | perf, tuna, taskset | apt install linux-tools-common |
| 交叉编译 | gcc-aarch64-linux-gnu | 可选,嵌入式板子 |
3. 一键安装 RT 内核(可复制)
#!/bin/bash
# install_ft_rt.sh
set -e
VER=5.15.71
RT_PATCH=patch-5.15.71-rt53.patch.xz
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v${VER}/linux-${VER}.tar.xz
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v${VER}/${RT_PATCH}
tar -xf linux-${VER}.tar.xz
cd linux-${VER}
xzcat ../${RT_PATCH} | patch -p1
cp /boot/config-$(uname -r) .config
make ARCH=arm64 olddefconfig
./scripts/config --set-val CONFIG_PREEMPT_RT y
make ARCH=arm64 -j$(nproc) deb-pkg
sudo dpkg -i ../linux-*.deb
sudo reboot
重启选 RT 内核进入,确认:
uname -r # 5.15.71-rt53
4. 创建实验目录
mkdir -p ~/ft-rt-bench && cd ~/ft-rt-bench
四、应用场景(300 字)
某 220 kV 智能变电站采用飞腾 FT-2000/4 作为就地测控单元,运行 PREEMPT_RT Linux。系统需同时完成:
-
GOOSE 报文硬实时接收→解析→出口继电器,端到端 ≤ 1 ms;
-
1588 对时误差 < 250 ns;
-
后台 104 规约并发 256 台客户端,CPU 占用 < 60%。
通过本文测试脚本,现场工程师 30 分钟输出“延迟-负载”曲线,发现 DCVS 导致 0.8 ms 抖动;锁定频率并绑核后,延迟降至 82 μs,顺利通过电网科院型式试验,实现国产芯替代 DSP 方案,单装置成本下降 35%,且供应链完全自主可控。
五、实际案例与步骤:从“跑基准”到“出报告”
每条命令可直接复制,保存为
run.sh一键执行。
5.1 基础信息采集
#!/bin/bash
# info.sh
echo "=== CPU 信息 ==="
lscpu | grep -E "Model name|Architecture|CPU\\(s\\)"
echo "=== 内核配置 ==="
grep PREEMPT /boot/config-$(uname -r)
echo "=== 当前频率 ==="
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
作用:记录硬件与内核版本,报告首页贴截图。
5.2 实时延迟测试(cyclictest)
# latency.sh
sudo cyclictest -p99 -i100 -d60s -m -Sp90 -q | tee cyclictest.log
参数说明:
-
-p99最高优先级,避免被其他任务抢占 -
-d60s采样 60 秒,现场可延长到 600 s -
-m锁内存,防止 swap 干扰
结果示例:
T: 0 ( 1234) P:99 I:100 C: 600000 Min: 12 Act: 18 Avg: 20 Max: 82
Max=82 μs < 100 μs → 满足 SIL 2 要求。
5.3 负载压力叠加(stress-ng)
# load.sh
stress-ng --cpu 4 --io 2 --vm 2 --vm-bytes 256M --timeout 60s &
sudo cyclictest -p99 -i100 -d60s -m -q | tee cyclictest_load.log
killall stress-ng
观察:满载下 Max 延迟是否仍 < 100 μs;若超标 → 进入第 6 节优化。
5.4 网络/IO 性能
A. 千兆网小包转发
# 需要另一台 PC 打流
sudo ethtool -G eth0 rx 4096 tx 4096 # 增大环形缓冲区
sudo pktgen_sample.sh 1000mb 1000000 # 发送 1M 个 64 B 包
B. 磁盘 IO 延迟(实时日志)
sudo fio --name=rt-log --rw=randwrite --bs=4k --size=100m --direct=1 \
--ioengine=libaio --iodepth=1 --runtime=60s --group_reporting
关注 clat 平均延迟,> 2 ms 需换 SSD 或 ext4 → xfs。
5.5 一键生成 HTML 报告
# report.sh
gnuplot -e "set terminal html; set output 'latency.html'; plot 'cyclictest.log' using 2 title 'Latency/us'"
echo "报告已生成,打开 latency.html 查看"
六、性能优化方法与最佳实践
-
关闭 CPU 变频
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor -
隔离核
内核参数isolcpus=2,3+rcu_nocbs=2,3
实时任务绑定:taskset -c 2 ./your_rt_app -
中断亲和
echo 1 > /proc/irq/24/smp_affinity # 把网卡中断绑到 Core0,远离实时核 -
禁用不必要驱动
内核配置关闭CONFIG_USB_CONFIGFS_F_FS,减少关中断时间。 -
使用
tuna图形化调整sudo tuna -c 2-3 -i eth0 -x # 把 eth0 中断从 2-3 移走 -
大页+锁内存
mlockall(MCL_CURRENT | MCL_FUTURE); -
日志异步化
实时线程不写磁盘;使用ringbuf + low-prio后台线程批量落盘。
七、常见问题与解答(FAQ)
| 问题 | 现象 | 解决 |
|---|---|---|
| cyclictest Max > 1 ms | 变频未关 | 确认 governor=performance |
| 网络小包丢包 | rx_errors 增加 | 增大 ring buffer + 绑中断 |
| 报告中文乱码 | HTML 无 meta | 加 <meta charset="utf-8"> |
| 隔离核后 SSH 连不上 | 孤立核含 Core0 | 留 Core0 给系统, isolcpus=2,3 |
| fio 报“Read-only” | 在容器内 | 宿主机或 --privileged 启动 |
八、总结:一张脑图带走全部要点
飞腾实时性能测试
├─ 环境:RT 内核 + 关闭变频 + 隔离核
├─ 工具:cyclictest + stress-ng + fio + tuna
├─ 指标:延迟 < 100 μs,网络不丢包,IO clat < 2 ms
├─ 优化:锁内存、大页、中断亲和、驱动裁剪
└─ 报告:HTML 可视化 + 版本记录
国产芯 + 实时 Linux 不再是“能用”,而是“好用”且“可控”。
把本文脚本 push 到你的 GitLab,下次面对电网、矿山、轨交客户,只需 30 分钟就能交出一份带数字签名的性能报告——让“自主可控”真正落地,也让飞腾平台在关键基础设施中跑得更快、更稳、更安全!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)