win: add maxrss, pagefaults to uv_getrusage()
This commit populates the ru_majflt and ru_maxrss fields of uv_getrusage() on Windows. PR-URL: https://github.com/libuv/libuv/pull/805 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
faea76d81d
commit
6f17a617da
@ -1118,6 +1118,7 @@ void uv_free_interface_addresses(uv_interface_address_t* addresses,
|
||||
int uv_getrusage(uv_rusage_t *uv_rusage) {
|
||||
FILETIME createTime, exitTime, kernelTime, userTime;
|
||||
SYSTEMTIME kernelSystemTime, userSystemTime;
|
||||
PROCESS_MEMORY_COUNTERS memCounters;
|
||||
int ret;
|
||||
|
||||
ret = GetProcessTimes(GetCurrentProcess(), &createTime, &exitTime, &kernelTime, &userTime);
|
||||
@ -1135,6 +1136,13 @@ int uv_getrusage(uv_rusage_t *uv_rusage) {
|
||||
return uv_translate_sys_error(GetLastError());
|
||||
}
|
||||
|
||||
ret = GetProcessMemoryInfo(GetCurrentProcess(),
|
||||
&memCounters,
|
||||
sizeof(memCounters));
|
||||
if (ret == 0) {
|
||||
return uv_translate_sys_error(GetLastError());
|
||||
}
|
||||
|
||||
memset(uv_rusage, 0, sizeof(*uv_rusage));
|
||||
|
||||
uv_rusage->ru_utime.tv_sec = userSystemTime.wHour * 3600 +
|
||||
@ -1147,6 +1155,9 @@ int uv_getrusage(uv_rusage_t *uv_rusage) {
|
||||
kernelSystemTime.wSecond;
|
||||
uv_rusage->ru_stime.tv_usec = kernelSystemTime.wMilliseconds * 1000;
|
||||
|
||||
uv_rusage->ru_majflt = (uint64_t) memCounters.PageFaultCount;
|
||||
uv_rusage->ru_maxrss = (uint64_t) memCounters.PeakWorkingSetSize / 1024;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -61,6 +61,8 @@ TEST_IMPL(platform_output) {
|
||||
ASSERT(rusage.ru_utime.tv_usec >= 0);
|
||||
ASSERT(rusage.ru_stime.tv_sec >= 0);
|
||||
ASSERT(rusage.ru_stime.tv_usec >= 0);
|
||||
ASSERT(rusage.ru_majflt >= 0);
|
||||
ASSERT(rusage.ru_maxrss >= 0);
|
||||
printf("uv_getrusage:\n");
|
||||
printf(" user: %llu sec %llu microsec\n",
|
||||
(unsigned long long) rusage.ru_utime.tv_sec,
|
||||
@ -68,6 +70,8 @@ TEST_IMPL(platform_output) {
|
||||
printf(" system: %llu sec %llu microsec\n",
|
||||
(unsigned long long) rusage.ru_stime.tv_sec,
|
||||
(unsigned long long) rusage.ru_stime.tv_usec);
|
||||
printf(" page faults: %llu\n", rusage.ru_majflt);
|
||||
printf(" maximum resident set size: %llu\n", rusage.ru_maxrss);
|
||||
|
||||
err = uv_cpu_info(&cpus, &count);
|
||||
ASSERT(err == 0);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user