Search code examples
linuxlinux-kernelprocfs

what is clock-delta in /proc/pid/sched?


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

Solution

  • I was lurking into kernel source to find out what clock-delta represent.

    I found the function that print it out when /proc/pid/sched is read.

    It is proc_sched_show_task and it is into kernel/sched/debug.c file.

    Going deeply i found the part of code that printout the clock-delta... Here it is:

    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 returns the id of the CPU running the current thread.

    so... clock-delta is the difference between two values returned by cpu_clock() called twice.

    Into kernel/sched/clock.c I found the description of this function:

    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.