summaryrefslogtreecommitdiff
path: root/src/node_report.cc
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-03-02 16:53:32 -0500
committercjihrig <cjihrig@gmail.com>2019-03-04 21:12:55 -0500
commit84ebaaa339ffc67cbada5b2ae59061c26efd39ce (patch)
tree43972aba3ac53d4c3cda4e258aa44918913e9b63 /src/node_report.cc
parente6305698831a91bccb8bd24a8f216d68c15f703b (diff)
downloadandroid-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.cc26
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) {