我是运行任务排队系统PBSPro的基于Linux的计算群集的用户。 PBSPro喜欢知道一个任务有多lessRAM可用,以确保它能够正确执行; 例如通过qsub -l select=1:mem=4GB someapp我声明我想要提交someapp执行至less有4GB的可用内存的节点上执行。 我可以提供更紧密的绑定,我的应用程序将更快地执行。
我怎么估计someapp需要多less内存?
我可以做一个testing运行,并观看htop ,仔细观看我的进程的RSS,但有没有任何工具或方法,会使它更自动? 换句话说,在整个执行过程中,将最大内存量分配给进程?
我只是群集上的普通用户,没有root访问权限。 我只用一个线程运行一个进程, 即使someapp将fork() ,我也不在乎subprocess内存是否被计数。
GNU时间有一个-v选项,包括最大的RSS。 不是内置的shell,所以/usr/bin/time -v
那现实比较复杂。 然而,你可能不想打扰一个详细的地图parsingla pmap也不需要像valgrind那样通过分析提供的细节。
或者,你知道一些大小的任务,比如说4GB,将会很快安排,如果这个任务太less,就处理失败。