matlab中的内存监控
Posted
技术标签:
【中文标题】matlab中的内存监控【英文标题】:Monitor memory in matlab 【发布时间】:2014-10-22 07:04:16 【问题描述】:我一直在寻找一种方法来监控 matlab 的内存消耗,但一直无法做到。我感兴趣的是内置函数的峰值内存,无法用 matlab 分析器测量,因为这些函数已经编译。
在 matlab 中很少记录峰值内存问题,这意味着要找出问题所在,我需要自己监控内存使用情况。我已经尝试在 Windows 中使用资源管理器,但我找不到任何东西。我可能是没有问题,但这也可能意味着采样率太低。我使用的是 Windows 7。
这个问题可能不仅仅与matlab有关,但是由于我在matlab中有问题我会标记它。
【问题讨论】:
Matlab的memory
函数呢?
@LuisMendo 我还没有尝试过,但不知何故我怀疑它会起作用。问题是我希望能够动态测量(如果可能的话记录)内存,例如找出在 matlab 中编译的内置函数中的峰值内存。假设您出于某种原因想要找到向量的任何两个元素的最小乘积。例如,这可以通过矩阵乘法 (v*v.') 来解决,其中 v 是 [Nx1]。然而,即使输入和输出适中,这也会产生潜在的巨大峰值内存。如果该功能是内置的,我无法通过探查器看到这一点
你是对的。您必须在操作(矩阵乘法)运行时发出memory
。也许timer
可以用来定期调用memory
?如果周期足够小,一个这样的调用可能会在中间中断您的操作
【参考方案1】:
Matlab File Exchange 上有一个nice script,用于监控 Matlab 的内存使用情况。它基本上在后台以指定的时间间隔更新图形。 (由于它依赖于 Matlab 的 memory
函数,不幸的是它只适用于 Windows 系统。)
我不知道这是否适合您的需求,但由于memory
测量了Matlab 进程使用的总内存,这应该也包括内置函数的内存。
但是,当 Matlab 负载过重时,其他函数可能会优先执行,并且图形可能不会按需要更新。在这种情况下,应该考虑使用诸如 Matlab 之外的工具来监控内存。 perfmon
或 Process Explorer,有关更详细的论文,请参阅 this question。
【讨论】:
Perfmon 似乎只是每秒更新一次。可以修复吗?另外,进程资源管理器更新速度可以更快吗? 我最近没有使用任何这些工具——我大部分时间都在使用 Linux 和 OS X——所以我不知道。但是,如果您的峰值内存分配发生在如此短的时间范围内,您甚至可能无法在监控程序中看到它,如果它在同一个内核上运行,即使使用非常小的刷新间隔......你也会有以确保它在不同的核心上运行。以上是关于matlab中的内存监控的主要内容,如果未能解决你的问题,请参考以下文章