如何测量 Python MPI 或多处理程序的内存占用?

How can I measure the memory occupancy of Python MPI or multiprocessing program?

我在 Cray XE6 机器上执行此操作,我无法在计算节点上登录并且不可能进行交互式会话,因此我需要以某种方式使用 top 命令:运行 top in the背景并让它定期拍摄快照并将其发送到日志文件...有人可以举例说明如何做到这一点吗?

谢谢

使用resource模块查询当前内存使用情况。然后,在您的 MPI 程序中的某处,以特定的时间间隔将使用情况转储到日志中。

例如,下面测量当前进程的最大驻留内存大小,并将该值附加到文件中。您可能会做的是在模拟的每个时间步长的某处插入代码段。

import datetime
import resource
import os
from mpi4py import MPI

mem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
rank = MPI.COMM_WORLD.Get_rank()
fname = 'r{}.log'.format(rank)
with open(fname, 'a') as f:
    # Dump timestamp, PID and amount of RAM.
    f.write('{} {} {}\n'.format(datetime.datetime.now(), os.getpid(), mem))

注意文件的命名,使用 运行 MPI 进程的等级(根据@Hristo 的建议)。