Программный мониторинг памяти в AIX - PullRequest
3 голосов
/ 09 января 2012

Кто-нибудь может посоветовать системные вызовы AIX, которые можно использовать для программной проверки использования памяти? Я работаю с большим многопоточным приложением C ++, в котором в настоящее время не хватает памяти (используется 32-разрядная модель большой памяти в AIX 6.1) из-за большой неограниченной серии кэшей в памяти. Я, конечно, могу ограничить рост кэшей, но из-за их сложной структуры трудно определить, насколько они велики; намного лучше IMO просто оценить, сколько памяти занимает процесс и ограничить на этом основании.

Использование модели с очень большой памятью невозможно из-за использования разделяемой памяти, и использование 64-битной памяти также невозможно в краткосрочной перспективе.

1 Ответ

2 голосов
/ 25 января 2012

Для 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) вы сможете получить всю используемую память для всей системы.

...