linux中O(1)调度算法与完全公平(CFS)调度算法...
分类:
系统相关 时间:
2014-10-02 19:43:53
阅读次数:
3939
一、概述
首先简单介绍一下基本的设计思路,
CFS思路很简单,就是根据各个进程的权重分配运行时间(权重怎么来的后面再说)。
进程的运行时间计算公式为:
分配给进程的运行时间 = 调度周期 * 进程权重 / 所有进程权重之和 (公式1)
调度周期很好理解,就是将所有处于TASK_RUNNING态进程都调度一遍的时间,
差不多相当于O(1)调度算法中运行队列和过期队列切换一次的时间...
分类:
系统相关 时间:
2014-09-19 23:58:46
阅读次数:
654
cpu子系统用于控制cgroup中所有进程可以使用的cpu时间片,通过组调度(将task_group作为调度实体)来实现。
参考博客:
1.cpu子系统
2.Linux内核之CFS调度和组调度...
分类:
其他好文 时间:
2014-08-12 22:16:54
阅读次数:
242
在Linux中进程用结构体task_struct来管理一个进程所需的所有信息(所以一般较大,在32位机上,大约有1.7KB)。为了提高效率,Linux使用了一些卓越的技术。
通过slab分配task_struct结构
Linux创建进程迅速,正是因为slab分配器预先分配和重复使用task_struct,这样就避免了动态分配和释放所带来的资源消耗(毕竟一个task_struct较大,而...
分类:
系统相关 时间:
2014-06-15 12:15:30
阅读次数:
374
在系统日常生产过程中,如何从Oracle数据库同步一些配置表到GP库个问题。
先来说说之前使用的方式:
0. 使用第3方工具从Oracle导出纯文本格式,存放在本地;
1. 使用GP外部表加载入库
这种方式优点是对于需要同步大数据量的表的时候性能非常高;缺点是稍显麻烦,最主要的是非实时的,存在着任务调度周期和导出导入时间周期。
对此我的解决办法是简化整个过程并实时查询:
0. ...
分类:
数据库 时间:
2014-06-08 05:46:35
阅读次数:
251
从Linux2.5开始Linux实现了0(1)调度算法, 算法的思想要点在于设定动态的nice值确定优先级, 在优先级数组调度(数组最大长度是固定常数) 简而言之,不管系统中有多少进程需要调度都可以在o(1)的时间复杂度内完成调度,是不是很吊啊?但是实践证明(我没证明,文献说的) o(1)对i/o交互型的调度体验上表现很差 轮转周期很不灵活,主要原因在于调度出发点采用粒度很大时间片进行轮换,诚然整体负载会比较好,但是对于i/o交互型的,我们理想的调度策略是采用处理器使用比而不是时间片来分配, ...
分类:
系统相关 时间:
2014-05-02 21:18:41
阅读次数:
460