一、简介:为什么要给飞腾做“实时体检”?

  • 国产芯趋势:能源 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。系统需同时完成:

  1. GOOSE 报文硬实时接收→解析→出口继电器,端到端 ≤ 1 ms;

  2. 1588 对时误差 < 250 ns;

  3. 后台 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 查看"

六、性能优化方法与最佳实践

  1. 关闭 CPU 变频

    echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
  2. 隔离核
    内核参数 isolcpus=2,3 + rcu_nocbs=2,3
    实时任务绑定:taskset -c 2 ./your_rt_app

  3. 中断亲和

    echo 1 > /proc/irq/24/smp_affinity   # 把网卡中断绑到 Core0,远离实时核
  4. 禁用不必要驱动
    内核配置关闭 CONFIG_USB_CONFIGFS_F_FS,减少关中断时间。

  5. 使用 tuna 图形化调整

    sudo tuna -c 2-3 -i eth0 -x   # 把 eth0 中断从 2-3 移走
  6. 大页+锁内存

    mlockall(MCL_CURRENT | MCL_FUTURE);
  7. 日志异步化
    实时线程不写磁盘;使用 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 分钟就能交出一份带数字签名的性能报告——让“自主可控”真正落地,也让飞腾平台在关键基础设施中跑得更快、更稳、更安全!

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