From a623efcc4933542173658ac755d47a0878b531eb Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Mon, 21 Jun 2021 08:57:32 -0400 Subject: [PATCH] Fix rollover issues and small optimization to memory getters on windows --- indra/llcommon/llsys.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index cec19f2f932..d9e64919a94 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -726,12 +726,12 @@ U32Kilobytes LLMemoryInfo::getPhysicalMemoryKB() const void LLMemoryInfo::getAvailableMemoryKB(U32Kilobytes& avail_physical_mem_kb, U32Kilobytes& avail_virtual_mem_kb) { #if LL_WINDOWS - // Sigh, this shouldn't be a static method, then we wouldn't have to - // reload this data separately from refresh() - LLSD statsMap(loadStatsMap()); + MEMORYSTATUSEX state; + state.dwLength = sizeof(state); + GlobalMemoryStatusEx(&state); - avail_physical_mem_kb = (U32Kilobytes)statsMap["Avail Physical KB"].asInteger(); - avail_virtual_mem_kb = (U32Kilobytes)statsMap["Avail Virtual KB"].asInteger(); + avail_physical_mem_kb = U64Bytes(state.ullAvailPhys); + avail_virtual_mem_kb = U64Bytes(state.ullAvailVirtual); #elif LL_DARWIN // mStatsMap is derived from vm_stat, look for (e.g.) "kb free": @@ -882,14 +882,14 @@ LLSD LLMemoryInfo::loadStatsMap() GlobalMemoryStatusEx(&state); DWORDLONG div = 1024; - - stats.add("Percent Memory use", state.dwMemoryLoad/div); - stats.add("Total Physical KB", state.ullTotalPhys/div); - stats.add("Avail Physical KB", state.ullAvailPhys/div); - stats.add("Total page KB", state.ullTotalPageFile/div); - stats.add("Avail page KB", state.ullAvailPageFile/div); - stats.add("Total Virtual KB", state.ullTotalVirtual/div); - stats.add("Avail Virtual KB", state.ullAvailVirtual/div); + DWORDLONG div_mb = 1024 * 1024; + stats.add("Percent Memory use", state.dwMemoryLoad); + stats.add("Total Physical MB", state.ullTotalPhys/div_mb); + stats.add("Avail Physical MB", state.ullAvailPhys/div_mb); + stats.add("Total page MB", state.ullTotalPageFile/div_mb); + stats.add("Avail page MB", state.ullAvailPageFile/div_mb); + stats.add("Total Virtual MB", state.ullTotalVirtual/div_mb); + stats.add("Avail Virtual MB", state.ullAvailVirtual/div_mb); // SL-12122 - Call to GetPerformanceInfo() was removed here. Took // on order of 10 ms, causing unacceptable frame time spike every -- GitLab