From 3e09d1fa3808a97a5907e92b2e2b06b7960f6587 Mon Sep 17 00:00:00 2001 From: token <239573049@qq.com> Date: Wed, 20 Nov 2024 13:46:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20GetMemoryUsage=20=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除旧实现,新增实现中移除 MemFree 处理,仅保留 MemTotal 和 MemAvailable。将单位从 KB 转换为字节,计算已用内存和内存使用率,返回内存使用率、总内存和已用内存。 --- .../Infrastructure/ISystemUsage.cs | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/src/FastGateway.Service/Infrastructure/ISystemUsage.cs b/src/FastGateway.Service/Infrastructure/ISystemUsage.cs index 43a5ca3..4cd5b3f 100644 --- a/src/FastGateway.Service/Infrastructure/ISystemUsage.cs +++ b/src/FastGateway.Service/Infrastructure/ISystemUsage.cs @@ -130,40 +130,41 @@ public class LinuxSystemUsage : ISystemUsage } public (float memoryUsage, ulong totalMemory, ulong useMemory) GetMemoryUsage() - { - var memInfo = ExecuteCommand("cat /proc/meminfo", "/bin/bash"); - var lines = memInfo.Split('\n'); - ulong totalMemory = 0; - ulong freeMemory = 0; - ulong availableMemory = 0; + { + var memInfo = ExecuteCommand("cat /proc/meminfo", "/bin/bash"); + var lines = memInfo.Split('\n'); + ulong totalMemory = 0; + ulong availableMemory = 0; - foreach (var line in lines) - { - var parts = line.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries); - if (parts.Length < 2) continue; + foreach (var line in lines) + { + var parts = line.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries); + if (parts.Length < 2) continue; - var key = parts[0].Trim(); - var value = ulong.Parse(parts[1].Trim().Split(' ')[0]); + var key = parts[0].Trim(); + var value = ulong.Parse(parts[1].Trim().Split(' ')[0]); - switch (key) - { - case "MemTotal": - totalMemory = value; - break; - case "MemFree": - freeMemory = value; - break; - case "MemAvailable": - availableMemory = value; - break; - } - } + switch (key) + { + case "MemTotal": + totalMemory = value; + break; + case "MemAvailable": + availableMemory = value; + break; + } + } - ulong usedMemory = totalMemory - availableMemory; - float memoryUsage = (float)usedMemory / totalMemory * 100; + // 默认单位是KB,需要转换byte + totalMemory *= 1024; + availableMemory *= 1024; - return (memoryUsage, totalMemory, usedMemory); - } + ulong usedMemory = totalMemory - availableMemory; + float memoryUsage = (float)usedMemory / totalMemory * 100; + + + return (memoryUsage, totalMemory, usedMemory); + } public (float read, float write) GetDiskUsage() {