How to compute the amount of time a thread has been running on cpu
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 18 Aug 2021 09:43:14 UTC
I am trying to figure out how long a thread(sitting on a particular CPU's real-time RUNQ) has been running on the CPU, (might help if I can collect the runtime stats of the tread across the CPUs in the case it did run on other CPUs too). I came across td_runtime and ts_runtime. ts_slptime = 18008, ts_runtime = 414196, td_slptick = 0, td_blktick = 0, td_incruntime = 36984047370, td_runtime = 55246215882, td_lastcpu = 0, td_oncpu = -1, looking at the code it seems ts_runtime is a decayed sum, but I dint find the same for td_runtime. Can someone help me find out how long this thread has been running and which paramere is more reliable? Another question I see db_show_thread, converts ticks to ms, using the calculation listed below, is this correct or just an approximation? delta = (u_int)ticks - (u_int)td->td_swinvoltick; db_printf(" last involuntary switch: %d ms ago\n", 1000 * delta / hz); -AK