【问题标题】:Programatic memory monitoring in AIXAIX 中的程序化内存监控
【发布时间】:2012-02-05 19:31:40
【问题描述】:

任何人都可以提供可用于以编程方式检查内存使用情况的 AIX 系统调用吗?我正在使用一个大型多线程 C++ 应用程序,由于大量无限系列的内存缓存,该应用程序当前内存不足(在 AIX 6.1 上使用 32 位大内存模型)。我当然可以限制缓存的增长,但由于它们的复杂结构,很难计算出它们有多大;更好的 IMO 只是评估进程占用了多少内存并以此为基础进行限制。

由于使用共享内存,使用超大内存模型是不可能的,而且短期内走 64 位也不可行。

【问题讨论】:

  • 这可能会让您朝着高效的方向前进...尝试从 /proc 文件系统或 sysfs 中读取数据。
  • @vikrantislav:非常感谢 - 会试一试的。

标签: c++ memory memory-management aix system-calls


【解决方案1】:

对于 AIX,我发现以下在我的应用程序中运行良好:

#include <unistd.h>
#include <sys/types.h>
#include <sys/resource.h>

// total physical memory (in bytes)
size_t total_memory = sysconf(_SC_AIX_REALMEM) * 1024;

// maximum resident set of the process
struct rusage usage;
getrusage(RUSAGE_SELF, &usage);
size_t used_memory = (usage.ru_maxrss)*1024);

我相信使用 vminfo (/usr/include/sys/vminfo.h) 您应该能够获得系统范围内已使用的内存。

【讨论】:

    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2011-03-18
    • 2017-06-17
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多