Commit 792df36
feat(info): add thread CPU time measurement for worker thread monitoring (#3379)
## Summary
This PR introduces worker thread CPU time monitoring to identify
bottlenecks and fixes precision issues in process CPU time calculations.
## Problem Statement
1. **Lack of granular thread monitoring**: The current `INFO` command
provides only overall process CPU time, which includes background
threads. This makes it difficult to identify bottlenecks in worker
threads specifically, as background thread activity can mask true worker
thread utilization.
2. **Precision loss in CPU time calculation**: The existing CPU time
calculation truncates microsecond values due to integer division
(`tv_usec / 1000000`), causing millisecond data loss. This results in
inaccurate reporting, especially for short operations where sub-second
precision matters.
## Solution
### 1. Worker Thread CPU Time Monitoring
- Added new `worker_cpu_time` metric to track CPU usage per worker
thread
- Implemented per-thread CPU time collection using platform-specific
APIs
- Formatted output with microsecond precision (6 decimal places) to
match system precision
- Sample output: `worker_cpu_time:[0.123456,0.456789,1.234567]`
### 2. CPU Time Calculation Fix
- Fixed precision loss in `used_cpu_user` and `used_cpu_sys`
calculations
- Replaced integer division with floating point division:
**Before**: `tv_usec / 1000000` → truncates to integer
**After**: `static_cast<double>(tv_usec) / 1e6` → preserves microseconds
## Benefits
- **Pinpoint worker thread bottlenecks**: Isolate worker thread CPU
usage from background threads
- **Accurate performance analysis**: Microsecond-precision timing
enables precise performance profiling
- **Better load diagnosis**: Distinguish between actual worker
saturation and background activity
---------
Co-authored-by: yxj25245 <yxj25245@ly.com>1 parent cc2bb3c commit 792df36
5 files changed
Lines changed: 67 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
26 | 31 | | |
27 | 32 | | |
28 | 33 | | |
| |||
33 | 38 | | |
34 | 39 | | |
35 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
36 | 78 | | |
37 | 79 | | |
38 | 80 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1402 | 1402 | | |
1403 | 1403 | | |
1404 | 1404 | | |
1405 | | - | |
1406 | | - | |
| 1405 | + | |
| 1406 | + | |
1407 | 1407 | | |
1408 | | - | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
1409 | 1417 | | |
1410 | 1418 | | |
1411 | 1419 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
589 | 590 | | |
590 | 591 | | |
591 | 592 | | |
| 593 | + | |
592 | 594 | | |
593 | 595 | | |
594 | 596 | | |
| |||
597 | 599 | | |
598 | 600 | | |
599 | 601 | | |
600 | | - | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
601 | 606 | | |
602 | 607 | | |
603 | 608 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
30 | 31 | | |
| |||
104 | 105 | | |
105 | 106 | | |
106 | 107 | | |
107 | | - | |
| 108 | + | |
| 109 | + | |
108 | 110 | | |
109 | 111 | | |
110 | 112 | | |
| |||
116 | 118 | | |
117 | 119 | | |
118 | 120 | | |
| 121 | + | |
| 122 | + | |
119 | 123 | | |
120 | 124 | | |
| 125 | + | |
121 | 126 | | |
122 | 127 | | |
0 commit comments