Skip to content

Commit a2620ac

Browse files
theanarkhRafaelGSS
authored andcommitted
report: add rss and use/kernel cpu usage fields
PR-URL: #45043 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Chengzhong Wu <[email protected]> Reviewed-By: Gireesh Punathil <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
1 parent 732f9a7 commit a2620ac

File tree

3 files changed

+37
-9
lines changed

3 files changed

+37
-9
lines changed

doc/api/report.md

+12-7
Original file line numberDiff line numberDiff line change
@@ -198,10 +198,13 @@ is provided below for reference.
198198
}
199199
},
200200
"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,
205208
"pageFaults": {
206209
"IORequired": 0,
207210
"IONotRequired": 4610
@@ -212,9 +215,11 @@ is provided below for reference.
212215
}
213216
},
214217
"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,
218223
"fsActivity": {
219224
"reads": 0,
220225
"writes": 0

src/node_report.cc

+15
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,13 @@ static void PrintResourceUsage(JSONWriter* writer) {
627627
// Process and current thread usage statistics
628628
uv_rusage_t rusage;
629629
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+
630637
if (uv_getrusage(&rusage) == 0) {
631638
double user_cpu =
632639
rusage.ru_utime.tv_sec + SEC_PER_MICROS * rusage.ru_utime.tv_usec;
@@ -636,7 +643,11 @@ static void PrintResourceUsage(JSONWriter* writer) {
636643
writer->json_keyvalue("kernelCpuSeconds", kernel_cpu);
637644
double cpu_abs = user_cpu + kernel_cpu;
638645
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;
639648
writer->json_keyvalue("cpuConsumptionPercent", cpu_percentage);
649+
writer->json_keyvalue("userCpuConsumptionPercent", user_cpu_percentage);
650+
writer->json_keyvalue("kernelCpuConsumptionPercent", kernel_cpu_percentage);
640651
writer->json_keyvalue("maxRss", rusage.ru_maxrss * 1024);
641652
writer->json_objectstart("pageFaults");
642653
writer->json_keyvalue("IORequired", rusage.ru_majflt);
@@ -660,7 +671,11 @@ static void PrintResourceUsage(JSONWriter* writer) {
660671
writer->json_keyvalue("kernelCpuSeconds", kernel_cpu);
661672
double cpu_abs = user_cpu + kernel_cpu;
662673
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;
663676
writer->json_keyvalue("cpuConsumptionPercent", cpu_percentage);
677+
writer->json_keyvalue("userCpuConsumptionPercent", user_cpu_percentage);
678+
writer->json_keyvalue("kernelCpuConsumptionPercent", kernel_cpu_percentage);
664679
writer->json_objectstart("fsActivity");
665680
writer->json_keyvalue("reads", stats.ru_inblock);
666681
writer->json_keyvalue("writes", stats.ru_oublock);

test/common/report.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,16 @@ function _validateContent(report, fields = []) {
234234
// Verify the format of the resourceUsage section.
235235
const usage = report.resourceUsage;
236236
const resourceUsageFields = ['userCpuSeconds', 'kernelCpuSeconds',
237-
'cpuConsumptionPercent', 'maxRss',
237+
'cpuConsumptionPercent', 'userCpuConsumptionPercent',
238+
'kernelCpuConsumptionPercent', 'rss', 'maxRss',
238239
'pageFaults', 'fsActivity'];
239240
checkForUnknownFields(usage, resourceUsageFields);
240241
assert.strictEqual(typeof usage.userCpuSeconds, 'number');
241242
assert.strictEqual(typeof usage.kernelCpuSeconds, 'number');
242243
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));
243247
assert(Number.isSafeInteger(usage.maxRss));
244248
assert(typeof usage.pageFaults === 'object' && usage.pageFaults !== null);
245249
checkForUnknownFields(usage.pageFaults, ['IORequired', 'IONotRequired']);
@@ -254,11 +258,15 @@ function _validateContent(report, fields = []) {
254258
if (report.uvthreadResourceUsage) {
255259
const usage = report.uvthreadResourceUsage;
256260
const threadUsageFields = ['userCpuSeconds', 'kernelCpuSeconds',
257-
'cpuConsumptionPercent', 'fsActivity'];
261+
'cpuConsumptionPercent', 'fsActivity',
262+
'userCpuConsumptionPercent',
263+
'kernelCpuConsumptionPercent'];
258264
checkForUnknownFields(usage, threadUsageFields);
259265
assert.strictEqual(typeof usage.userCpuSeconds, 'number');
260266
assert.strictEqual(typeof usage.kernelCpuSeconds, 'number');
261267
assert.strictEqual(typeof usage.cpuConsumptionPercent, 'number');
268+
assert.strictEqual(typeof usage.userCpuConsumptionPercent, 'number');
269+
assert.strictEqual(typeof usage.kernelCpuConsumptionPercent, 'number');
262270
assert(typeof usage.fsActivity === 'object' && usage.fsActivity !== null);
263271
checkForUnknownFields(usage.fsActivity, ['reads', 'writes']);
264272
assert(Number.isSafeInteger(usage.fsActivity.reads));

0 commit comments

Comments
 (0)