![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
进程调度
进程概念,线程本质,进程调度,负载均衡,Cgroup
科学边界
这个作者很懒,什么都没留下…
展开
-
Linux内核之进程6: 深度睡眠
1.深度睡眠特点及存在原因深度睡眠TASK_UNINTERRUPTIBLE:不可被信号唤醒;浅度睡眠TASK_INTERRUPTIBLE:唤醒方式,等到需要的资源,响应信号;深度睡眠场景:有些场景是不能响应信号的,比如读磁盘过程是不能打断的,NFS也是;执行程序过程中,可能需要从磁盘读入可执行代码,假如在读磁盘过程中,又有代码需要从磁盘读取,就会造成嵌套睡眠。逻辑做的太复杂,所以读磁盘过程不允许打断,即只等待IO资源可用,不响应任何信号;应用程序无法屏蔽也无法重载SIGKILL信号,深度睡眠可原创 2020-08-26 19:58:38 · 999 阅读 · 1 评论 -
Linux内核之进程5:Cgroup
1.按群分组Cgroup按群分组,分配资源,属于二级分配(1)按群组分配资源将进程分组,多个组按权重分配CPU配额,单个组内任务再按进程调度算法分配案例:启动三个a.out,一共耗CPU800%(八核)创建两个CGROUP:A和Bcd /sys/fs/cgroup/cpusudo mkdir Asudo mkdir B关注A/B中两个成员,cgroup.procs:本群组包含的进程cpu.shares:本组权重值,与其他组竞争的权重值;将进程1164/1184加入组A,114原创 2020-08-26 19:52:51 · 1108 阅读 · 0 评论 -
Linux内核之进程4:CPU的负载均衡
1.线程的负载均衡对task_struct做负载均衡;分布式系统中,linux的每个核都自动以劳动为乐,(共产主义社会)。分别对RT任务和普通线程做负载均衡:RT任务:将n个优先级最高的线程自动分配到n个核;pull_rt_task()push_rt_task()普通任务:周期性负载均衡,在时钟tick会检查哪个核空闲,优先使空闲核工作(从负载重的核pull任务,或push任务给空闲核,每个CPU以劳动为乐);idle时负载均衡;某个核进入idle状态,会主动pull任务执行;for原创 2020-08-26 18:12:15 · 1631 阅读 · 0 评论 -
Linux内核之进程3:进程调度
1. 吞吐率和响应吞吐:单位时间内做的有用功;响应:低延迟。吞吐追求的整个系统CPU做有用功,响应追求的是某个特定任务的延迟低;1GHZ的CPU切换线程保存恢复现场约几个微妙级别,看似消耗不了太多时间,但是由于系统的局部性原理,会保存当前线程数据的缓存,切换线程会打乱局部性引起cachemiss,而CPU访问cache速度远大于内存访问,这样综合看来上下文切换花销还是很大的。无用功占用较多CPU;所以追求吞吐量和低延迟,这两个目标是矛盾的编译内核选项有如下服务器版追求吞吐量,配置为不抢占原创 2020-08-26 17:31:50 · 480 阅读 · 0 评论 -
Linux内核之进程2:进程和线程的本质
1.进程拥有资源mm,fs,files,signal…fork创建一个新进程,也需要创建task_struct所有资源;实际上创建一个新进程之初,子进程完全拷贝父进程资源,如下图示:比如fs结构体:子进程会拷贝一份fs_struct,*p2_fs = *p1_fs;pwd路径和root路径与父进程相同,子进程修改当前路径,就会修改其p2_fs->pwd值;父进程修改当前路径,修改p1_fs->pwd;其他资源大体与fs类似,最复杂的是mm拷贝,需借助MMU来完成拷贝;即写时拷贝原创 2020-08-26 17:15:51 · 845 阅读 · 0 评论 -
Linux内核之进程1:进程的概念
1.什么是进程?进程:资源的封装单位;linux用一个PCB来描述进程,即task_struct, 其包含mm,fs,files,signal…root目录,是一个进程概念,不是系统概念;apropos chrootman chroot 2如下图,将分区/dev/sda5挂载到/mnt/a,调用chroot,改变root目录,当前进程下的文件b.txt即位于当前进程的根目录。(2)fd也是进程级概念;(base) leon@leon-Laptop:/proc/29171$ ls原创 2020-08-26 17:04:54 · 605 阅读 · 0 评论