| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -23,7 +23,7 @@ is provided below for reference. | |||
| 23 | 23 | ```json | |
| 24 | 24 | { | |
| 25 | 25 | "header": { | |
| 26 | - "reportVersion": 1, | ||
| 26 | + "reportVersion": 3, | ||
| 27 | 27 | "event": "exception", | |
| 28 | 28 | "trigger": "Exception", | |
| 29 | 29 | "filename": "report.20181221.005011.8974.0.001.json", | |
@@ -198,13 +198,17 @@ is provided below for reference. | |||
| 198 | 198 | } | |
| 199 | 199 | }, | |
| 200 | 200 | "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", | ||
| 202 | 207 | "userCpuSeconds": 0.040072, | |
| 203 | 208 | "kernelCpuSeconds": 0.016029, | |
| 204 | 209 | "cpuConsumptionPercent": 5.6101, | |
| 205 | 210 | "userCpuConsumptionPercent": 4.0072, | |
| 206 | 211 | "kernelCpuConsumptionPercent": 1.6029, | |
| 207 | - "maxRss": 45768704, | ||
| 208 | 212 | "pageFaults": { | |
| 209 | 213 | "IORequired": 0, | |
| 210 | 214 | "IONotRequired": 4610 | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -23,7 +23,7 @@ | |||
| 23 | 23 | #include <cwctype> | |
| 24 | 24 | #include <fstream> | |
| 25 | 25 | ||
| 26 | - constexpr int NODE_REPORT_VERSION = 2; | ||
| 26 | + constexpr int NODE_REPORT_VERSION = 3; | ||
| 27 | 27 | constexpr int NANOS_PER_SEC = 1000 * 1000 * 1000; | |
| 28 | 28 | constexpr double SEC_PER_MICROS = 1e-6; | |
| 29 | 29 | constexpr int MAX_FRAME_COUNT = 10; | |
@@ -628,10 +628,30 @@ static void PrintResourceUsage(JSONWriter* writer) { | |||
| 628 | 628 | uv_rusage_t rusage; | |
| 629 | 629 | writer->json_objectstart("resourceUsage"); | |
| 630 | 630 | ||
| 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 | + | ||
| 631 | 637 | size_t rss; | |
| 632 | 638 | int err = uv_resident_set_memory(&rss); | |
| 633 | 639 | 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)); | ||
| 635 | 655 | } | |
| 636 | 656 | ||
| 637 | 657 | if (uv_getrusage(&rusage) == 0) { | |
@@ -648,7 +668,7 @@ static void PrintResourceUsage(JSONWriter* writer) { | |||
| 648 | 668 | writer->json_keyvalue("cpuConsumptionPercent", cpu_percentage); | |
| 649 | 669 | writer->json_keyvalue("userCpuConsumptionPercent", user_cpu_percentage); | |
| 650 | 670 | 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)); | ||
| 652 | 672 | writer->json_objectstart("pageFaults"); | |
| 653 | 673 | writer->json_keyvalue("IORequired", rusage.ru_majflt); | |
| 654 | 674 | writer->json_keyvalue("IONotRequired", rusage.ru_minflt); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -105,7 +105,7 @@ function _validateContent(report, fields = []) { | |||
| 105 | 105 | 'glibcVersionRuntime', 'glibcVersionCompiler', 'cwd', | |
| 106 | 106 | 'reportVersion', 'networkInterfaces', 'threadId']; | |
| 107 | 107 | checkForUnknownFields(header, headerFields); | |
| 108 | - assert.strictEqual(header.reportVersion, 2); // Increment as needed. | ||
| 108 | + assert.strictEqual(header.reportVersion, 3); // Increment as needed. | ||
| 109 | 109 | assert.strictEqual(typeof header.event, 'string'); | |
| 110 | 110 | assert.strictEqual(typeof header.trigger, 'string'); | |
| 111 | 111 | assert(typeof header.filename === 'string' || header.filename === null); | |
@@ -232,19 +232,29 @@ function _validateContent(report, fields = []) { | |||
| 232 | 232 | } | |
| 233 | 233 | ||
| 234 | 234 | // 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; | ||
| 236 | 238 | const resourceUsageFields = ['userCpuSeconds', 'kernelCpuSeconds', | |
| 237 | 239 | 'cpuConsumptionPercent', 'userCpuConsumptionPercent', | |
| 238 | - 'kernelCpuConsumptionPercent', 'rss', 'maxRss', | ||
| 239 | - 'pageFaults', 'fsActivity']; | ||
| 240 | + 'kernelCpuConsumptionPercent', | ||
| 241 | + 'maxRss', 'rss', 'free_memory', 'total_memory', | ||
| 242 | + 'available_memory', 'pageFaults', 'fsActivity']; | ||
| 240 | 243 | checkForUnknownFields(usage, resourceUsageFields); | |
| 241 | 244 | assert.strictEqual(typeof usage.userCpuSeconds, 'number'); | |
| 242 | 245 | assert.strictEqual(typeof usage.kernelCpuSeconds, 'number'); | |
| 243 | 246 | assert.strictEqual(typeof usage.cpuConsumptionPercent, 'number'); | |
| 244 | 247 | assert.strictEqual(typeof usage.userCpuConsumptionPercent, 'number'); | |
| 245 | 248 | 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 | + } | ||
| 248 | 258 | assert(typeof usage.pageFaults === 'object' && usage.pageFaults !== null); | |
| 249 | 259 | checkForUnknownFields(usage.pageFaults, ['IORequired', 'IONotRequired']); | |
| 250 | 260 | assert(Number.isSafeInteger(usage.pageFaults.IORequired)); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments