我是运行任务队列系统的基于 Linux 的计算集群的用户PBSPro
。PBSPro
想知道一个任务应该有多少 RAM 可用以确保它能够正确执行;例如,qsub -l select=1:mem=4GB someapp
我声明我想someapp
在一个至少有 4GB 可用内存的节点上提交执行。我可以提供的界限越紧密,我的应用程序将被安排执行得越快。
我如何估计需要多少内存someapp
?
我可以进行测试运行并观察htop
,仔细观察我的过程的 RSS,但是有什么工具或方法可以使它更自动化吗?比方说,在整个执行过程中返回进程的最大分页内存量?
我只是集群上的普通用户,没有root访问权限。我只运行一个可能有多个线程的进程;即使someapp
will fork()
,我也不关心是否计算子进程内存。
GNU time 有一个包含最大 RSS 的 -v 选项。不是内置的外壳,所以
/usr/bin/time -v
现实比那更复杂。但是,您可能不想为解析 la 的详细地图而烦恼,
pmap
也不需要像 with 之类的分析提供的详细信息valgrind
。或者,您知道某个大小的任务(例如 4 GB)将被快速安排并在太少时处理失败。