Linux进程调度
文章平均质量分 95
fanxiaoyu321
天道酬勤
展开
-
Linux RT调度器之负载均衡
RT调度类的调度策略是:保证TopN(N为系统cpu个数)优先级的任务可以优先获得cpu资源。除了在任务选核时要遵守一定规则外,在其它流程中也注意,我们姑且将这部分逻辑称作RT调度器的负载均衡(这与CFS调度类的负载均衡有很大的不同)。这篇笔记分析了RT调度类负载均衡相关代码的实现,代码使用的是5.10。原创 2024-08-05 23:34:03 · 1190 阅读 · 0 评论 -
Linux RT调度器之任务选核
调度器在任务创建、任务唤醒以及任务执行exec调用时都会为任务重新选择运行的cpu(负载均衡触发的选核不在这里讨论)。调度器框架将选核策略交给具体的调度类实现,框架只实现了一个兜底的策略,在调度类没有选出合适的cpu时由兜底策略为任务选择一个运行cpu。这篇笔记分析了RT调度类是如何为RT任务完成选核的。代码使用的是Linux 5.10。原创 2024-08-03 12:26:23 · 1217 阅读 · 0 评论 -
cpufreq子系统
cpufreq通过sysfs向用户态暴露接口,这些节点部分是为了展示内核的配置,部分节点是可以配置的,通过这些节点可以控制cpufreq的一些行为。cpufreq子系统的核心层,负责管理子系统中的policy、governor和driver组件,是三者的纽带,通过core层,实现了调频策略和调频机制的分离。调频策略,每个CPU都有一个调频策略,规定了该CPU的最大、最小可运行频率等信息。可以独立于core层实现,通过规定的接口和core层交互。原创 2024-01-06 14:07:05 · 1416 阅读 · 0 评论 -
Linux调度域与调度组
这篇笔记重点分析了内核调度域相关的数据结构以及内核用于构建调度域的代码实现,以此来加深对调度域的理解。调度域是调度器进行负载均衡的基础。原创 2023-11-21 23:55:22 · 906 阅读 · 0 评论 -
Linux CPU物理拓扑&CPU capacity
Linux支持非常多的硬件,这些硬件有各种各样的CPU搭配,大到多个NUMA节点组成的大型机,小到只有一个处理器的小型嵌入式设备。内核会在开机时根据硬件配置建立一组数据结构来描述系统的CPU物理拓扑。CPU物理拓扑的一个典型使用者就是调度域。CPU物理拓扑相关的概念也可以见的介绍。此外,一个系统中的CPU架构可以有多种,典型的如ARM的big-LITTLE架构,这些CPU的能力是不一样的,这种设计可以较好的兼顾性能和功耗。Linux内核也需要建立一组数据结构来描述各cpu的能力。原创 2023-11-16 23:43:15 · 825 阅读 · 0 评论 -
Linux组调度
组调度是一个可选的特性,开关为CONFIG_CGROUP_SCHED,开启后,将基于CGroup机制实现一个名为"cpu"的资源控制器,该控制器实现对CPU时间的管理。目前只有RT调度类和CFS调度类支持组调度,它们的开关分别为CONFIG_RT_GROUP_SCHED和CONFIG_FAIR_GROUP_SCHED,要实现完整的组调度功能,这两个宏至少要打开一个。原创 2023-11-12 16:55:42 · 919 阅读 · 0 评论 -
Linux RT调度器之带宽控制
RT调度器的带宽控制核心思想是:限制CPU上可运行的RT任务在内占用CPU的时长不能超过,检测周期和运行门限是RT带宽控制的两个可配置参数。RT调度类的带宽控制默认在cpu运行队列上生效。支持组调度后,可以扩展到任务组的运行队列上生效。这篇笔记记录了RT调度器的带宽控制相关实现,代码使用的5.10。原创 2023-11-12 16:42:32 · 1158 阅读 · 0 评论 -
linux任务优先级
这篇笔记记录了linux任务(指线程而非进程)优先级相关的概念,以及用户态可以用来操作这些优先级的系统调用。原创 2023-10-21 18:24:20 · 622 阅读 · 1 评论
分享