Most Urgent Global tasks (locked) tasks Local (locked) timers Global timers Local Local ? Yes No Local ? Yes No Class? past future past future Oldest newest oldest newest oldest runqueue-depth runqueue-depth Time-based Wait queues - 1 global - 1 per thread Priority-based Run queues - 1 global - 1 per thread task_wakeup() task_schedule() task_queue() tasklet_wakeup() t->process() Run! 37% =1 (accessed using atomic ops) 50% 13% Yes Local ? No TASK_SELF_WAKING TASK_HEAVY (default) In I/O or signals Most Urgent order Scan 5 class-based tasklet queues per thread (one accessible from remote threads) TL_URGENT TL_NORMAL TL_BULK TL_HEAVY SHARED