Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Introduction • The scheduler makes it possible to execute multiple programs at the same time, thus sharing the CPU with users of varying needs. • minimizing response time • maximizing overall CPU utilization
Scheduling structure • task_struct • record all status about task, like policy, state … • sched_entity • cfs scheduling node • sched_rt_entity • Real-time scheduling node • rq • per-CPU runqueue data structure • cfs_rq • CFS-related fields in a runqueue • rt_rq • Real-Time classes‘ related field in a runqueue
Scheduling Flow Schedule() preempt_disable Take rq and task clear_tsk_need_resched pick_next_task put_prev_task Check task state deactivate_task Check task same preempt_disable context_switch
Scheduling Flow Schedule() preempt_disable Take rq and task clear_tsk_need_resched pick_next_task put_prev_task Check task state deactivate_task Check task same preempt_disable context_switch
Scheduling Flow Schedule() preempt_disable Take rq and task clear_tsk_need_resched pick_next_task put_prev_task Check task state deactivate_task Check task same preempt_disable context_switch
Scheduling Flow Schedule() preempt_disable Take rq and task clear_tsk_need_resched pick_next_task put_prev_task Check task state deactivate_task Check task same preempt_disable context_switch
Scheduling Flow Schedule() preempt_disable Take rq and task clear_tsk_need_resched pick_next_task put_prev_task Check task state deactivate_task Check task same preempt_disable context_switch
Scheduling Flow Schedule() preempt_disable Take rq and task clear_tsk_need_resched pick_next_task put_prev_task Check task state deactivate_task Check task same preempt_disable context_switch
CFS • CFS stands for "Completely Fair Scheduler," and is implemented by Ingo Molnar and merged in Linux 2.6.23. • CFS basically models an "ideal, precise multi-tasking CPU" on real hardware. • Ideal multi-tasking CPU is non-existent since we can run only a single task at once.
CFS • CFS uses a time-ordered red-black tree for each CPU. • The feature of RB-tree approach: • The red-black tree is always balanced. • The time complexities of lookup operations are logarithmic. However, non-left-most lookup is hardly ever done and the left-most node pointer is always cached. • The red-black tree is O(log n) in time for most operations. (The previous scheduler employed O(1) )
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.