【Golang】探索进程资源监控的精妙细节:利用Gopsutil/Process实现高级进程性能和资源信息监控
大家好 我是寸铁👊
总结了一篇【Golang】探索进程资源监控的精妙细节:利用Gopsutil/Process实现高级进程性能和资源信息监控的文章✨
喜欢的小伙伴可以点点关注 💝
前言🎏
在当今信息技术的浪潮中,对系统性能和资源利用的监控变得至关重要。特别是对于运行在服务器或云环境中的应用程序,了解和优化进程的资源消耗是提高系统效率和可靠性的关键。而使用 Go 语言的
Gopsutil
库,特别是其中的Process
模块,为我们提供了强大的工具,能够深入监控和管理进程的各种资源。本文将探索如何利用Gopsutil/Process
实现进程资源监控,并介绍一些常用的技术和方法。
Memory📟
MemoryInfo
newProcess, _ := process.NewProcess(18024) //参数:想监控的进程号pid
info, _ := newProcess.MemoryInfo()
fmt.Println("返回平台独立内存信息", info)
返回如下信息:
rSS:实际使用物理内存
vmS:虚拟使用内存
hwm: 表示进程所占用物理内存的峰值
data: 表示进程数据段的大小
stack: 表示进程堆栈段的大小
locked: 表示被锁定的内存大小
swap:交换分区
MemoryInfoEx
ex, _ := newProcess.MemoryInfoEx()
fmt.Println("MemoryInfoEx()返回与平台相关的内存信息: ", ex)
MemoryMaps
maps, _ := newProcess.MemoryMaps(true)
fmt.Println("MemoryMaps 从 /proc/(pid)/smaps 获取内存映射: ", maps)
MemoryPercent
memorypercent, _ := newProcess.MemoryPercent