C++ 跟踪嵌入式实时MPI可执行文件中的内存使用情况

C++ 跟踪嵌入式实时MPI可执行文件中的内存使用情况,c++,linux,memory-management,embedded,mpi,C++,Linux,Memory Management,Embedded,Mpi,我最近一直在做一些挖掘工作,我试图了解什么是跟踪实时软件中内存使用的最佳方法,该软件总是在Linux上运行,在本例中是在一堆节点上运行,使用MPI。由于代码没有结束条件,我希望能够实时跟踪内存使用情况,查看哪个MPI映像使用最多,哪些函数使用最多,每个节点使用了多少,以及整个系统中整个可执行文件使用了多少 已经有工具可以做这样的事情了吗?似乎我发现的大多数东西都是在事后给出结果的分析器。希望答案能够跟踪我的软件的内存使用情况,以及我的软件使用的第三方libs,我无法访问源代码。操作系统通常可以在

我最近一直在做一些挖掘工作,我试图了解什么是跟踪实时软件中内存使用的最佳方法,该软件总是在Linux上运行,在本例中是在一堆节点上运行,使用MPI。由于代码没有结束条件,我希望能够实时跟踪内存使用情况,查看哪个MPI映像使用最多,哪些函数使用最多,每个节点使用了多少,以及整个系统中整个可执行文件使用了多少


已经有工具可以做这样的事情了吗?似乎我发现的大多数东西都是在事后给出结果的分析器。希望答案能够跟踪我的软件的内存使用情况,以及我的软件使用的第三方libs,我无法访问源代码。

操作系统通常可以在每个可执行文件/线程的运行时动态提供数据,例如,请参阅linux ps命令


如果您想跟踪调用者,那么您可以覆盖new和delete操作符来收集运行时分配/发布数据,跟踪调用它的函数并将其记录在某个地方。

正如Littledev所建议的:我将覆盖new/delete/malloc/free并跟踪分配及其大小。跟踪此类分配的一个好方法是将它们推送到文件或通过网络流,以允许另一个程序分析日志。如果您能够很好地格式化日志,并且能够以良好的方式向您呈现信息,那么编写python/lua脚本来解析日志是相当简单的


覆盖第三方软件内存分配可能很困难,具体取决于您链接它们的方式。通过DLL重写内存通常是一件痛苦的事情,所以请查看是否可以静态链接它们以强制它们使用您的分配

看看vstat

Linux..谢谢你的提问,忘了提到itAh-我想知道htat是否可以通过静态链接实现