psm:Linux 内存报告的简单与精准之选
psm core memory & swap reporting 项目地址: https://gitcode.com/gh_mirrors/ps/psm
项目介绍
psm
是一个专为 Linux 系统设计的内存报告工具,旨在为用户提供简单、准确的内存使用情况报告。通过 psm
,用户可以轻松查看哪些进程占用了大量内存,哪些进程被大量交换到磁盘,从而更好地管理和优化系统资源。
psm
的灵感来源于 ps_mem.py,但它在实现上采用了 Go 语言,使得其性能和可移植性得到了显著提升。此外,psm
支持将可执行文件设置为 setuid root,从而允许非特权用户也能快速获取内存使用情况的概览。
项目技术分析
psm
的核心功能是通过读取 /proc/$PID/smaps
文件中的 Pss 值来计算每个进程的内存使用情况。Pss(Proportional Set Size)是一种更准确的内存使用量度,它考虑了共享内存的实际占用情况,避免了传统 RSS(Resident Set Size)的重复计算问题。
psm
的实现采用了 Go 语言,这不仅使得代码编写更加简洁高效,还确保了生成的二进制文件具有良好的跨平台兼容性。此外,Go 语言的并发特性也为 psm
提供了处理多进程内存报告的能力。
项目及技术应用场景
psm
适用于以下场景:
- 系统性能监控:系统管理员可以使用
psm
定期检查内存使用情况,及时发现并处理内存泄漏或过度占用的问题。 - 资源优化:开发者在调试应用程序时,可以通过
psm
查看各个进程的内存占用情况,优化代码以减少内存消耗。 - 自动化运维:
psm
可以集成到自动化运维脚本中,自动生成内存使用报告,帮助运维团队快速定位问题。
项目特点
- 简单易用:
psm
的命令行界面简洁直观,用户只需一行命令即可获取详细的内存使用报告。 - 精准报告:基于 Pss 值的计算方式,
psm
提供了比传统 RSS 更准确的内存使用报告。 - 跨平台支持:虽然目前主要支持 Linux,但
psm
的代码结构使其易于移植到其他平台,如 BSD 和 OS X。 - 安全便捷:通过设置 setuid root,非特权用户也能使用
psm
,无需频繁输入 sudo 密码。
安装与使用
如果你已经安装了 Go 工具链,安装 psm
非常简单:
go get github.com/bpowers/psm
sudo `which psm`
对于 Ubuntu 用户,还可以通过 PPA 安装 psm
,并自动设置 setuid root:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:bobbypowers/psm
sudo apt-get update
sudo apt-get install psm
示例输出
以下是 psm
的示例输出,展示了各个进程的内存使用情况:
bpowers@python-worker-01:~$ psm -filter=celery
MB RAM SHARED SWAPPED PROCESS (COUNT)
60.6 1.1 134.2 [celeryd@notifications:MainProcess] (1)
62.6 1.1 [celeryd@health:MainProcess] (1)
113.7 1.2 [celeryd@uploads:MainProcess] (1)
155.1 1.1 [celeryd@triggers:MainProcess] (1)
176.7 1.2 [celeryd@updates:MainProcess] (1)
502.9 1.2 [celeryd@lookbacks:MainProcess] (1)
623.8 1.2 28.5 [celeryd@stats:MainProcess] (1)
671.3 1.2 [celeryd@default:MainProcess] (1)
# 2366.7 164.7 TOTAL USED BY PROCESSES
未来展望
psm
的开发团队计划将其移植到 BSD 和 OS X 平台,并进一步优化内存报告的准确性。如果你对这些功能感兴趣,欢迎参与到项目的开发中来。
许可证
psm
采用 MIT 许可证,允许用户自由使用、修改和分发。详细信息请参阅 LICENSE 文件。
psm
是一个功能强大且易于使用的内存报告工具,无论你是系统管理员、开发者还是运维工程师,它都能帮助你更好地管理和优化系统资源。赶快试试吧!
psm core memory & swap reporting 项目地址: https://gitcode.com/gh_mirrors/ps/psm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考