From 1f3a3262bfc7a04232d47c76d4ce308613658d98 Mon Sep 17 00:00:00 2001 From: Daniel Widdis Date: Thu, 20 Oct 2022 16:07:17 -0700 Subject: [PATCH] Formatting, credits, change log Signed-off-by: Daniel Widdis --- CREDITS | 4 ++++ HISTORY.rst | 10 ++++++++++ psutil/_psutil_windows.c | 11 ++++++----- psutil/_pswindows.py | 3 ++- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/CREDITS b/CREDITS index 6f1b6e5b86..29298ca3e0 100644 --- a/CREDITS +++ b/CREDITS @@ -801,3 +801,7 @@ I: 2135 N: Daniel Li I: 2150 + +N: Daniel Widdis +W: https://github.com/dbwiddis +I: 2077 diff --git a/HISTORY.rst b/HISTORY.rst index e983399019..f0d0905d4a 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,5 +1,15 @@ *Bug tracker at https://github.com/giampaolo/psutil/issues* +5.9.4 (IN DEVELOPMENT) +====================== + +XXXX-XX-XX + +**Bug fixes** + +- 2077_, [Windows]: Use system-level values for `virtual_memory()`. (patch by + Daniel Widdis) + 5.9.3 ===== diff --git a/psutil/_psutil_windows.c b/psutil/_psutil_windows.c index 97e2d130e3..5cc8290755 100644 --- a/psutil/_psutil_windows.c +++ b/psutil/_psutil_windows.c @@ -612,21 +612,22 @@ static PyObject * psutil_virtual_mem(PyObject *self, PyObject *args) { unsigned long long totalPhys, availPhys, totalSys, availSys, pageSize; PERFORMANCE_INFORMATION perfInfo; + if (! GetPerformanceInfo(&perfInfo, sizeof(PERFORMANCE_INFORMATION))) { PyErr_SetFromWindowsErr(0); return NULL; } - // values are size_t, widen to long long + // values are size_t, widen (if needed) to long long pageSize = perfInfo.PageSize; totalPhys = perfInfo.PhysicalTotal * pageSize; availPhys = perfInfo.PhysicalAvailable * pageSize; totalSys = perfInfo.CommitLimit * pageSize; availSys = totalSys - perfInfo.CommitTotal * pageSize; return Py_BuildValue("(LLLL)", - totalPhys, - availPhys, - totalSys, - availSys); + totalPhys, + availPhys, + totalSys, + availSys); } diff --git a/psutil/_pswindows.py b/psutil/_pswindows.py index 352e1b8567..b546f15d83 100644 --- a/psutil/_pswindows.py +++ b/psutil/_pswindows.py @@ -248,7 +248,8 @@ def swap_memory(): total_system = mem[2] free_system = mem[3] - # physical memory values need to be substracted to get swap values + # system memory (commit total/limit) is the sum of physical and swap + # thus physical memory values need to be substracted to get swap values total = total_system - total_phys free = min(total, free_system - free_phys) used = total - free