AIX中的程序化内存监视

时间:2012-01-09 08:14:06

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

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

由于使用共享内存,使用非常大的内存模型是不可能的,并且在短期内使用64位也是不可行的。

1 个答案:

答案 0 :(得分:2)

对于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)你应该可以在系统范围内获得已用的内存。