目前的位置: 首页 学术信息 正文

ZDS 2023技术报告分享第70篇:Zephyr资源调度的现状与未来


前言

2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。


ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。



今天分享第70篇技术报告,由毕方琦整理,题目为:

Zephyr资源调度的现状与未来



作者简介

Ederson de Souza

工程师,Intel



文章简介

文主要介绍了Zephyr现有的资源度量工具,并在Zephyr中使用两种资源分配优化的方案对几种开源项目进行使用前后对比,为Zephyr资源调度方面提供了一些建议。



Zephyr中的资源度量工具及资源使用现状

Zephyr有很好的ROM度量工具:


west build -t rom_report


同时,Zephyr对资源使用的控制手段包括:

  • 禁用未使用的特性/子系统

  • 避免使用holes:west build -t pahole

  • 限制线程数

  • 资源管理

  • 尝试不同的工具链

Zephyr的API广泛使用一些特性比如:死码消除技术(旨在通过在编译器或运行时环境中检测和删除未使用的代码,以提高程序的执行效率和减少资源占用。)

对开销的一些思考:

  • 如果Zephyr中有类似于c++中的temple的东西,会不会对开销有帮助。

  • DTS(允许用户定义数据源、数据转换和数据目标,并创建工作流程来管理数据的流动)技术也可能会有一些帮助。

  • 使用静态分配程序也可能会对开销有帮助。


静态分配程序:

  • 该脚本将API“实例化”并生成一些函数。

  • 同时,为它们生成一个“调度程序”,供API使用。

  • 导入驱动的代码示例:



一些开源项目

我们在实验测试中跑了一些开源项目,主要关注它们的系统开销,包括:

  • ZSWatch (https://github.com/jakkra/ZSWatch)

  • Intel EC FW (https://github.com/intel/ecfw-zephyr)

  • ZMK* (https://zmk.dev)

由于静态调度工作是在Zephyr的主分支上完成的,所以这些项目都是基于Zephyr的主分支进行重新部署的,环境:Zephyr SDK 0.16.1

ZSWatch和 Intel EC FW 的实验:

使用静态调度方法后消耗资源会变小。而ZMK,如下图:

在使用静态资源分配方案后,消耗资源竟然变大了,从运行报告来看可能是激活了一些无效代码。

我们也使用了LTO(死代码消除方案)对几个开源项目进行了实验:

LTO开源地址:

https://github.com/zephyrproject-rtos/zephyr/issues/2112

ZSWatch:

Intel EC FW:

ZMK:



总结

  1. LTO的方式可能是效果最好的一种

  2. 静态资源分配的方式不一定对所有的程序都有效

  3. 在这个过程中需要保证没有细微的bug

上一条:PicoUART6 6xUART至USB桥接板支持最多6块树莓派5 下一条:ZDS 2023技术报告分享第69篇:Zephyr中的资源调配

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学