ARM平台内存和cache对xenomai实时性的影响

研究发现,ARM平台上的内存压力显著影响Xenomai系统的实时性。在未添加内存压力时,latency表现较好,而通过stress工具模拟内存压力后,latency的最大值翻倍。主要影响因素包括内存分配/释放、cache命中率和MMU拥塞。关闭L2 Cache会导致latency整体升高。CPU、IO压力下,L2 Cache影响减弱。内存分配超过4MB时,实时性显著下降,而MMU拥塞对实时性影响较小。
摘要由CSDN通过智能技术生成

目录

  • 1. 问题概述
  • 2. stress 内存压力原理
  • 2. cache 因素2.1 未加压2.2 加压(cpu/io)
  • 3. 内存管理因素3.1 内存分配/释放3.2 MMU拥塞4 总结

1. 问题概述

对ti am5728 xenomai系统latency测试时,在测试过程中发现,内存压力对latency影响极大,未添加内存压力下数据如下(注:文中所有测试使用默认gravity,对实时任务cpu已使用isolcpus=1隔离,另外文中的结论可能只对ARM平台有效):

 stress -c 16 -i 4  -d 2 --hdd-bytes 256M  

user-task ltaencykernel-task ltaencyTimerIRQ最小值0.621-0.795-1.623平均值3.0720.970-0.017最大值16.13312.9667.736

添加参数--vm 2 --vm-bytes 128M模拟内存压力。(创建2个进程模拟内存压力,不断重复:申请内存大小128MB,对申请的内存每隔4096字节处写入一个字符’Z‘,然后读取检查是否还是’Z‘,校查后释放,回到申请操作)

 stress -c 16 -i 4  -d 2 --hdd-bytes 256M --vm 2 --vm-bytes 128M 

添加内存压力后的latency,测试10分钟(因时间原因未测1小时),测试数据如下:

ARM平台内存和cache对xenomai实时性的影响

 

user-task ltaencykernel-task ltaencyTimeIRQ最小值0.915-1.276-1.132平均值3.4510.6370.530最大值30.91825.3038.240标准差0.6260.6680.345

可以看到,添加内存压力后,latency最大值是未加内存压力最大值的2倍。

2. stress 内存压力原理

stress工具对内存压力相关参数有:

-m, --vm N fork N个进程对内存malloc()/free()
--vm-bytes B 每个进程操作的内存大小为B bytes (默认 256MB)
--vm-stride B 每隔B字节访问一个字节 (默认4096)
--vm-hang N malloc睡眠N秒后free (默认不睡眠)
--vm-keep 仅分配一次内存,直到进程结束时释放

这参数可用来模拟不同的压力,--vm-bytes表示每次分配的内存大小。--vm-stride每隔B字节访问一个字节,主要模拟cache miss的情况。--vm-hang指

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值