文章分类 -  进程调度

负载均衡之均衡
摘要:何时均衡 在linux内核中,有一些场景会触发任务均衡的分布在系统的各个cpu上,可以分为以下几个场景: 任务放置:task placement,fork创建的任务、sched_exec的任务或者阻塞被唤醒的任务,这些任务加入就绪队列时,可以确定放置任务到那个cpu上。 主动均衡:active up 阅读全文

posted @ 2024-11-17 14:21 laumy99 阅读(14) 评论(0) 推荐(0)

负载均衡之调度组和调度域
摘要:概述 从上一章节大概应该能够理解负载和利用率的区别了,当一个进程正在运行或者即使没有在cpu上运行,而在就绪队列中等待运行,那么他依旧消耗cpu的负载。这是合理的,因为cpu的就绪队列有10个任务等待着运行与5个任务等待运行,明显是10个任务的负载重。而利用率只是关注正在运行的任务而不包含在就绪队列 阅读全文

posted @ 2024-11-17 14:20 laumy99 阅读(285) 评论(0) 推荐(0)

负载均衡之负载跟踪
摘要:各任务负载、各cpu的算力(频率+架构)、任务迁移开销(调度域,调度组)。 root@Linux:/# cat /proc/loadavg 3.49 3.43 3.54 4/131 3065 cat /proc/loadavg可以获取CPU全局平均负载,前面的三个值分别表示为1分钟、5分钟、15分钟 阅读全文

posted @ 2024-11-17 14:19 laumy99 阅读(250) 评论(0) 推荐(0)

CFS调度实现
摘要:时间计算 vruntime与runtime static void update_curr(struct cfs_rq *cfs_rq) { struct sched_entity *curr = cfs_rq->curr; u64 now = rq_clock_task(rq_of(cfs_rq) 阅读全文

posted @ 2024-11-17 14:18 laumy99 阅读(56) 评论(0) 推荐(0)

CFS分组调度
摘要:Linux系统都是支持多用户登录,如果一个Linux系统两个用户存在不同的数量的进程,假设A用户有10个进程,B用户有20个进程,如果系统对这30个进程进行平分CPU,实际上是不公平的,因此引入了组调度的概念,即A用户对CPU的占用应该跟B用对CPU的占用各自为50%,A/B用户下的进程再根据得到占 阅读全文

posted @ 2024-11-17 14:17 laumy99 阅读(143) 评论(0) 推荐(0)

CFS调度原理
摘要:上一章节中描述了Linux系统中支持多种调度,不同的调度有不同的优先级范围。对于普通进程使用的CFS调度(Completely Fair Scheduler,CFS)。完全公平调度主要核心思想就是保证在一段时间内,每个进程能够运行的时间趋于相等。 为了尽可能的保证一段时间内,每个进程能够运行的时间相 阅读全文

posted @ 2024-11-17 14:16 laumy99 阅读(145) 评论(0) 推荐(0)

进程调度简介
摘要:调度类别 进程调度依赖于调度策略(schedule policy),linux内核把相同的调度策略抽象成调度类(schedule class)。不同类型的进程采用不同的调度策略,目前Linux内核中默认采用5种调度类,分别是stop、deadline、realtime、CFS和idle。 Stop: 阅读全文

posted @ 2024-11-17 14:14 laumy99 阅读(160) 评论(0) 推荐(0)

进程创建
摘要:fork创建了一个新的进程,也就是fork执行后就会返回两次,分别是父进程返回和子进程返回。 exec可以加载新的程序运行(原程序是A,可以在A中运行后加载可执行程序B,B是A的子进程)。而如果没有exec,A程序执行fork后,仅只是将fork之后的代码复制了一份。exec最早是为了实现shell 阅读全文

posted @ 2024-11-17 14:11 laumy99 阅读(40) 评论(0) 推荐(0)

进程基本概念
摘要:目录进程标识进程描述进程状态进程间的关系获取当前进程 进程标识 进程是程序加载到内存的执行过程。进程与程序相比用于操作系统的资源如内存空间、文件、signal等。对于进程的标识我们使用<span style=\\\"color:red;\\\">process id来标识(PID)。 线程是进程中活 阅读全文

posted @ 2024-11-17 13:54 laumy99 阅读(32) 评论(0) 推荐(0)

导航