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

时间:2015-06-10 16:03:44

标签: python memory multiprocessing mpi mpi4py

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

由于

1 个答案:

答案 0 :(得分:1)

使用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的推荐)。