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) {
|
int uv_getrusage(uv_rusage_t *uv_rusage) {
|
||||||
FILETIME createTime, exitTime, kernelTime, userTime;
|
FILETIME createTime, exitTime, kernelTime, userTime;
|
||||||
SYSTEMTIME kernelSystemTime, userSystemTime;
|
SYSTEMTIME kernelSystemTime, userSystemTime;
|
||||||
|
PROCESS_MEMORY_COUNTERS memCounters;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = GetProcessTimes(GetCurrentProcess(), &createTime, &exitTime, &kernelTime, &userTime);
|
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());
|
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));
|
memset(uv_rusage, 0, sizeof(*uv_rusage));
|
||||||
|
|
||||||
uv_rusage->ru_utime.tv_sec = userSystemTime.wHour * 3600 +
|
uv_rusage->ru_utime.tv_sec = userSystemTime.wHour * 3600 +
|
||||||
@ -1147,6 +1155,9 @@ int uv_getrusage(uv_rusage_t *uv_rusage) {
|
|||||||
kernelSystemTime.wSecond;
|
kernelSystemTime.wSecond;
|
||||||
uv_rusage->ru_stime.tv_usec = kernelSystemTime.wMilliseconds * 1000;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -61,6 +61,8 @@ TEST_IMPL(platform_output) {
|
|||||||
ASSERT(rusage.ru_utime.tv_usec >= 0);
|
ASSERT(rusage.ru_utime.tv_usec >= 0);
|
||||||
ASSERT(rusage.ru_stime.tv_sec >= 0);
|
ASSERT(rusage.ru_stime.tv_sec >= 0);
|
||||||
ASSERT(rusage.ru_stime.tv_usec >= 0);
|
ASSERT(rusage.ru_stime.tv_usec >= 0);
|
||||||
|
ASSERT(rusage.ru_majflt >= 0);
|
||||||
|
ASSERT(rusage.ru_maxrss >= 0);
|
||||||
printf("uv_getrusage:\n");
|
printf("uv_getrusage:\n");
|
||||||
printf(" user: %llu sec %llu microsec\n",
|
printf(" user: %llu sec %llu microsec\n",
|
||||||
(unsigned long long) rusage.ru_utime.tv_sec,
|
(unsigned long long) rusage.ru_utime.tv_sec,
|
||||||
@ -68,6 +70,8 @@ TEST_IMPL(platform_output) {
|
|||||||
printf(" system: %llu sec %llu microsec\n",
|
printf(" system: %llu sec %llu microsec\n",
|
||||||
(unsigned long long) rusage.ru_stime.tv_sec,
|
(unsigned long long) rusage.ru_stime.tv_sec,
|
||||||
(unsigned long long) rusage.ru_stime.tv_usec);
|
(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);
|
err = uv_cpu_info(&cpus, &count);
|
||||||
ASSERT(err == 0);
|
ASSERT(err == 0);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user