MINOR: debug: report each thread's cpu usage in "show thread"
Now we can report each thread's CPU time, both at wake up (poll) and retrieved while dumping (now), then the difference, which directly indicates how long the thread has been running uninterrupted. A very high value for the diff could indicate a deadlock, especially if it happens between two threads. Note that it may occasionally happen that a wrong value is displayed since nothing guarantees that the date is read atomically.
This commit is contained in:
parent
219b829b62
commit
9c8800af3b
@ -38,6 +38,8 @@
|
||||
void ha_thread_dump(struct buffer *buf, int thr, int calling_tid)
|
||||
{
|
||||
unsigned long thr_bit = 1UL << thr;
|
||||
unsigned long long p = thread_info[thr].prev_cpu_time;
|
||||
unsigned long long n = now_cpu_time_thread(&thread_info[thr]);
|
||||
|
||||
chunk_appendf(buf,
|
||||
"%c Thread %-2u: act=%d glob=%d wq=%d rq=%d tl=%d tlsz=%d rqsz=%d\n"
|
||||
@ -61,6 +63,7 @@ void ha_thread_dump(struct buffer *buf, int thr, int calling_tid)
|
||||
#endif
|
||||
|
||||
chunk_appendf(buf, "\n");
|
||||
chunk_appendf(buf, " cpu_ns: poll=%llu now=%llu diff=%llu\n", p, n, n-p);
|
||||
|
||||
/* this is the end of what we can dump from outside the thread */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user