linux内核--资源管理

本文介绍了Linux中的资源管理和进程调度技术,包括Cgroup用于划分CPU、内存等资源,Namespace实现进程隔离,以及FairGroupScheduling和CFS对于CPU时间的公平分配。同时,还讨论了cpuset对CPU亲和性的控制,MemoryCgroup对内存使用的限制,以及OOM Killer在内存不足时的应对策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Linux内核资源划分功能:划分CPU、内存空间、I/O等的Cgroup(control group),以及划分PID、PIC、网络、mount命名空间的Namespace。


2. Linux的调度策略(scheduling policy):TSS(time sharing system,分时系统)和实时系统这两种。

一方面,一般的进程是通过分时运行的。也就是说,使用 CPU 的时间达到分配给进程的时间(时间片)时,就会切换到其他进程。这种分时运行的调度策略称为 TSS。
另一方面,在实时制约较严格且要求保证实时的处理中,就需要指定静态的执行优先级,并严格按照执行优先级进行调度。对这种对应答性有要求的进程,可以使用实时调度策略。另外,与 TSS 调度策略的进程相比,CPU 将优先分配给使用实时调度策略的进程

在 Linux 中,进程的静态优先级为 0 ~ 99。TSS 调度策略的优先级为 0,实时调度策略的优先级可以指定的范围为 1 ~ 99。


3.  Fair Group Scheduling 是 Cgroup 的资源管理之一,用来控制 Linux 内核的进程调度程序进行的 CPU 时间分配。与其他 Cgroup 进行的资源管理一样,可以对每个特定进程组进行资源(CPU 分配时间)管理。使用这个功能,就可以在分组间对 CPU 分配时间进行调整。
另外,Fair Group Scheduling 使用的是 Linux 2.6.23 以后引入的 CFS(Completely Fair Scheduler)的 CPU 分配时间控制功能,因此在没有安装 CFS 的 Linux 2.6.23 之前版本的内核中不能使用。因此,本节介绍怎样通过 CFS 对非实时调度策略进程的 CPU 分配进行控制。


4. cpuset 是 Linux 控制组(Cgroup)之一,其功能是指定特定进程或线程所使用的 CPU组。另外,除 CPU 以外,同样还能指定内存节点的分配。以前的内核具有 CPU affinity 功能,该功能将线程分配给特定 CPU。现在的内核中虽然也有 affinity(taskset 命令),但推荐使用 cpuset。

# time make -j 2    //编译时间

real    4m55.568s

user   2m42.066s

sys     5m4.575s


5. Memory Cgroup 是 Cgroup之一,用来控制进程所使用的内存(LRU 管理的缓存)数量。其用法有很多种,例如,可以用来避免因一时处理较大文件或大量文件,而导致无用的页面缓存增大,内存资源紧张的情况。另外,还可以在多用户环境中限制各用户可以使用的内存量。


6. Linux 中的 Out Of Memory(OOM) Killer 功能作为确保内存的最终手段,可以在耗尽系统内存或交换区后,向进程发送信号,强制终止该进程。这个功能即使在无法释放内存的情况下,也能够重复进行确保内存的处理过程,防止系统停滞。还可以找出过度消耗内存的进程。本节将介绍 2.6 内核的 OOM Killer。


7.我太坑了,看不懂啊!这搞毛,不管了,先记录,再消化!













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值