随笔分类 -  进程管理

调度器34—RT负载均衡
摘要:基于 Linux-4.19.153 一、相关结构成员描述 1. struct root_domain 实时调度器需要几个全局的或者说系统范围的资源来作出调度决定,以及 CPU 数量的增加而出现的可伸缩性瓶颈(由于锁保护的这些资源的竞争),Root Domain 引入的目的就是为了减少这样的竞争以改善 阅读全文

posted @ 2022-03-07 01:27 Hello-World3 阅读(2001) 评论(0) 推荐(0)

调度器32—RT选核
摘要:基于Linux-5.10 一、RT选核流程 1. 主要调用路径 rt_sched_class.select_task_rq //RT调度类回调 select_task_rq_rt //rt.c 前面trace_android_rvh_select_task_rq_rt()若是选到cpu就直接退出了; 阅读全文

posted @ 2022-02-10 23:42 Hello-World3 阅读(1600) 评论(0) 推荐(0)

调度器31—Linux-5.10 调度相关trace分析技巧汇总
摘要:一、看RT线程的sync唤醒标志 (1) MTK: select_task_rq_rt trace_android_rvh_select_task_rq_rt(p, cpu, sd_flag, flags, &target_cpu); //可以在 /sys/kernel/tracing 下检索到它, 阅读全文

posted @ 2022-02-07 15:55 Hello-World3 阅读(779) 评论(0) 推荐(0)

调度器28—杂项汇总
摘要:一、获取绑核信息 1. 通过 /proc/<pid>/status 获取 # cat /proc/<pid>/status | grep Cpus_allowed Cpus_allowed: ff Cpus_allowed_list: 0-7 调用路径和函数: struct pid_entry tg 阅读全文

posted @ 2022-01-22 16:02 Hello-World3 阅读(1241) 评论(0) 推荐(0)

调度器24—CFS任务选核
摘要:一、select_task_rq_fair()函数 CFS任务选核最终都是要走 select_task_rq_fair() 函数,三种CFS选核路径如下: try_to_wake_up //core.c select_task_rq(p, p->wake_cpu, SD_BALANCE_WAKE, 阅读全文

posted @ 2021-12-30 22:56 Hello-World3 阅读(3887) 评论(1) 推荐(1)

调度器26—Linux内核中的各种时间频率
摘要:一、各种时间的打印 1. per-cpu的各种类型的使用时间 # ls -l /proc/stat -r--r--r-- 1 root root 0 2021-01-01 19:46 /proc/stat # cat /proc/stat cpu 203632 46353 386930 318155 阅读全文

posted @ 2021-12-09 11:33 Hello-World3 阅读(1765) 评论(0) 推荐(0)

调度器19—/proc/sched_debug文件
摘要:一、打印说明 注: SPLIT_NS() 的单位是ms. 1. 打印内容 # cat /proc/sched_debug Sched Debug Version: v0.11, 5.10.xx-android12-x-xx-xxxxxxxxx #1 //打印函数 sched_debug_header 阅读全文

posted @ 2021-12-08 20:23 Hello-World3 阅读(2039) 评论(0) 推荐(0)

调度器12—PELT算法中的预估利用率 util_est
摘要:基于MTK Linux-4.14 一、PELT 中预估利用率简介 由于在 PELT 算法下任务的 util 增加减少的都比较慢,对于长时间休眠后的重负载任务,其 util 增加的比较慢,导致不能及时触发提频和迁核。为了补救 PELT 的这一缺陷,引入了预估负载。在任务(休眠)出队列时更新任务的预估负 阅读全文

posted @ 2021-10-24 18:56 Hello-World3 阅读(1333) 评论(0) 推荐(0)

调度器11—调度相关trace汇总—MTK
摘要:基于MTK Linux-4.14 1. sched_util ——负载调频 打印: RenderThread-2837 [006] d.h2 8163.520041: sched_util: cid=1 next=1624000 last_freq_update_time=8163524121923 阅读全文

posted @ 2021-10-24 18:48 Hello-World3 阅读(2831) 评论(0) 推荐(0)

调度器9—调度相关trace汇总—Qcom
摘要:1. sched_find_best_target 打印: cat-32758 [001] d..4 5235.529561: sched_find_best_target: pid=18090 comm=kworker/u16:25 start_cpu=0 best_idle=-1 most_sp 阅读全文

posted @ 2021-10-21 22:57 Hello-World3 阅读(1598) 评论(0) 推荐(0)

