Linux下proc/<pid>/stat的vsize与ps aux的VSZ差异及换算
两者的核心差异是单位不同,字段读取错误也会导致你示例中出现数量级差距,具体规则如下:
单位说明
/proc/<pid>/stat第23字段vsize:单位为字节,是内核记录的进程完整虚拟地址空间总大小,包含所有已映射的代码、数据、共享库、预留内存、交换映射等全部虚拟内存区域的总和。ps aux输出的VSZ字段:默认单位为1024字节(KiB),是ps工具读取/proc/<pid>/stat的vsize值后做单位换算得到的结果。
转换规则
直接按单位换算即可:
ps输出的VSZ = /proc/<pid>/stat第23字段vsize值 ÷ 1024
你示例中两个数值差距过大,是典型的字段读取错误导致的:/proc/<pid>/stat的第2字段是进程名,会被小括号包裹,如果你直接按空格分割字符串统计字段序号,一旦进程名包含空格、小括号等特殊字符,就会导致字段计数偏移,你读到的654425776128实际上不是第23字段的vsize值。
内容的提问来源于stack exchange,提问作者swaran
相关产品推荐
相关产品推荐

