第一个问题,就是关于delta_exec这个参数: /* * Get the amount of time the current task was running * since the last time we changed load (this cannot * overflow on 32 bits): */ delta_exec = (unsigned long)(now - curr->exec_start); 其中now,代表运行队列当前的时间,curr->exec_start有两个设置的地方: 1)在更新cfs_rq->curr的函数set_next_entity()里,会调用update_stats_curr_start() 将exec_start设置为当前运行队列的时间: se->exec_start = rq_of(cfs_rq)->clock; 照comment的解释,将开始一个新的运行周期 2)即在上面__update_curr()完成后,exec_start被设置为rq的时间