说明:收录全网最新的团体标准 提供单次或批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211006071.3 (22)申请日 2022.08.22 (71)申请人 麒麟软件有限公司 地址 300450 天津市滨 海新区塘沽海 洋科 技园信安创业广场3号楼6 -8层 (72)发明人 李明强 谭一鸣 陈松 林晓颖  (74)专利代理 机构 北京汇智英财专利代理有限 公司 11301 专利代理师 杨瑞华 (51)Int.Cl. G06F 9/50(2006.01) (54)发明名称 一种针对SMP系统的实时任务调度优化方法 (57)摘要 本发明公开了一种针对SMP系统的实时任务 调度优化方法, 具体包括以下步骤: Linux内核启 动; 调度器初始化时, 对SMP系统中的CPU核进行 分组; 对默认的period和ru ntime的值进行修改; 初始化定时器rt_period_timer; 当CPU核上有实 时任务开始运行时, 记录当前CPU核的实时任务 运行时间, 同时调度器获取当前CPU核的period 值并设为当前CPU核的定时器超时时间后, 启动 定时器; 每个调度节点, 计算CP U核上实时任务的 运行时间, 若超过当前CPU核的runtime, 则中止 实时任务运行, 运行普通任务。 本发明增加了任 务调度和CPU资源利用的合理性。 权利要求书1页 说明书8页 附图3页 CN 115437784 A 2022.12.06 CN 115437784 A 1.一种针对SMP系统的实时任务调度优化方法, 其特 征在于, 具体包括以下步骤: S1、 Linux内核启动进行调度器初始化时, 对SMP系统中的CPU核进行分组: 其中, 每组 CPU核称为CPU组; S2、 分别为各CPU组设置不同的peri od和runtime的值; S3、 初始化定时器rt_period_timer: rt_period_timer及超时处理方法的设置为RT   Throttling机制下的相关 设置; S4、 当某个CPU核上有实时任务开始运行时, 开始记录当前CPU核的实时任务运行 时间, 同时调度器获取当前CPU核的perio d值, 将当前CPU核的perio d值设为当前CPU核的定 时器 超时时间后, 启动该定时器。 S5、 每个调度节点, 计算CPU核上实时任务的运行时间, 并且与当前CPU核对应的 runtime值比较, 如果运行时间超过当前CPU核的runtime, 则中止当前CPU核的实时任务运 行, 转而运行普通任务。 2.根据权利要求1所述的针对SMP系统的实时任务调度优化方法, 其特征在于, 还包括 步骤S6, 步骤S6的具体内容 为: 中止当前CPU核的实时任务运行而运行普通任务后, 时间到达period后, 当前CPU核上 的定时器rt_perio d_timer到 时, 其超时处理函数中进行判断和设置, 操作当前CPU核放弃 正在进行的普通任务调度, 返回步骤S5, 继续 开始调度实时任务。 3.根据权利要求1所述的针对SMP系统的实时任务调度优化方法, 其特征在于, 在步骤 S2中: Linux内核中增加新内核参数, 通过所述新内核参数指定需修改的具体的CPU组或单 个CPU核, Linux内核启动后, 再通过kernel.sched_rt_period_us、 kernel.sched_rt_ runtime_us 分别修改指定的CPU组或CPU 核的peri od值、 runtime值。 4.根据权利要求1所述的针对SMP系统的实时任务调度优化方法, 其特征在于, 步骤S1 中的调度器初始化时, 对SMP系统中的CPU 核进行分组的具体过程 为: S11、 获取SMP系统的CPU 核的数量 nr_cpu_ids, 并判断是否超过最大组数32; S12、 如果 不大于32, 则将CPU 核分为nr_cpu_ids组; 否则将CPU核心数分为32个组, 每个CPU组最多包含CPU核的个数为: nr_cpu_ids/32的 值与1的和, 记录 CPU组中的CPU成员为CPUn,其中n =0,1,2, …,nr_cpu_ids ‑1; S13、 初始化一个结构体数组, 用来表示分组, 结构体数组中包含: cpu核的个数、 cpu   id、 runtime和peri od。 5.根据权利要求3所述的针对SMP系统的实时任务调度优化方法, 其特征在于, 所述新 内核参数包括kernel.sched_rt_cpu_zone、 kernel.sched_rt_cpu_core: 通过 kernel.sched_rt_cpu_zone指定需修改的具体的CPU组; 通过kernel.sched_rt_cpu_core 指定需修改的单个CPU 核。权 利 要 求 书 1/1 页 2 CN 115437784 A 2一种针对SMP系统的实时任务调度优化方 法 技术领域 [0001]本发明涉及多处理器 的实时任务调度技术, 尤指一种针对SMP系统的实时任务调 度优化方法。 背景技术 [0002]Linux内核任务调度机制中, 关于实时任务的调度有以下 特性: [0003]首先, Linux内核任务调度中, 实时任务 的调度顺序要优于普通任务, 在普通任务 运行过程中, 一旦有实时任务被唤醒加入就绪队列, 便会发生抢占现象, 调 度器会中 断当前 普通任务的运行, 转而 进行实时任务的调度。 [0004]另外, 目前的实时任务调度通常采用两种调度策略: SCHED _FIFO和SCHED_RR, 这两 种调度策略都基于实时任务的优先级, 优先级高的实时任务优先得到调度, 采用SCHED_ FIFO调度策略时, 同一优 先级的实时任务采用先进 先出的办法, 先就绪的任务先被调度; 采 用SCHED_RR调度策略时, 同一优先级的实时任务采用时间片轮转的方法依次得到调度。 [0005]由于Linux实时任务的调度顺序 优于普通任务, 因此在某个CPU核的任务就绪队列 中如果同时存在实时任务和普通任务, 不管采用上述哪种 策略, 实时任务必然会首先得到 调度, 并且会一直占用CPU资源运行, 如果实时任务运行时间过长, 便会导致普通任务长时 间无法得到调度, 情况严重时甚至会导 致整个系统出现无响应等问题。 [0006]目前, 为了避免上述实时任务一直占用CPU, 导致普通任务长时间无法得到调度的 现象, Linux内核也引入了RT  Throttling机制。 RT  Throttling的思想是: 控制CPU在一定时 间周期(perio d)内, 分配给实时任务固定的运行时间(runtime), 且该运行时间runtime小 于时间周期period, 从而保证CPU在该时间周期(period)内留出一定的时间用于调度普通 任务, 从而避免实时任务一直占用CPU运行的情况出现。 现有RT  Throttling中, Linux 内核 提供了两个 内核参数, 供用户灵活修改period和runtime: kernel.sche d_rt_period_us— 表示RT Throttling机制的CPU运行周期时间(period), 默认值为1000000us, 即1s; kernel.sche d_rt_runtime_us—表示在CPU运行周期时间(period)内, 可用于运行实时任 务的最大时间(runtime), 默认值为9500000us, 即0.95s。 也就是说, 在系统默认情况下, 通 过Rt Throttling机制, 在一个1秒的运行周期内, 可留出0.05s用于运行普通任务, 从而避 免出现普通任务无法得到调度的情况。 [0007]但是现有RT  Throttling机制中, 每个CPU核 上的period和runtime都是一致的, 不 会对SMP系统中的多个CPU核进行区分。 由于在SMP系统里, 一个计算机上并不只有一颗CPU, 而是汇集了一组CPU核, 所有CPU核之间共享内存子系统以及总线结构。 因而, RT   Throttling在SMP系统里的实现, 并不区分CPU核, 而是统一为所有CPU核设置了相同的 period和ru ntime值, 即每个CP U核上的period和runtime都是一样的, 这样设置不但缺少灵 活性, 而且在极端情况下存在一些隐患。 例如, 在某个时间段内, 系统中存在大量 实时任务, 每个CPU核的就绪队列中都有一些实时任务和普通任务等待调度, 不同的任务对调度时间 要求各不相同, 必然会出现某些CPU核调度队列中实时任务要求更多的调度时间, 而另外说 明 书 1/8 页 3 CN 115437784 A 3

.PDF文档 专利 一种针对SMP系统的实时任务调度优化方法

文档预览
中文文档 13 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共13页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种针对SMP系统的实时任务调度优化方法 第 1 页 专利 一种针对SMP系统的实时任务调度优化方法 第 2 页 专利 一种针对SMP系统的实时任务调度优化方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:11:14上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。