1. fork
创建新进程fork创建的新进程称为子进程,fork函数调用一次,返回两次。两次返回的唯一区别就是子进程的返回值是0,而父进程的返回值是新子进程的进程ID在fork之后是父进程先执行还是子进程先执行是不确定的,这取决于内核的调度算法fork的一个特性就是父进程的所有打开文件描述符都被复...
分类:
其他好文 时间:
2014-05-08 01:03:08
阅读次数:
361
一、概述:
Yarn调度器有许多实现,如Fifo, Capacity和Fair schedulers等。与其同时,正在进行一些优化措施来提高调度器在不同负载和工作场景下的性能。每个调度器都有自己的特性,调度决策受许多因素影响,如公平行、计算能力保证和资源的可靠性等。在部署一个调度算法到生产集群之前,评估一个调度算法是非常重要的,不幸的是,评估一个调度算法是不那么容易的,评估一个真正的集群是非常耗...
分类:
其他好文 时间:
2014-05-03 21:00:00
阅读次数:
443
从Linux2.5开始Linux实现了0(1)调度算法, 算法的思想要点在于设定动态的nice值确定优先级, 在优先级数组调度(数组最大长度是固定常数) 简而言之,不管系统中有多少进程需要调度都可以在o(1)的时间复杂度内完成调度,是不是很吊啊?但是实践证明(我没证明,文献说的) o(1)对i/o交互型的调度体验上表现很差 轮转周期很不灵活,主要原因在于调度出发点采用粒度很大时间片进行轮换,诚然整体负载会比较好,但是对于i/o交互型的,我们理想的调度策略是采用处理器使用比而不是时间片来分配, ...
分类:
系统相关 时间:
2014-05-02 21:18:41
阅读次数:
460
定义了一个elevator_noop的调度器类型:
static struct elevator_type elevator_noop = {
.ops = {
.elevator_merge_req_fn = noop_merged_requests,//查询一个request,用于将bio并入
.elevator_dispatch_fn = noop_dispatch,/...
分类:
系统相关 时间:
2014-04-29 13:33:20
阅读次数:
830
deadline算法的核心就是在传统的电梯算法中加入了请求超时的机制,该机制主要体现在两点:
1、请求超时时,对超时请求的选择。
2、没有请求超时时,当扫描完电梯最后一个request后,准备返回时,对第一个request的选择。基于以上两点,平衡了系统i/o吞吐量和响应时间。
此外,该算法还考虑到了读操作对写操作造成的饥饿。
定义了elevator_deadline调度器类型:
...
分类:
系统相关 时间:
2014-04-29 13:13:21
阅读次数:
548