AI 中文社区(简称 AI 中文社),是国内学习交流AI人工智能技术的中文社区网站,这里可获取及贡献任何AI人工智能技术,我们追求自由、简洁、纯粹、分享的多元化人工智能社区。

Go 调用 Linux /proc/[pid]/status 查看程序内存使用情况

ChatGPT · 杰作 4天前发布 · 浏览37次 · 点赞1次 · 收藏0次

最近想准确的了解 AI 中文社区 的物理虚拟内存的使用情况,Go 调用 runtime.MemStats 的时候,发现数据出入有点大,干脆使用 Go 调用部署系统 Debian PID 进程状态,来查看应用程序详细的内存数据,以下是调用的代码:

func LinuxPidStatus() (map[string]string, error) {
	statusFile := "/proc/" + strconv.Itoa(os.Getpid()) + "/status"
	content, err := os.ReadFile(statusFile)
	if err != nil {
		return nil, err
	}

	status := make(map[string]string)
	for _, line := range strings.Split(string(content), "\n") {
		if idx := strings.Index(line, ":"); idx > 0 {
			status[line[:idx]] = strings.TrimSpace(line[idx+1:])
		}
	}

	return status, nil
}

返回的部分关键数据:

{
	"Pid": "19390",
	"RssAnon": "13024 kB",
	"RssFile": "21368 kB",//文件RSS内存大小。
	"VmData": "54272 kB",//程序数据段的所占虚拟内存大小,存放了初始化了的数据。
	"VmExe": "13440 kB",
	"VmHWM": "34392 kB",//HWM是High Water Mark的意思,表示rss的峰值。
	"VmLib": "8 kB",//进程共享库内存使用量。
	"VmPMD": "20 kB",
	"VmPTE": "136 kB",
	"VmPeak": "1258504 kB",//虚拟内存使用量的峰值
	"VmRSS": "34392 kB",//应用程序当前实际占用的物理内存大小。
	"VmSize": "1258504 kB",//应用程序当前虚拟内存的实际使用量。
	"VmStk": "132 kB"
}
Go 调用 Linux /proc/[pid]/status 查看程序内存使用情况 - ChatGPT - 话题 - AI 中文社区
点赞(1) 收藏(0)
0条评论
现在评论,你将成小区里最靓的仔^_^
评论

游客
登录后再评论
  • 一字一句需斟酌,一言一语显风范。
  • 评论消耗5积分,点赞、收藏消耗3积分。