Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9d15da3

Browse filesBrowse files
theanarkhRafaelGSS
authored andcommitted
report: add more memory info
PR-URL: #45254 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
1 parent d172669 commit 9d15da3
Copy full SHA for 9d15da3

File tree

Expand file treeCollapse file tree

3 files changed

+46
-12
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+46
-12
lines changed
Open diff view settings
Collapse file

‎doc/api/report.md‎

Copy file name to clipboardExpand all lines: doc/api/report.md
+7-3Lines changed: 7 additions & 3 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ is provided below for reference.
2323
```json
2424
{
2525
"header": {
26-
"reportVersion": 1,
26+
"reportVersion": 3,
2727
"event": "exception",
2828
"trigger": "Exception",
2929
"filename": "report.20181221.005011.8974.0.001.json",
@@ -198,13 +198,17 @@ is provided below for reference.
198198
}
199199
},
200200
"resourceUsage": {
201-
"rss": 45768704,
201+
"rss": "35766272",
202+
"free_memory": "1598337024",
203+
"total_memory": "17179869184",
204+
"available_memory": "1598337024",
205+
"maxRss": "36624662528",
206+
"constrained_memory": "36624662528",
202207
"userCpuSeconds": 0.040072,
203208
"kernelCpuSeconds": 0.016029,
204209
"cpuConsumptionPercent": 5.6101,
205210
"userCpuConsumptionPercent": 4.0072,
206211
"kernelCpuConsumptionPercent": 1.6029,
207-
"maxRss": 45768704,
208212
"pageFaults": {
209213
"IORequired": 0,
210214
"IONotRequired": 4610
Collapse file

‎src/node_report.cc‎

Copy file name to clipboardExpand all lines: src/node_report.cc
+23-3Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include <cwctype>
2424
#include <fstream>
2525

26-
constexpr int NODE_REPORT_VERSION = 2;
26+
constexpr int NODE_REPORT_VERSION = 3;
2727
constexpr int NANOS_PER_SEC = 1000 * 1000 * 1000;
2828
constexpr double SEC_PER_MICROS = 1e-6;
2929
constexpr int MAX_FRAME_COUNT = 10;
@@ -628,10 +628,30 @@ static void PrintResourceUsage(JSONWriter* writer) {
628628
uv_rusage_t rusage;
629629
writer->json_objectstart("resourceUsage");
630630

631+
uint64_t free_memory = uv_get_free_memory();
632+
uint64_t total_memory = uv_get_total_memory();
633+
634+
writer->json_keyvalue("free_memory", std::to_string(free_memory));
635+
writer->json_keyvalue("total_memory", std::to_string(total_memory));
636+
631637
size_t rss;
632638
int err = uv_resident_set_memory(&rss);
633639
if (!err) {
634-
writer->json_keyvalue("rss", rss);
640+
writer->json_keyvalue("rss", std::to_string(rss));
641+
}
642+
643+
uint64_t constrained_memory = uv_get_constrained_memory();
644+
if (constrained_memory) {
645+
writer->json_keyvalue("constrained_memory",
646+
std::to_string(constrained_memory));
647+
}
648+
649+
// See GuessMemoryAvailableToTheProcess
650+
if (!err && constrained_memory && constrained_memory >= rss) {
651+
uint64_t available_memory = constrained_memory - rss;
652+
writer->json_keyvalue("available_memory", std::to_string(available_memory));
653+
} else {
654+
writer->json_keyvalue("available_memory", std::to_string(free_memory));
635655
}
636656

637657
if (uv_getrusage(&rusage) == 0) {
@@ -648,7 +668,7 @@ static void PrintResourceUsage(JSONWriter* writer) {
648668
writer->json_keyvalue("cpuConsumptionPercent", cpu_percentage);
649669
writer->json_keyvalue("userCpuConsumptionPercent", user_cpu_percentage);
650670
writer->json_keyvalue("kernelCpuConsumptionPercent", kernel_cpu_percentage);
651-
writer->json_keyvalue("maxRss", rusage.ru_maxrss * 1024);
671+
writer->json_keyvalue("maxRss", std::to_string(rusage.ru_maxrss * 1024));
652672
writer->json_objectstart("pageFaults");
653673
writer->json_keyvalue("IORequired", rusage.ru_majflt);
654674
writer->json_keyvalue("IONotRequired", rusage.ru_minflt);
Collapse file

‎test/common/report.js‎

Copy file name to clipboardExpand all lines: test/common/report.js
+16-6Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ function _validateContent(report, fields = []) {
105105
'glibcVersionRuntime', 'glibcVersionCompiler', 'cwd',
106106
'reportVersion', 'networkInterfaces', 'threadId'];
107107
checkForUnknownFields(header, headerFields);
108-
assert.strictEqual(header.reportVersion, 2); // Increment as needed.
108+
assert.strictEqual(header.reportVersion, 3); // Increment as needed.
109109
assert.strictEqual(typeof header.event, 'string');
110110
assert.strictEqual(typeof header.trigger, 'string');
111111
assert(typeof header.filename === 'string' || header.filename === null);
@@ -232,19 +232,29 @@ function _validateContent(report, fields = []) {
232232
}
233233

234234
// Verify the format of the resourceUsage section.
235-
const usage = report.resourceUsage;
235+
const usage = { ...report.resourceUsage };
236+
// Delete it, otherwise checkForUnknownFields will throw error
237+
delete usage.constrained_memory;
236238
const resourceUsageFields = ['userCpuSeconds', 'kernelCpuSeconds',
237239
'cpuConsumptionPercent', 'userCpuConsumptionPercent',
238-
'kernelCpuConsumptionPercent', 'rss', 'maxRss',
239-
'pageFaults', 'fsActivity'];
240+
'kernelCpuConsumptionPercent',
241+
'maxRss', 'rss', 'free_memory', 'total_memory',
242+
'available_memory', 'pageFaults', 'fsActivity'];
240243
checkForUnknownFields(usage, resourceUsageFields);
241244
assert.strictEqual(typeof usage.userCpuSeconds, 'number');
242245
assert.strictEqual(typeof usage.kernelCpuSeconds, 'number');
243246
assert.strictEqual(typeof usage.cpuConsumptionPercent, 'number');
244247
assert.strictEqual(typeof usage.userCpuConsumptionPercent, 'number');
245248
assert.strictEqual(typeof usage.kernelCpuConsumptionPercent, 'number');
246-
assert(Number.isSafeInteger(usage.rss));
247-
assert(Number.isSafeInteger(usage.maxRss));
249+
assert(typeof usage.rss, 'string');
250+
assert(typeof usage.maxRss, 'string');
251+
assert(typeof usage.free_memory, 'string');
252+
assert(typeof usage.total_memory, 'string');
253+
assert(typeof usage.available_memory, 'string');
254+
// This field may not exsit
255+
if (report.resourceUsage.constrained_memory) {
256+
assert(typeof report.resourceUsage.constrained_memory, 'string');
257+
}
248258
assert(typeof usage.pageFaults === 'object' && usage.pageFaults !== null);
249259
checkForUnknownFields(usage.pageFaults, ['IORequired', 'IONotRequired']);
250260
assert(Number.isSafeInteger(usage.pageFaults.IORequired));

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.