<![CDATA[蜗窝科技]]> http://jyj19.com/ zh-cn www.emlog.net CFS调度器(6)-总结 http://jyj19.com/process_management/452.html CFS调度器-总结

经过前面一系列的文章描述,我们已经对CFS调度器有了一定的认识。那么本篇文章就作为一篇总结和思考。我们就回忆一下CFS调度器的那些事。我们就以问题的形式重新回顾一遍CFS调度器设计的原理。现在开始,我们问题来了。


阅读全文>>]]>
Tue, 01 Jan 2019 04:37:30 +0000 smcdef http://jyj19.com/process_management/452.html
CFS调度器(5)-带宽控制 http://jyj19.com/process_management/451.html 前言

什么是带宽控制?简而言之就是控制一个用户组在给定周期时间内可以消耗CPU的时间,如果在给定的周期内消耗CPU时间超额,就限制该用户组内任务调度,直到下一个周期。限制某个进程的最大CPU使用率是否真的有必要呢?如果一个系统中仅存在一个进程,限制该进程使用CPU使用率最大50%,当进程使用率达到50%的时候,就限制该进程运行,CPU进入idle状态。看起来好像没有任何意义。但是,有时候,这正是系统管理员可能想要做的事情。如果这些进程属于仅支付了一定CPU时间的客户或者需要提供严格资源的情况,则限制进程(或进程组)可能消耗的CPU时间的最大份额是很有必要的。毕竟付多少钱享受多少服务。本文章仅讨论SCHED_NORMAL进程的CPU带宽控制(CPU bandwidth control)。

棋牌游戏,欢乐谷手机棋牌下载送彩金 注:代码分析基于Linux 4.18.0。

阅读全文>>]]>
Sat, 22 Dec 2018 07:07:23 +0000 smcdef http://jyj19.com/process_management/451.html
CFS调度器(4)-PELT(per entity load tracking) http://jyj19.com/process_management/450.html 为什么需要PELT?

棋牌游戏,欢乐谷手机棋牌下载送彩金 为了让调度器更加的聪明,我们总是希望系统满足最大吞吐量同时又最大限度的降低功耗。虽然可能有些矛盾,但是现实总是这样。PELT算法是Linux 3.8合入的,那么在此之前,我们存在什么问题才引入PELT算法呢?在Linux 3.8之前,CFS以每个运行队列(runqueue,简称rq)为基础跟踪负载。但是这种方法,我们无法确定当前负载的来源。同时,即使工作负载相对稳定的情况下,在rq级别跟踪负载,其值也会产生很大变化。为了解决以上的问题,PELT算法会跟踪每个调度实体(per-scheduling entity)的负载情况。

注:代码分析基于Linux 4.18.0。


阅读全文>>]]>
Sun, 02 Dec 2018 07:40:17 +0000 smcdef http://jyj19.com/process_management/450.html
CFS调度器(3)-组调度 http://jyj19.com/process_management/449.html 前言

棋牌游戏,欢乐谷手机棋牌下载送彩金 现在的计算机基本都支持多用户登陆。如果一台计算机被两个用户A和B使用。假设用户A运行9个进程,用户B只运行1个进程。按照之前文章对CFS调度器的讲解,我们认为用户A获得90% CPU时间,用户B只获得10% CPU时间。随着用户A不停的增加运行进程,用户B可使用的CPU时间越来越少。这显然是不公平的。因此,我们引入组调度(Group Scheduling )的概念。我们以用户组作为调度的单位,这样用户A和用户B各获得50% CPU时间。用户A中的每个进程分别获得5.5%(50%/9)CPU时间。而用户B的进程获取50% CPU时间。这也符合我们的预期。本篇文章讲解CFS组调度实现原理。

注:代码分析基于Linux 4.18.0。使能组调度需要配置CONFIG_CGROUPS和CONFIG_FAIR_GROUP_SCHED。

阅读全文>>]]>
Sat, 10 Nov 2018 12:43:19 +0000 smcdef http://jyj19.com/process_management/449.html
CFS调度器(2)-源码解析 http://jyj19.com/process_management/448.html 前言

棋牌游戏,欢乐谷手机棋牌下载送彩金 经通过上一篇文章《CFS调度器-基本原理》,我们可以了解到CFS调度器基本工作原理。本篇文章主要集中在Linux CFS调度器源码解析。

注:文章代码分析基于Linux-4.18.0。

阅读全文>>]]>
Sun, 21 Oct 2018 12:55:07 +0000 smcdef http://jyj19.com/process_management/448.html