diff options
author | cjihrig <cjihrig@gmail.com> | 2019-03-02 16:53:32 -0500 |
---|---|---|
committer | cjihrig <cjihrig@gmail.com> | 2019-03-04 21:12:55 -0500 |
commit | 84ebaaa339ffc67cbada5b2ae59061c26efd39ce (patch) | |
tree | 43972aba3ac53d4c3cda4e258aa44918913e9b63 /src/node_report.cc | |
parent | e6305698831a91bccb8bd24a8f216d68c15f703b (diff) | |
download | android-node-v8-84ebaaa339ffc67cbada5b2ae59061c26efd39ce.tar.gz android-node-v8-84ebaaa339ffc67cbada5b2ae59061c26efd39ce.tar.bz2 android-node-v8-84ebaaa339ffc67cbada5b2ae59061c26efd39ce.zip |
report: support RUSAGE_SELF stats on Windows
This commit adds support for the resourceUsage report section
on Windows by using uv_getrusage() instead of getrusage().
PR-URL: https://github.com/nodejs/node/pull/26406
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'src/node_report.cc')
-rw-r--r-- | src/node_report.cc | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/node_report.cc b/src/node_report.cc index 85c66a51bf..bc54f90d3e 100644 --- a/src/node_report.cc +++ b/src/node_report.cc @@ -81,9 +81,7 @@ static void PrintJavaScriptStack(JSONWriter* writer, Local<String> stackstr, const char* trigger); static void PrintNativeStack(JSONWriter* writer); -#ifndef _WIN32 static void PrintResourceUsage(JSONWriter* writer); -#endif static void PrintGCStatistics(JSONWriter* writer, Isolate* isolate); static void PrintSystemInformation(JSONWriter* writer); static void PrintLoadedLibraries(JSONWriter* writer); @@ -289,9 +287,7 @@ static void WriteNodeReport(Isolate* isolate, PrintGCStatistics(&writer, isolate); // Report OS and current thread resource usage -#ifndef _WIN32 PrintResourceUsage(&writer); -#endif writer.json_arraystart("libuv"); if (env != nullptr) { @@ -466,8 +462,6 @@ static void PrintGCStatistics(JSONWriter* writer, Isolate* isolate) { writer->json_objectend(); } -#ifndef _WIN32 -// Report resource usage (Linux/OSX only). static void PrintResourceUsage(JSONWriter* writer) { // Get process uptime in seconds uint64_t uptime = @@ -475,30 +469,31 @@ static void PrintResourceUsage(JSONWriter* writer) { if (uptime == 0) uptime = 1; // avoid division by zero. // Process and current thread usage statistics - struct rusage stats; + uv_rusage_t rusage; writer->json_objectstart("resourceUsage"); - if (getrusage(RUSAGE_SELF, &stats) == 0) { + if (uv_getrusage(&rusage) == 0) { double user_cpu = - stats.ru_utime.tv_sec + SEC_PER_MICROS * stats.ru_utime.tv_usec; + rusage.ru_utime.tv_sec + SEC_PER_MICROS * rusage.ru_utime.tv_usec; double kernel_cpu = - stats.ru_stime.tv_sec + SEC_PER_MICROS * stats.ru_stime.tv_usec; + rusage.ru_stime.tv_sec + SEC_PER_MICROS * rusage.ru_stime.tv_usec; writer->json_keyvalue("userCpuSeconds", user_cpu); writer->json_keyvalue("kernelCpuSeconds", kernel_cpu); double cpu_abs = user_cpu + kernel_cpu; double cpu_percentage = (cpu_abs / uptime) * 100.0; writer->json_keyvalue("cpuConsumptionPercent", cpu_percentage); - writer->json_keyvalue("maxRss", stats.ru_maxrss * 1024); + writer->json_keyvalue("maxRss", rusage.ru_maxrss * 1024); writer->json_objectstart("pageFaults"); - writer->json_keyvalue("IORequired", stats.ru_majflt); - writer->json_keyvalue("IONotRequired", stats.ru_minflt); + writer->json_keyvalue("IORequired", rusage.ru_majflt); + writer->json_keyvalue("IONotRequired", rusage.ru_minflt); writer->json_objectend(); writer->json_objectstart("fsActivity"); - writer->json_keyvalue("reads", stats.ru_inblock); - writer->json_keyvalue("writes", stats.ru_oublock); + writer->json_keyvalue("reads", rusage.ru_inblock); + writer->json_keyvalue("writes", rusage.ru_oublock); writer->json_objectend(); } writer->json_objectend(); #ifdef RUSAGE_THREAD + struct rusage stats; if (getrusage(RUSAGE_THREAD, &stats) == 0) { writer->json_objectstart("uvthreadResourceUsage"); double user_cpu = @@ -518,7 +513,6 @@ static void PrintResourceUsage(JSONWriter* writer) { } #endif } -#endif // Report operating system information. static void PrintSystemInformation(JSONWriter* writer) { |