CPULOAD建模设计

news/2025/11/2 21:11:05/文章来源:https://www.cnblogs.com/jiangchang/p/19185441

背景:
1.中断周期的建模
在单片机中中断和任务是两类处理数据的主要形式,中断的形式主要分为周期和时间两类。比如,LIN中断是根据调度表的周期去响应的,滚轮这种则是根据外部事件响应的。
2.响应时间的建模
中断的响应时间建模和任务的响应时间的建模。

设计:

  1. 实际测量或者理论估算。其中实际测量则是两次最短的事件周期,理论估算可用于更为严谨的计算。
  2. 中断的的响应事件建模
    ① 测量中断的WCET
    ② 根据中断类型 Cat1/Cat2 计算Effective WCET,一般Cat1会设计成2us,Cat2则是4us,当然这些参数取决于使用的操作系统。Cat2因为涉及到os调度时间会长于Cat1
    ③ ResponseTime的时间建模:
    ⅠWCET时间
    Ⅱ阻塞时间 max(B, I),其中B为critical section区域的最大阻塞时间,这个可以根据实际测量去设置.I为所有优先级低于目标任务的其他任务抢占和延迟目标任务的总时间。注意critical section一般会被封装供应用调用。
    Ⅲ高优先级抢占时间,即高优先级任务的Effective WCET
  3. 任务的响应时间建模
    ① 任务的WCET
    ② 当前任务的响应时间被除所有优先级高于目标任务的其他任务的周期时间,值再乘以其他任务的WCET时间。可理解为能被抢占的次数乘以抢占的时间。
    ③ 把所有中断的占比乘以当前任务的WCET作为中断的裕量

结论:
基于标准RTA的迭代公式我们可以将复杂的场景抽象,计算出可视化的cpuload数据,帮助我们在实际工程项目中分析问题优化架构。

\[R_i = B_i + C_i + \sum_{J \in HP(i)} C_j \cdot \left\lceil \frac{R_i}{P_j} \right\rceil \]

R Response time
B Blocking time
C Execution time
p Period
HP() Higher priority than
i,j Task indices

不一定完全遵循该式,但是计算的数学模型可以依据具体项目参考优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 文件操作全解速览

文件操作文件分为二进制文件和文本文件,文本文件里面保存的内容形式是ASCII字符,二进制文件里面内容保存形式是01表示的。文件的主要作用是用来进行数据的持久化,能去长久的保存数据。这里f开头的文件操作命令,大多…

Java记录类:简化数据载体的新选择

Java 14引入的record类型为开发者提供了一种声明数据载体的简洁方式,有效减少了样板代码的编写。记录类旨在透明地保存不可变数据,自动实现数据访问方法和对象常用方法。 基本语法非常简单: public record User(Str…

第二次算法作业

基本思路 该算法采用分治策略来寻找数组中第k小的元素。首先从数组中随机选择一个基准元素,然后将数组划分为三个部分:小于基准的元素、等于基准的元素和大于基准的元素。根据k值所在的范围,决定在哪个子数组中继续…

NOIP 2025 游记 退役记

【洛谷专栏】 前言 前作:NOIP 2024 游记。 上一篇文章:CSP-S 2025 游记(The Last CSP ver.)。 同样地支持友链互挂,请私信。 CSP 结束了,可能没有冬令营机会了。 联赛,翻盘,还是,很难。 正文 2025.11 11.1 提…

一个万古常青的、小而美的输入法

一个万古常青的、小而美的输入法万古常青apt install fcitx-sunpinyin 即可安装。Ubuntu和Debian不倒,就一直有。美系统词库为libgooglepinyin和sunpinyin的合并去重版,词比它们都多。 用sunpinyin训练了字的三元语法…

开始学深度学习!

开始学深度学习!

LLaMA-Factory

LLaMA-Factory Used by Amazon, NVIDIA, Aliyun, etc.Supporters ❤️Warp, the agentic terminal for developersAvailable for MacOS, Linux, & WindowsEasily fine-tune 100+ large language models with zero-…

守护线程--daemon

线程可以分为用户线程与守护线程,虚拟机必须等待用户线程执行完毕但不用等待守护线程执行完毕 守护线程如:垃圾回收机制, 内存监控等 守护线程顾名思义,用于守护用户线程,下面举例介绍 public class Daemon {publ…

换一个思维解决问题:希望在转角

前段时间困扰我的一个网络拦截请求的问题,终于被巧妙地解决了。 我之前开发了一个net proxy,专门用于对特殊网络环境的模拟,以此测试一个工作中需要测试的软件。简单来说就是用mitmproxy实现一个网络流量代理服务,…

条件表达式中的赋值问题

条件表达式中的赋值问题在条件表达式中(如while、if语句的条件部分),不允许直接进行变量初始化并同时使用该变量进行比较。C++语法规则禁止在条件判断中同时进行变量声明和比较操作。 int numJewelsInStones(string…

csp2025 总结

T1T2 没有什么失误,大概 40min 的时候过了。 T3 之前做过 https://uoj.ac/problem/772 (但其实纯粹是误导),当时就忘记了复杂度分析依赖贡献一起处理(虚树)后来改了,场上就把虚树这个环节忘了,大样例很水所以过…

CSP 总结

J 前两题写得比较快,20min 左右过了。 T3 一开始看错了,以为区间可以重叠,手动模拟了一下样例发现不对,重读了一遍题,大概在 40min 时过了大样例。 感觉手感火热,遂开 T4,发现直接统计和大于 \(l_i\) 的不太好做…

2025 CSP

考虑自己的考场策略是否正确T1T2只用了40分种,问题在于T3的时间分配过多,但是我认为这是比较正确的因为在T1T2是签到题的情况下,以及T4基本不可能想出正解的情况下,去想一个自己已经有50分暴力分思路的T3是一个比较…

Jenkins-CICD项目自动化部署

1.环境准备主机名 IP 配置dev 192.168.233.146 2G C1project_master 192.168.233.154 3G,2C1project_slave 192.168.233.155 3G,2C1auto_deployment 192.168.233.156 5G,2C12.初始化环境 四台都做 #1.修改主机名 hostn…

使用Stream API重构你的数据处理

如果你还在使用繁琐的for循环和临时集合来处理数据,是时候了解Java 8引入的Stream API了。它让数据处理变得声明式、可组合,并且更加优雅。 什么是Stream? Stream不是数据结构,而是对数据源(集合、数组等)的元素…

js实现页面弹框,每天没个浏览器只在第一次访问会有弹框

js实现页面弹框,每天没个浏览器只在第一次访问会有弹框localStorage.getItem方法<script type="text/javascript">function GetDateStr(AddDayCount) {var dd = new Date();dd.setDate(dd.getDate()+…

[省选联考]追忆——题目背景美化

\[\textrm{\textit{\textbf{\large \textcolor{#8b5cf6}{我常常}\textcolor{#6366f1}{追忆}\textcolor{#0ea5e9}{过去。}}}} \]\[\textstyle \mathcal {\small {^{\frac{\textrm{\textit{\textbf{\textcolor{#f472b6}{…

多线程封装

//Thread.hpp #pragma once #include<iostream> #include<string> #include<cstring> #include<functional> #include<unistd.h> #include<cassert> #include<pthread.h> c…

使用 GeckoCircuits 设计 Buck 电源环路

使用 GeckoCircuits 设计 Buck 电源环路使用 GeckoCircuits 设计 Buck 电源环路 笔者最近发现一款开源的电力电子仿真软件 GeckoCircuits,它是由苏黎世联邦理工学院(ETH)开发的,具有极高的仿真速度,软件小巧,功能…

第k小的数的分治算法

include using namespace std; int x=100; int rr(int b[],int left,int right) { int m=left,n=right+1; int h=b[left]; while(1) { while(b[++m]<h&&m<right); while(b[--n]>h); if(m>=n) { br…