linux 进程调度ppt,Linux进程调度-提纲

1. 进程的概念

进程在Linux系统里的描述

进程的生命周期、状态

PCB task_struct 包含哪些,从进程是做什么的、管理来检验

ZOMBIE fork STOP

2. COW:

子进程复制父进程的内存资源,然后资源的映射表上,将属性标记为只读。

当父进程或者子进程,不论谁要修改这个资源,会触发错误(因为被标记为了只读),进程缺页异常。

进入缺页异常处理,要处理各种情况,检查是不是非法访问还是请求调页。

pthread_create=>clone调用

会完全复制进程的资源,但有各自的task_struct

在用户空间get_pid返回的是进程id, TGID,线程在内核空间的pid在用户空间通过tid得到,适应posix标准

孤儿进程的收养

【fork】

4. 进程调度

目标:吞吐 、 响应

上下文切换:切换时间是一方面,另一方面是cache miss的影响

任务类型: CPU Bound,IO Bound=》调度的输入

2.6内核中的调度:

0~99实时进程,高优先级抢占低优先级,同优先级选择FIFO、RR调度算法

100~139普通进程,全优先权轮转,sleep、阻塞的时间会越长,优先级会越来越高;执行的时间越长,优先级越低。优先级越高得到的时间片越多。=》这的目的是IO Bound(阻塞、睡眠长)容易比调度到,增加系统的整体性能

新的补丁,RT门限:

规定在period的时间里RT最多跑runtime的时间

/proc/sys/kernel/sched_rt_period  sched_rt_runtime

这样避免了RT进程出现异常时,无法退出CPU

普通进程的调度,CFS

vruntime += delta * NICE_0_LOAD/se.weight

se.weight进程权重,有优先级决定

pthread_setschedparam(pthread_self(), SCHED_FIFO, prio) 进程自己设置优先级?

chrt

5. 负载均衡

实时进程:N个优先级高的RT分布到N个核

pull_rt_task()  push_rt_task()

普通进程:

周期性负责均衡

IDEL时负载均衡

fork exec时负载均衡

pthread_attr_setaffinity_np()

sched_setaffinity()

taskset

6. 中断负载均衡

/proc/irq/12/smp_affinity

可以将网卡的软中断队列分布到不同的核上

cpu0收到中断,软中断也会在cpu0上处理。对于单队列网卡使用RPS,将包处理负载均衡到多个CPU

echo fffe > /sys/class/net/eth1/queues/rx-0/rps_cpus

cgroup

将进程、线程分组,然后控制组的使用资源。在组内还是公平调度

cgroup规定了该组的资源使用率,cpu 内存 磁盘

android就是使用了cgroups。

apps组

bg_non_interactive组

docker 使用cgroups调整容器的资源使用率

cyclictest工具测试实时性

7. 四类区间

中断

软中断

进程spin_lock

以上三个不能抢占

进程可调度

PREEMPT_RT补丁

1)spinlock迁移为可调度的mutex。raw_spin_lock

2)实现优先级继承协议

3)中断线程化

4)软中断线程化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值