当我运行
top -p pid
时,virt显示我的程序使用4T虚拟内存。但到了cat /proc/pid/status
,vmsize已经超过20T了。我认为顶部的 virt 应该等于 vmsize。那么top中的virt和procfs中的vmsize有什么区别呢? (顺便说一句,当我运行statsize=1 top -p pid
时,virt显示我的程序使用80T+虚拟内存)
这不是我在 Ubuntu 22.04.3 上观察到的情况 -
$ 顶部 -p 535 顶部 - 15:43:31 向上 1:21,1 个用户,平均负载:0.00、0.01、0.00 任务:总共 1 个,0 个运行,1 个睡眠,0 个停止,0 个僵尸 %Cpu(s):0.1 us、0.0 sy、0.0 ni、99.9 id、0.0 wa、0.0 hi、0.0 si、0.0 st MiB Mem:总计 7756.4,空闲 6993.7,已用 534.4,228.2 buff/缓存 MiB 交换:总计 2048.0,免费 2048.0,已使用 0.0。 6984.2可用内存
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
535 root 20 0 44184 37768 10292 S 1.0 0.5 0:29.83 python3
$ 猫 /proc/535/status 名称:python3 掩码:0022 状态:S(睡眠) 总ID:535 恩吉德:0 编号:535 PPID:341 [剪断...] 虚拟机峰值:44184 kB 虚拟机大小:44184 kB