Linuxのスケジューラ CFSの実装を読んでいる。このスケジューラはタスクの中で一番vruntimeの少ないタスクを次の動作タスクに選ぶ。 このvruntimeの粒度がどの程度のものか知りたくソースを読んだ。 結論から言うと、ナノ秒単位のモノトニックタイマがvruntimeのもとになっていることがわかった。 kernel/sched/fair.cの__update_curr()でvruntimeに足している値はdelta_exec_weighted。 delta_exec_weightedはdelta_execから作られる。 さらにdelta_execはupdate_curr()で「rq_of(cfs_rq)->clock_task」と「curr->exec_start」の差から作られる。 ということは「rq_of(cfs_rq)->clock_task」と「curr->exec_sta