我是一个运行任务排队系统的 Linux 计算集群的用户PBSPro
。PBSPro
我想知道任务需要多少 RAM 才能确保它正确执行;例如,qsub -l select=1:mem=4GB someapp
我声明我想someapp
在至少有 4GB 可用内存的节点上提交执行。我提供的约束越严格,我的应用程序就能越快地被安排执行。
我如何估计需要多少内存someapp
?
我可以进行测试运行并观察htop
,仔细观察我的进程的 RSS,但是否有任何工具或方法可以使其更加自动化?比如说,在整个执行过程中返回分页到进程的最大内存量?
我只是集群上的普通用户,没有 root 权限。我只运行一个进程,可能有多个线程;即使someapp
会fork()
,我也不关心子进程的内存是否被计算在内。
答案1
GNU 时间有一个 -v 选项,其中包括最大 RSS。不是内置的 shell,所以/usr/bin/time -v
实际情况比这更复杂。但是,您可能不想像 那样费心进行详细的地图解析,pmap
也不需要 那样的分析提供的详细信息valgrind
。
或者,您知道某些大小的任务(比如 4 GB)将被快速安排,如果任务太小则会失败。