获取一个进程的内存占用峰值
在K8S上部署服务的时候,总需要设置内存资源分配。但是对于一个陌生的服务进程,内存占用到底设置成什么样才是合理的呢?
这里有一个办法,那就是在电脑上实际运行这个进程,然后执行期望的操作。当进程退出的时候,最大内存占用就会输出在终端里。
主角就是time
命令。需要注意的是,time
本身也是Shell的关键字,直观的执行/usr/bin/time
更为推荐.
MacOS
/usr/bin/time -l -h -p <CMD to trigger your process>
在输出中,有一行<regex[0-9]+> peak memory footprint
,就是进程在整个运行周期中使用内存的最大值。正则区匹配的数字就是内存占用,单位为字节。
Linux
以Debian Bookworm为例。
time
命令如果没有安装,可以执行
sudo apt install -y time
安装成功后,
/usr/bin/time -f "%M" <CMD to trigger your process>
Linux里的time
命令,使用占位符的方式定制输出项。其中M表示输出进程的内存使用的最大RSS值,单位KB。
RSS (Resident Set Size),表示进程堆栈的内存占用情况。完整地包含了共享库的内存占用,但不包含swap区的占用。