AIX中的程序内存监视

Programatic memory monitoring in AIX

本文关键字:内存 监视 程序 AIX      更新时间:2023-10-16

有人能建议使用AIX系统调用来通过程序检查内存使用情况吗?我使用的是一个大型多线程C++应用程序,由于内存中有大量不受限制的缓存,该应用程序目前内存不足(在AIX6.1上使用32位大内存模型)。我当然可以限制缓存的增长,但由于它们的复杂结构,很难计算出它们有多大;更好的IMO只是评估这个过程占用了多少内存,并以此为基础进行限制。

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

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