zoukankan      html  css  js  c++  java
  • 进程调度简要总结

    0. 权重

    进程的优先级与内核的nice值对应,nice值降低对应权重增加;

    内核根据进程类型和静态优先级计算权重值;

    内核不仅维护进程自身的权重,还维护调度队列的权重,当进程被加入到调度队列时,也要该进程的权重增加到队列权重中;

    1. 完全公平调度延时周期

    内核可以通过参数sysctl_sched_latency配置一个时间间隔,用来保证每个可运行进程在此间隔下都能至少运行一次;
    控制参数sched_nr_latency控制在上述时间间隔下最大的活动进程数目;如果活动进程的数目超过该配置数,则延时间隔时间成比例的进行扩展;

    sysctl_sched_latency = sysctl_sched_latency * nr_running / sched_nr_latency

    进程分配到的时间根据进程权重在就绪队列中权重的比例进行分配;

    slice = slice * se->load / rq->load

    2. 周期调度器扫描

    周期调度器每个HZ扫描一次,更新当前进程的运行时间,并检查当前进程的运行时间是否超过了进程分配到的运行时间,如果超过了则标记进行重新调度标记;

    在系统调用返回、中断返回等时机,会检查该标记,调用注册的实际调度方法的函数(比如公平调度注册的处理函数)处理进程,并进行实际的进程上下文切换;

    3. 完全公平调度红黑树

    完全公平调度就绪队列将进行维护在一棵红黑树中,调度器每次获取最左侧节点进程进行调度;
    调度会从红黑树中删除该节点(仍可通过curr关联队列),当调度结束之后将该节点插入树中;得到调度进程的运行时间增加,使其重新插入的时候右移,未得到调度的进程实际不变,则相对左移,更容易得到调度;

    对于权重大的进程,其运行时间增加的慢,向右移动的速度也慢,调度的机会要更大;

    睡眠的进程的运行时间保持不变,这样当唤醒之后,位置更靠左,更容易得到调度;

  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/11762003.html
Copyright © 2011-2022 走看看