主机内存总量改从 /proc/meminfo 读

os.totalmem() 底层是 sysinfo() 系统调用,LXC 里 lxcfs 只虚拟化 /proc
文件、拦不住系统调用,导致容器里显示的是宿主机的物理内存总量。
从 /proc/meminfo 读 MemTotal 才是容器限额,且与 MemAvailable 同源。
This commit is contained in:
2026-08-12 16:38:19 +08:00
parent 5c924db235
commit b28fc572f7
3 changed files with 33 additions and 4 deletions
+2 -1
View File
@@ -12,6 +12,7 @@ import {
cpuUsageBetween,
parseGateway,
parseMemAvailable,
parseMemTotal,
parseNameservers,
} from '../shared/host-info.ts'
import type { CpuTimes, ExitProbe, HostInfo } from '../shared/host-info.ts'
@@ -56,7 +57,7 @@ export async function hostInfo(): Promise<HostInfo> {
return {
cpuUsage,
cpuCount: os.cpus().length,
memTotal: os.totalmem(),
memTotal: parseMemTotal(meminfo) ?? os.totalmem(),
memAvailable: parseMemAvailable(meminfo) ?? os.freemem(),
// loadavg 在 Windows 上恒为 0,那不是「负载为零」而是「没有这个概念」
load1: process.platform === 'win32' ? null : load,