GeezerVison is showing github.com — report: add rss and use/kernel cpu usage fields · nodejs/node@a880568
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: doc/api/report.md +12-7Lines changed: 12 additions & 7 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -198,10 +198,13 @@ is provided below for reference. | 198 | 198 | } | 199 | 199 | }, | 200 | 200 | "resourceUsage": { | 201 | | - "userCpuSeconds": 0.069595, | 202 | | - "kernelCpuSeconds": 0.019163, | 203 | | - "cpuConsumptionPercent": 0.000000, | 204 | | - "maxRss": 18079744, | | 201 | + "rss": 45768704, | | 202 | + "userCpuSeconds": 0.040072, | | 203 | + "kernelCpuSeconds": 0.016029, | | 204 | + "cpuConsumptionPercent": 5.6101, | | 205 | + "userCpuConsumptionPercent": 4.0072, | | 206 | + "kernelCpuConsumptionPercent": 1.6029, | | 207 | + "maxRss": 45768704, | 205 | 208 | "pageFaults": { | 206 | 209 | "IORequired": 0, | 207 | 210 | "IONotRequired": 4610 | @@ -212,9 +215,11 @@ is provided below for reference. | 212 | 215 | } | 213 | 216 | }, | 214 | 217 | "uvthreadResourceUsage": { | 215 | | - "userCpuSeconds": 0.068457, | 216 | | - "kernelCpuSeconds": 0.019127, | 217 | | - "cpuConsumptionPercent": 0.000000, | | 218 | + "userCpuSeconds": 0.039843, | | 219 | + "kernelCpuSeconds": 0.015937, | | 220 | + "cpuConsumptionPercent": 5.578, | | 221 | + "userCpuConsumptionPercent": 3.9843, | | 222 | + "kernelCpuConsumptionPercent": 1.5937, | 218 | 223 | "fsActivity": { | 219 | 224 | "reads": 0, | 220 | 225 | "writes": 0 | |
Collapse file Copy file name to clipboardExpand all lines: src/node_report.cc +15Lines changed: 15 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -627,6 +627,13 @@ static void PrintResourceUsage(JSONWriter* writer) { | 627 | 627 | // Process and current thread usage statistics | 628 | 628 | uv_rusage_t rusage; | 629 | 629 | writer->json_objectstart("resourceUsage"); | | 630 | + | | 631 | + size_t rss; | | 632 | + int err = uv_resident_set_memory(&rss); | | 633 | + if (!err) { | | 634 | + writer->json_keyvalue("rss", rss); | | 635 | + } | | 636 | + | 630 | 637 | if (uv_getrusage(&rusage) == 0) { | 631 | 638 | double user_cpu = | 632 | 639 | rusage.ru_utime.tv_sec + SEC_PER_MICROS * rusage.ru_utime.tv_usec; | @@ -636,7 +643,11 @@ static void PrintResourceUsage(JSONWriter* writer) { | 636 | 643 | writer->json_keyvalue("kernelCpuSeconds", kernel_cpu); | 637 | 644 | double cpu_abs = user_cpu + kernel_cpu; | 638 | 645 | double cpu_percentage = (cpu_abs / uptime) * 100.0; | | 646 | + double user_cpu_percentage = (user_cpu / uptime) * 100.0; | | 647 | + double kernel_cpu_percentage = (kernel_cpu / uptime) * 100.0; | 639 | 648 | writer->json_keyvalue("cpuConsumptionPercent", cpu_percentage); | | 649 | + writer->json_keyvalue("userCpuConsumptionPercent", user_cpu_percentage); | | 650 | + writer->json_keyvalue("kernelCpuConsumptionPercent", kernel_cpu_percentage); | 640 | 651 | writer->json_keyvalue("maxRss", rusage.ru_maxrss * 1024); | 641 | 652 | writer->json_objectstart("pageFaults"); | 642 | 653 | writer->json_keyvalue("IORequired", rusage.ru_majflt); | @@ -660,7 +671,11 @@ static void PrintResourceUsage(JSONWriter* writer) { | 660 | 671 | writer->json_keyvalue("kernelCpuSeconds", kernel_cpu); | 661 | 672 | double cpu_abs = user_cpu + kernel_cpu; | 662 | 673 | double cpu_percentage = (cpu_abs / uptime) * 100.0; | | 674 | + double user_cpu_percentage = (user_cpu / uptime) * 100.0; | | 675 | + double kernel_cpu_percentage = (kernel_cpu / uptime) * 100.0; | 663 | 676 | writer->json_keyvalue("cpuConsumptionPercent", cpu_percentage); | | 677 | + writer->json_keyvalue("userCpuConsumptionPercent", user_cpu_percentage); | | 678 | + writer->json_keyvalue("kernelCpuConsumptionPercent", kernel_cpu_percentage); | 664 | 679 | writer->json_objectstart("fsActivity"); | 665 | 680 | writer->json_keyvalue("reads", stats.ru_inblock); | 666 | 681 | writer->json_keyvalue("writes", stats.ru_oublock); | |
Collapse file Copy file name to clipboardExpand all lines: test/common/report.js +10-2Lines changed: 10 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -234,12 +234,16 @@ function _validateContent(report, fields = []) { | 234 | 234 | // Verify the format of the resourceUsage section. | 235 | 235 | const usage = report.resourceUsage; | 236 | 236 | const resourceUsageFields = ['userCpuSeconds', 'kernelCpuSeconds', | 237 | | - 'cpuConsumptionPercent', 'maxRss', | | 237 | + 'cpuConsumptionPercent', 'userCpuConsumptionPercent', | | 238 | + 'kernelCpuConsumptionPercent', 'rss', 'maxRss', | 238 | 239 | 'pageFaults', 'fsActivity']; | 239 | 240 | checkForUnknownFields(usage, resourceUsageFields); | 240 | 241 | assert.strictEqual(typeof usage.userCpuSeconds, 'number'); | 241 | 242 | assert.strictEqual(typeof usage.kernelCpuSeconds, 'number'); | 242 | 243 | assert.strictEqual(typeof usage.cpuConsumptionPercent, 'number'); | | 244 | + assert.strictEqual(typeof usage.userCpuConsumptionPercent, 'number'); | | 245 | + assert.strictEqual(typeof usage.kernelCpuConsumptionPercent, 'number'); | | 246 | + assert(Number.isSafeInteger(usage.rss)); | 243 | 247 | assert(Number.isSafeInteger(usage.maxRss)); | 244 | 248 | assert(typeof usage.pageFaults === 'object' && usage.pageFaults !== null); | 245 | 249 | checkForUnknownFields(usage.pageFaults, ['IORequired', 'IONotRequired']); | @@ -254,11 +258,15 @@ function _validateContent(report, fields = []) { | 254 | 258 | if (report.uvthreadResourceUsage) { | 255 | 259 | const usage = report.uvthreadResourceUsage; | 256 | 260 | const threadUsageFields = ['userCpuSeconds', 'kernelCpuSeconds', | 257 | | - 'cpuConsumptionPercent', 'fsActivity']; | | 261 | + 'cpuConsumptionPercent', 'fsActivity', | | 262 | + 'userCpuConsumptionPercent', | | 263 | + 'kernelCpuConsumptionPercent']; | 258 | 264 | checkForUnknownFields(usage, threadUsageFields); | 259 | 265 | assert.strictEqual(typeof usage.userCpuSeconds, 'number'); | 260 | 266 | assert.strictEqual(typeof usage.kernelCpuSeconds, 'number'); | 261 | 267 | assert.strictEqual(typeof usage.cpuConsumptionPercent, 'number'); | | 268 | + assert.strictEqual(typeof usage.userCpuConsumptionPercent, 'number'); | | 269 | + assert.strictEqual(typeof usage.kernelCpuConsumptionPercent, 'number'); | 262 | 270 | assert(typeof usage.fsActivity === 'object' && usage.fsActivity !== null); | 263 | 271 | checkForUnknownFields(usage.fsActivity, ['reads', 'writes']); | 264 | 272 | assert(Number.isSafeInteger(usage.fsActivity.reads)); | |
|