From dbc29046f5bc0d6c929b355e740604e1dacbac22 Mon Sep 17 00:00:00 2001 From: ChiaraBm Date: Fri, 23 May 2025 10:36:37 +0200 Subject: [PATCH] Fixed memory usage detection for linux --- .../Services/ApplicationService.cs | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/Moonlight.ApiServer/Services/ApplicationService.cs b/Moonlight.ApiServer/Services/ApplicationService.cs index 67616f18..35f117a9 100644 --- a/Moonlight.ApiServer/Services/ApplicationService.cs +++ b/Moonlight.ApiServer/Services/ApplicationService.cs @@ -1,6 +1,7 @@ using System.Diagnostics; using System.Runtime.InteropServices; using MoonCore.Attributes; +using MoonCore.Helpers; namespace Moonlight.ApiServer.Services; @@ -55,11 +56,33 @@ public class ApplicationService return Task.FromResult("N/A"); } - public Task GetMemoryUsage() + public async Task GetMemoryUsage() { - var process = Process.GetCurrentProcess(); - var bytes = process.PrivateMemorySize64; - return Task.FromResult(bytes); + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var process = Process.GetCurrentProcess(); + return process.PrivateMemorySize64; + } + else + { + var lines = await File.ReadAllLinesAsync("/proc/self/smaps"); + var kilobytes = 0; + + foreach (var line in lines) + { + if(!line.StartsWith("pss:", StringComparison.InvariantCultureIgnoreCase)) + continue; + + var valueString = line + .Replace("pss:", "", StringComparison.InvariantCultureIgnoreCase) + .Replace("kb", "", StringComparison.InvariantCultureIgnoreCase) + .Trim(); + + kilobytes += int.Parse(valueString); + } + + return ByteConverter.FromKiloBytes(kilobytes).Bytes; + } } public Task GetUptime()