估计 Linux 上进程所需的 RAM

估计 Linux 上进程所需的 RAM

我是一个运行任务排队系统的 Linux 计算集群的用户PBSProPBSPro我想知道任务需要多少 RAM 才能确保它正确执行;例如,qsub -l select=1:mem=4GB someapp我声明我想someapp在至少有 4GB 可用内存的节点上提交执行。我提供的约束越严格,我的应用程序就能越快地被安排执行。

我如何估计需要多少内存someapp

我可以进行测试运行并观察htop,仔细观察我的进程的 RSS,但是否有任何工具或方法可以使其更加自动化?比如说,在整个执行过程中返回分页到进程的最大内存量?

我只是集群上的普通用户,没有 root 权限。我只运行一个进程,可能有多个线程;即使someappfork(),我也不关心子进程的内存是否被计算在内。

答案1

GNU 时间有一个 -v 选项,其中包括最大 RSS。不是内置的 shell,所以/usr/bin/time -v

实际情况比这更复杂。但是,您可能不想像 那样费心进行详细的地图解析,pmap也不需要 那样的分析提供的详细信息valgrind

或者,您知道某些大小的任务(比如 4 GB)将被快速安排,如果任务太小则会失败。

相关内容