技术特征:
1.一种linux内核调度器的重建方法,内核调度器根据纳入调度的各个调度实体对应的状态数据以及调度策略构建调度数据,并根据所构建的调度数据依序完成对各个调度实体的调度;该方法包括:接收到重建内核调度器的指令后,调用stop machine函数使系统进入停机模式,以停止所述内核调度器对调度实体的调度,在所述系统处于停机模式下执行以下步骤:确定纳入所述内核调度器调度的所有调度实体;对纳入所述内核调度器调度的每一调度实体执行出队操作,并清空每一调度实体对应的状态数据;对纳入所述内核调度器调度的所有调度实体执行出队操作后,对所述出队后的每一调度实体执行入队操作,并根据所述内核调度器的调度策略,重新为该调度实体构建并初始化对应的状态数据;清空所述内核调度器的调度数据;基于为各个调度实体重新构建以及初始化后的对应的状态数据,以及所述调度策略,重新构建调度数据;退出停机模式,以继续所述内核调度器对调度实体的调度。2.如权利要求1所述的方法,所述状态数据用于表征调度实体被内核调度器纳入调度后开始记录的状态信息。3.如权利要求1所述的方法,所述调度数据用于记录各个调度实体的调度顺序信息。4.如权利要求1所述的方法,在所述内核调度器为完全公平调度器的情况下:所述调度实体对应的状态数据至少包括虚拟运行时间;所述调度数据包括以各个调度实体对应的虚拟运行时间为关键字的红黑树。5.如权利要求4所述的方法,在所述调度实体为进程组的情况下,所述调度实体对应的状态数据还包括:以组内各个进程对应的虚拟运行时间为关键字的红黑树。6.如权利要求4所述的方法,在对纳入所述内核调度器调度的每一调度实体执行出队操作之前,还包括:确定所述内核调度器的高精度定时器的状态标志位是否为开启状态;在确定所述高精度定时器的状态标志位为开启状态的情况下,关闭所述高精度定时器;在基于为各个调度实体重新构建以及初始化后的对应的状态数据,以及所述调度策略,重新为所述内核调度器构建调度数据之后,退出停机模式之前,还包括:在确定所述高精度定时器的状态标志位为开启状态的情况下,开启所述高精度定时器。7.如权利要求1所述的方法,所述确定纳入所述内核调度器调度的所有调度实体,包括:遍历所述内核调度器对应的运行队列,确定所述运行队列中的进程以及进程组,将所述运行队列中的进程或进程组确定为纳入所述内核调度器调度的调度实体。8.如权利要求1所述的方法,在重建指令为更新内核调度器的调度策略的情况下:所述根据所述内核调度器的调度策略,重新为该调度实体构建并初始化对应的状态数据,包括:
根据所述内核调度器更新后的调度策略,重新为该调度实体构建并初始化对应的状态数据;所述基于为各个调度实体重新构建以及初始化后的对应的状态数据,以及所述调度策略,重新构建调度数据,包括:基于为各个调度实体重新构建以及初始化后的对应的状态数据,以及所述更新后的调度策略,重新构建调度数据。9.一种linux内核调度器的重建装置,内核调度器根据纳入调度的各个调度实体对应的状态数据以及调度策略构建调度数据,并根据所构建的调度数据依序完成对各个调度实体的调度;该装置包括:接收模块,用于接收到重建内核调度器的指令后,调用stop machine函数使系统进入停机模式,以停止所述内核调度器对调度实体的调度;确定模块,用于确定纳入所述内核调度器调度的所有调度实体;清空状态数据模块,用于对纳入所述内核调度器调度的每一调度实体执行出队操作,并清空每一调度实体对应的状态数据;重建状态数据模块,用于对纳入所述内核调度器调度的所有调度实体执行出队操作后,对所述出队后的每一调度实体执行入队操作,并根据所述内核调度器的调度策略,重新为该调度实体构建并初始化对应的状态数据;清空调度数据模块,清空所述内核调度器的调度数据;重建调度数据模块,用于基于为各个调度实体重新构建以及初始化后的对应的状态数据,以及所述调度策略,重新构建调度数据;退出模块,用于退出停机模式,以继续所述内核调度器对调度实体的调度。10.如权利要求9所述的装置,在所述内核调度器为完全公平调度器的情况下:所述调度实体对应的状态数据至少包括虚拟运行时间;所述调度数据包括以各调度实体对应的虚拟运行时间为关键词的红黑树。11.如权利要求10所述的装置,在所述调度实体为进程组的情况下,所述调度实体对应的状态数据还包括:以组内各个进程对应的虚拟运行时间为关键字的红黑树。12.如权利要求10所述的装置,所述装置还包括:关闭模块,用于在对纳入所述内核调度器调度的每一调度实体执行出队操作之前,确定所述内核调度器的高精度定时器的状态标志位是否为开启状态;在确定所述高精度定时器的状态标志位为开启状态的情况下,关闭所述高精度定时器;开启模块,用于在基于为各个调度实体重新构建以及初始化后的对应的状态数据,以及所述调度策略,重新为所述内核调度器构建调度数据之后,退出停机模式之前,在确定所述高精度定时器的状态标志位为开启状态的情况下,开启所述高精度定时器。13.一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如权利要求1-8中任一项所述linux内核调度器的重建法。14.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如
权利要求1-8中任一项所述的linux内核调度器的重建方法的步骤。
技术总结
本说明书一个或多个实施例提供一种Linux内核调度器的重建方法,在系统处于停机模式下,对内核调度器的调度数据以及各个调度实体的状态数据进行重建,具体而言,先确定纳入内核调度器的所有调度实体,对每一调度实体执行出队操作,并清空每一调度实体对应的状态数据。对所有的调度实体执行出队操作后,对出队后的每一调度实体执行入队操作,并根据内核调度器的调度策略,重新为该调度实体构建并初始化对应的状态数据,最后根据重新为各个调度实体构建的状态数据,以及调度策略,重新构建调度数据。重建完成后,退出停机模式,以使内核调度器继续对调度实体的调度。度器继续对调度实体的调度。度器继续对调度实体的调度。
技术研发人员:陈善佩 邓二伟 王鹏
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2021.12.09
技术公布日:2022/4/22