系统相关
首页 > 系统相关> > linux – / proc / pid / sched中的clock-delta是什么?

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

作者:互联网

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

解决方法:

我潜伏在内核源代码中,找出时钟增量表示的内容.

我发现在读取/ proc / pid / sched时将其打印出来的函数.

它是proc_sched_show_task,它位于kernel / sched / debug.c文件中.

深入了解我发现打印出时钟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));

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

所以… clock-delta是cpu_clock()返回的两个值之间的差值.

进入kernel / sched / clock.c我找到了这个函数的描述:

cpu_clock(i) provides a fast (execution time) high resolution
clock with bounded drift between CPUs. The value of cpu_clock(i) is
monotonic for constant i. The timestamp returned is in nanoseconds.

标签:linux,linux-kernel,procfs
来源: https://codeday.me/bug/20190729/1568867.html