Time accounting based on TSC
- as thre are still KERNEL and IDLE entries, time accounting for kernel and idle time works the same as for any other process - everytime we stop accounting for the currently running process, kernel or idle, we read the TSC counter and increment the p_cycles entry. - the process cycles inherently include some of the kernel cycles as we can stop accounting for the process only after we save its context and we start accounting just before we restore its context - this assumes that the system does not scale the CPU frequency which will be true for ... long time ;-)
This commit is contained in:
@@ -40,6 +40,8 @@ struct proc {
|
||||
clock_t p_virt_left; /* number of ticks left on virtual timer */
|
||||
clock_t p_prof_left; /* number of ticks left on profile timer */
|
||||
|
||||
u64_t p_cycles; /* how many cycles did the process use */
|
||||
|
||||
struct proc *p_nextready; /* pointer to next ready process */
|
||||
struct proc *p_caller_q; /* head of list of procs wishing to send */
|
||||
struct proc *p_q_link; /* link to next proc wishing to send */
|
||||
|
||||
Reference in New Issue
Block a user