arm虚拟机实时性优化总结

优化手段:

中断:

修改qemu,spi类型中断不陷入el0; 让中断在el1完成注入。

指定nohz, 减少timer 中断

棒核、隔离核、减少ipi

实时核不推进rcu, 减少ipi 中断 : rcu_nocb

亲缘性设置, 减少实时核ipi、spi

禁止timer迁移,减少ipi trap

使能gic 4.1, 禁止lpi trap,sig trap

减少timer、spi中断trap时间(正在做)

mmio:

virtio polling, 减少 virtio mmio trap

干掉热区,减少 bpmp mmio trap

使用virtio console, 减少全模拟console trap

VHE下,timer、icc寄存器不trap

premalloc memory: 减少mem mmio trap时间

禁止bpmp emc trap进入el0

减少gic dist mmio trap (正在做)

禁止 mem mmio trap(准备做)

寄存器,指令:

将wfi指令脱敏,减少指令trap

禁止systemd trace,减少ipi send mcr trap

·······························································

实时性优化近期成果:已知超时case都已经解决。

task设置RT FIFO

host的 /usr/bin/mirobot_preset.sh 添加:

sudo mkdir -p /dev/hugepages_2mb

sudo mount -t hugetlbfs -o pagesize=2M none /dev/hugepages_2mb

echo 400 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

dd if=/dev/zero of=/dev/hugepages_2mb/ivshmem bs=1M count=300

两个 guest xml 修改ivshem部分,修改成下面的样子:

复制代码
<qemu:arg value='memory-backend-file,id=ivmem,mem-path=/dev/hugepages_2mb/ivshmem,size=256M,prealloc=on,share=on'/>

两个guest 内核启动参数 添加csdlock_debug=1 smp.csd_lock_timeout=2

合入此path: https://gerrit.evad.mioffice.cn/c/mirobotics/system_software/architecture/virtualization/thor_mos_kernel_kvm/+/253926

运控业务的锁(futex syscall 98)也对实时性有很大影响,

··································································

相关推荐
XMAIPC_Robot1 天前
ARM+FPGA+AI船舶/工业自动化控制器EMC测试等级解析(IEC60533/IEC60945)
arm开发·人工智能·fpga开发·zynq·arm+fpga·rk3588+fpga
奔跑的架构师2 天前
[A-51]ARMv9/v8-SCMI系统架构
linux·arm开发·架构·系统架构·arm
玄芯散人2 天前
【元婴·94】ARM vs RISC-V大战
arm开发·risc-v
szxinmai主板定制专家2 天前
ZYNQ PL+PS 架构拆解|工业自动化与电力物联网高速数据采集、预处理与协议上云
arm开发·人工智能·物联网·fpga开发·数据采集卡·rk3576
szxinmai主板定制专家2 天前
告别 ARM 实时性短板:基于 ZYNQ 的电力故障录波 + 工业振动数据采集系统设计
arm开发·人工智能·fpga开发·zynq·数据采集卡·arm+fpga·rk3588+fpga
Awh-3 天前
ARM 裸机开发 DAY11 学习笔记
arm开发·笔记·学习
陌上花开缓缓归以3 天前
openssl 模拟签名验签(加密解密)详细分析
arm开发
en.en..3 天前
ARM 汇编 B / BL 核心区别
汇编·arm开发
程序员JerrySUN3 天前
Jetson Edge AI 实战05:Secure Boot 到底在保护什么?PKC、SBK、Fuse 与可信启动链一次讲清【视频讲解】
arm开发·人工智能·安全·计算机视觉·目标跟踪·音视频
老当益壮梁奶奶3 天前
驱动学习(二):从零开始:驱动工程搭建与字符设备驱动框架详解(基于IMX6ULL)
c语言·arm开发·驱动开发·嵌入式硬件·学习