Fixed memory usage detection for linux

This commit is contained in:
2025-05-23 10:36:37 +02:00
parent 0152502c1b
commit dbc29046f5

View File

@@ -1,6 +1,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using MoonCore.Attributes; using MoonCore.Attributes;
using MoonCore.Helpers;
namespace Moonlight.ApiServer.Services; namespace Moonlight.ApiServer.Services;
@@ -55,11 +56,33 @@ public class ApplicationService
return Task.FromResult("N/A"); return Task.FromResult("N/A");
} }
public Task<long> GetMemoryUsage() public async Task<long> GetMemoryUsage()
{ {
var process = Process.GetCurrentProcess(); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
var bytes = process.PrivateMemorySize64; {
return Task.FromResult(bytes); 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<TimeSpan> GetUptime() public Task<TimeSpan> GetUptime()