美文网首页Linux知识点汇集
调度相关数据结构

调度相关数据结构

作者: vincent_0425 | 来源:发表于2019-03-16 23:15 被阅读0次

1. task_struct

说到调度,第一个首先相当的应该是task_struct,它用于表示一个进程/线程,它可以看做调度的一个实体单位,该结构体中,几个与调度较为密切的成员如下:

struct task_struct {
    int prio, static_prio, normal_prio;
    unsigned int rt_priority;
    const struct sched_class *sched_class;
    struct sched_entity se;
    struct sched_rt_entity rt;
#ifdef CONFIG_CGROUP_SCHED
    struct task_group *sched_task_group;
#endif
    struct sched_dl_entity dl;
...
    unsigned int policy;
    int nr_cpus_allowed;
    cpumask_t cpus_allowed;
}
  • rt_priority是实时进程的优先级,其值范围为0到99,值越大优先级越高;
  • prio和normal_prio表示动态优先级,static_prio是静态优先级,静态优先级由启动时静态分配,例如使用nice值或sched_setscheduler()系统调用。normal_prio基于静态优先级及调度策略计算,prio用于某些情况下内核需要暂时提高进程的优先级。
  • sched_class是调度器类;

2. sched_class

3. sched_entity

struct sched_entity {
    struct load_weight load;
    struct rb_node run_node;
    unsigned int on_rq;
    u64 exec_start;
    u64 sum_exec_runtime;
    u64 vruntime;
    u64 prev_sum_exec_runtime;
}

  • load用于负载均衡,指定了权重,计算该值是调度器的一项重任;
  • run_node是一颗红黑树节点,使得实体可在红黑树上排序;
  • on_rq指示该实体是否在就绪队列中:struct rq;在就绪队列中表示等待调度;
  • exec_start以及接下来的几个变量用于时间统计,主要是记录CPU消耗时间用于CFS调度器。sum_exec_runtime跟踪进程运行时在CPU上执行的总时间,exec_start指示当前执行的开始,例如新进程加入就绪队列或周期性调度器中,每次调用会计算当前时间与exec_start差值叠加到sum_exec_runtime中,而当前时间则设为exec_start,prev_sum_exec_runtime用于计算上次进程执行的CPU时间,vruntime记录进程在执行期间虚拟时钟上流逝的时间数量。

相关文章

  • 调度相关数据结构

    1. task_struct 说到调度,第一个首先相当的应该是task_struct,它用于表示一个进程/线程,它...

  • quartz学习笔记之界面配置(二)

    本文内容 通过xml配置一个调度器Scheduler,所有的任务通过该调度器来进行调度,结合官方提供的数据结构以及...

  • Go调度相关

    go 调度go routinue在线程中进行调度 GPM的概念: G(Goroutine): 即Go协程,每个go...

  • 计算机二级Java易错基础

    一,数据结构与算法 1,操作系统中作业调度与队列有关。操作系统的调度是按先进先出的原则操作的。 2,数据结构中的数...

  • 第三章 处理机调度与死锁

    3.1处理机调度相关基本概念 处理机调度 1高级调度:又称作业调度或长程调度,接纳调度(主要在早期批处理阶段,处理...

  • openssl相关数据结构的设计

    hash表 数据结构:使用链表数组实现 相关接口 内存分配 内存相关数据结构 内存操作相关接口 CRYPTO_me...

  • 任务调度框架 quartz 和 xxl-job - 上

    1 比较 quartz 和 xxl-job 都是任务调度框架,任务调度相关功能都可以借助这两个框架实现。任务调度指...

  • runtime相关数据结构

    Runtime相关的基础数据结构 相关的基础数据结构有: objc_object objc_class isa指针...

  • 策略调度和创建虚机接口 usage

    一、 策略调度相关接口 1. 发起策略调度 发起策略调度动作,瞬时返回执行状态,耗时操作后台异步写入数据到redi...

  • 8.ngx_buf_t

    ngx buf 相关数据结构

网友评论

    本文标题:调度相关数据结构

    本文链接:https://www.haomeiwen.com/subject/mxoemqtx.html