调度器7—TASK_UNINTERRUPTIBLE和TASK_INTERRUPTIBLE
摘要:一、D状态简介 1. D状态的由来 __schedule(bool preempt) { ... if (prev != next) { trace_sched_switch(preempt, prev, next); } ... } trace_sched_switch() 中若 prev->st 阅读全文

posted @ 2021-10-16 20:18 Hello-World3 阅读(1756) 评论(0) 推荐(0)

调度器6—WALT负载计算
摘要:基于 Lunux-5.4 一、WALT简介 1. WALT(Windows-Assist Load Tracing),从字面意思来看,是以window作为辅助项来跟踪cpu load,用来表现cpu当前的loading情况,用于后续任务调度、迁移、负载均衡(主要用PELT负载)等功能。在 load 阅读全文

posted @ 2021-10-07 19:39 Hello-World3 阅读(5895) 评论(0) 推荐(0)

调度器5—CFS负载计算-1_PELT_不考虑CFS组调度和带宽控制-legency-不再补充
摘要:1. 负载结构描述 (1) 每个调度实体都有一个负载结构,用来跟踪调度实体对系统的负载贡献,定义如下: struct sched_entity { struct load_weight load; #ifdef CONFIG_SMP struct sched_avg avg; #endif }; / 阅读全文

posted @ 2021-09-25 19:11 Hello-World3 阅读(1635) 评论(0) 推荐(1)

CPU idle学习笔记
摘要:1. per-cpu的idle线程初始化 (1) boot cpu的idle线程初始化 start_kernel //init/main.c sched_init //kernel/sched/core.c init_idle(current, smp_processor_id()); //当前正在 阅读全文

posted @ 2021-06-30 11:15 Hello-World3 阅读(281) 评论(0) 推荐(0)

调度器调频学习笔记
摘要:Linux5.4 Qcom平台 1. per-cpu的 update_util_data 实例是调度器与schedutil调频驱动沟通的桥梁,cpufreq_update_util()函数中访问里面的回调函数进行调频。 2. 触发调频的时机 (1) enqueue_task_fair 时 activ 阅读全文

posted @ 2021-06-20 22:49 Hello-World3 阅读(1674) 评论(0) 推荐(0)

进程限制_limit
摘要:1. /proc/<PID>/limits /proc/<PID> # cat limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unli 阅读全文

posted @ 2021-03-30 11:51 Hello-World3 阅读(313) 评论(0) 推荐(0)

Scheduler内核文档翻译-1
摘要:一、sched-tune.txt 注: 翻译自 Documentation\scheduler\sched-tune.txt 中心,调度程序驱动的,功率性能控制(实验性) 抽象 过去,在多个场合[1,2]都提出了一个简单的功率性能可调参数,该参数完全以调度程序为中心,并具有定义明确和可预测的属性。 阅读全文

posted @ 2021-02-03 02:12 Hello-World3 阅读(612) 评论(0) 推荐(0)

(六)Linux进程调度-实时调度器_学习笔记
摘要:一、学习笔记 说明: Kernel版本:4.14 1. 概述 在Linux内核中,实时进程总是比普通进程的优先级要高,实时进程的调度是由Real Time Scheduler(RT调度器)来管理,而普通进程由CFS调度器来管理。实时进程支持的调度策略为:SCHED_FIFO 和 SCHED_RR。 阅读全文

posted @ 2021-02-02 00:00 Hello-World3 阅读(1242) 评论(0) 推荐(0)

(五)Linux进程调度-CFS调度器_学习笔记
摘要:一、学习笔记 说明:Kernel版本:4.14 1. 概述(1) Completely Fair Scheduler,完全公平调度器,用于Linux系统中普通进程的调度。(2) CFS采用了红黑树算法来管理所有的调度实体 sched_entity,算法效率为O(log(n))。CFS跟踪调度实体sc 阅读全文

posted @ 2021-01-28 00:54 Hello-World3 阅读(1169) 评论(0) 推荐(0)

(四)Linux进程调度-组调度及带宽控制_学习笔记
摘要:一、学习笔记 说明:Kernel版本:4.14 1. 概述 组调度(task_group)是使用Linux cgroup(control group)的cpu子系统来实现的,可以将进程进行分组,按组来分配CPU资源等。比如,看一个实际的例子:A和B两个用户使用同一台机器,A用户16个进程,B用户2个 阅读全文

posted @ 2021-01-25 01:00 Hello-World3 阅读(939) 评论(0) 推荐(0)

导航