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关联队列),当调度结束之后将该节点插入树中;得到调度进程的运行时间增加,使其重新插入的时候右移,未得到调度的进程实际不变,则相对左移,更容易得到调度;

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

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

  • 相关阅读:
    设计模式六大原则之单例模式
    SpringCloud Alibaba Seata---处理分布式事务
    SpringCloud Alibaba Sentinel---实现熔断与限流
    Linux下Nacos集群与持久化配置
    SpringCloud Alibaba Nacos---服务注册与配置中心
    SpringCloud(H版)学习---分布式请求链路追踪
    Markdown主要语法及使用
    project read error(项目读取错误)
    详解C3P0(数据库连接池)
    Java一般命名规范
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/11762003.html
Copyright © 2011-2022 走看看