什么是/ proc/pid/sched中的clock-delta?

bob*_*bah 3 linux linux-kernel procfs

main (xxxxx, #threads: xxxxx)
---------------------------------------------------------
se.exec_start                      :                 xxxx
se.vruntime                        :                 xxxx
se.sum_exec_runtime                :                 xxxx
se.wait_start                      :                 xxxx
...
policy                             :                 xxxx
prio                               :                 xxxx
clock-delta                        :                   58 <== this one
Run Code Online (Sandbox Code Playgroud)

Dav*_*rra 7

我潜伏到内核源代码中找出clock-delta代表什么.

我找到了/proc/pid/sched读取时将其打印出来的功能.

这是proc_sched_show_task,这是到kernel/sched/debug.c文件中.

我深深地发现了打印出来的代码部分clock-delta...这里是:

unsigned int this_cpu = raw_smp_processor_id();
u64 t0, t1;

t0 = cpu_clock(this_cpu);
t1 = cpu_clock(this_cpu);
SEQ_printf(m, "%-35s:%21Ld\n",
           "clock-delta", (long long)(t1-t0));
Run Code Online (Sandbox Code Playgroud)

raw_smp_processor_id 返回运行当前线程的CPU的id.

so ... clock-delta是被cpu_clock()调用两次返回的两个值之间的差异.

kernel/sched/clock.c我发现这个功能的描述:

cpu_clock(i)提供了一个快速(执行时间)高分辨率
时钟,CPU之间存在有界漂移.对于常数i,cpu_clock(i)的值是单调的.返回的时间戳以纳秒为单位.