Added RAM usage to linux overlay.

This commit is contained in:
Tom Lally 2022-09-01 17:01:31 +01:00
parent 2d30edcbc6
commit feefdf5fc4
4 changed files with 27 additions and 12 deletions

View file

@ -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) void LatteOverlay_updateStats(double fps, sint32 drawcalls)
{ {
if (GetConfig().overlay.position == ScreenPosition::kDisabled) if (GetConfig().overlay.position == ScreenPosition::kDisabled)
@ -604,7 +594,9 @@ void LatteOverlay_updateStats(double fps, sint32 drawcalls)
g_state.draw_calls_per_frame = drawcalls; g_state.draw_calls_per_frame = drawcalls;
UpdateStats_CemuCpu(); UpdateStats_CemuCpu();
UpdateStats_CpuPerCore(); UpdateStats_CpuPerCore();
UpdateStats_RamUsage();
// update ram
g_state.ram_usage = (QueryRamUsage() / 1000) / 1000;
// update vram // update vram
g_renderer->GetVRAMInfo(g_state.vramUsage, g_state.vramTotal); g_renderer->GetVRAMInfo(g_state.vramUsage, g_state.vramTotal);

View file

@ -14,3 +14,5 @@ uint32_t GetProcessorCount();
void QueryProcTime(uint64_t &out_now, uint64_t &out_user, uint64_t &out_kernel); void QueryProcTime(uint64_t &out_now, uint64_t &out_user, uint64_t &out_kernel);
void QueryProcTime(ProcessorTime &out); void QueryProcTime(ProcessorTime &out);
void QueryCoreTimes(uint32_t count, ProcessorTime out[]); void QueryCoreTimes(uint32_t count, ProcessorTime out[]);
uint64_t QueryRamUsage();

View file

@ -2,6 +2,7 @@
#include "util/ProcessorTime/ProcessorTime.h" #include "util/ProcessorTime/ProcessorTime.h"
#include <unistd.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/times.h> #include <sys/times.h>
#include <sys/resource.h> #include <sys/resource.h>
@ -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<std::streamsize>::max(), ' ');
uint64_t no_pages;
file >> no_pages;
return no_pages * page_size;
}
#endif #endif

View file

@ -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 #endif