diff --git a/src/Cafe/HW/Latte/Core/LatteOverlay.cpp b/src/Cafe/HW/Latte/Core/LatteOverlay.cpp index 7bd4c2db..62d831c5 100644 --- a/src/Cafe/HW/Latte/Core/LatteOverlay.cpp +++ b/src/Cafe/HW/Latte/Core/LatteOverlay.cpp @@ -585,16 +585,6 @@ static void UpdateStats_CpuPerCore() } } -static void UpdateStats_RamUsage() -{ -#if BOOST_OS_WINDOWS - PROCESS_MEMORY_COUNTERS pmc{}; - pmc.cb = sizeof(pmc); - GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)); - g_state.ram_usage = (pmc.WorkingSetSize / 1000) / 1000; -#endif -} - void LatteOverlay_updateStats(double fps, sint32 drawcalls) { if (GetConfig().overlay.position == ScreenPosition::kDisabled) @@ -604,7 +594,9 @@ void LatteOverlay_updateStats(double fps, sint32 drawcalls) g_state.draw_calls_per_frame = drawcalls; UpdateStats_CemuCpu(); UpdateStats_CpuPerCore(); - UpdateStats_RamUsage(); + + // update ram + g_state.ram_usage = (QueryRamUsage() / 1000) / 1000; // update vram g_renderer->GetVRAMInfo(g_state.vramUsage, g_state.vramTotal); diff --git a/src/util/ProcessorTime/ProcessorTime.h b/src/util/ProcessorTime/ProcessorTime.h index 35f75b7b..9ad774d7 100644 --- a/src/util/ProcessorTime/ProcessorTime.h +++ b/src/util/ProcessorTime/ProcessorTime.h @@ -13,4 +13,6 @@ struct ProcessorTime uint32_t GetProcessorCount(); void QueryProcTime(uint64_t &out_now, uint64_t &out_user, uint64_t &out_kernel); void QueryProcTime(ProcessorTime &out); -void QueryCoreTimes(uint32_t count, ProcessorTime out[]); \ No newline at end of file +void QueryCoreTimes(uint32_t count, ProcessorTime out[]); + +uint64_t QueryRamUsage(); \ No newline at end of file diff --git a/src/util/ProcessorTime/ProcessorTimeUnix.cpp b/src/util/ProcessorTime/ProcessorTimeUnix.cpp index f733532d..1eaafcc8 100644 --- a/src/util/ProcessorTime/ProcessorTimeUnix.cpp +++ b/src/util/ProcessorTime/ProcessorTimeUnix.cpp @@ -2,6 +2,7 @@ #include "util/ProcessorTime/ProcessorTime.h" +#include #include #include #include @@ -41,4 +42,16 @@ void QueryCoreTimes(uint32_t count, ProcessorTime out[]) } } +uint64_t QueryRamUsage() +{ + long page_size = sysconf(_SC_PAGESIZE); + + std::ifstream file("/proc/self/statm"); + file.ignore(std::numeric_limits::max(), ' '); + uint64_t no_pages; + file >> no_pages; + + return no_pages * page_size; +} + #endif \ No newline at end of file diff --git a/src/util/ProcessorTime/ProcessorTimeWin.cpp b/src/util/ProcessorTime/ProcessorTimeWin.cpp index 383d00d0..0b9462e7 100644 --- a/src/util/ProcessorTime/ProcessorTimeWin.cpp +++ b/src/util/ProcessorTime/ProcessorTimeWin.cpp @@ -47,4 +47,12 @@ void QueryCoreTimes(uint32_t count, ProcessorTime out[]) } } +uint64_t QueryRamUsage() +{ + PROCESS_MEMORY_COUNTERS pmc{}; + pmc.cb = sizeof(pmc); + GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)); + return pmc.WorkingSetSize; +} + #endif \ No newline at end of file