171 PROCESS_MEMORY_COUNTERS info;
172 GetProcessMemoryInfo(GetCurrentProcess(), &info,
sizeof(info));
173 mem = (size_t)(info.PeakWorkingSetSize);
176# elif (defined(_AIX) || \
177 defined(__TOS__AIX__)) || \
178 (defined(__sun__) || \
181 (defined(__SVR4) || \
183 struct psinfo psinfo;
185 if ((fd = open(
"/proc/self/psinfo", O_RDONLY)) == -1)
187 if (read(fd, &psinfo,
sizeof(psinfo)) !=
sizeof(psinfo))
193 mem = (size_t)(psinfo.pr_rssize * 1024L);
196# elif defined(__unix__) || \
199 (defined(__APPLE__) && \
201 struct rusage rusage;
202 getrusage(RUSAGE_SELF, &rusage);
203# if defined(__APPLE__) && \
205 mem = (size_t)(rusage.ru_maxrss);
207 mem = (size_t)(rusage.ru_maxrss * 1024L);
228 PROCESS_MEMORY_COUNTERS info;
229 GetProcessMemoryInfo(GetCurrentProcess(), &info,
sizeof(info));
230 mem = (size_t)(info.WorkingSetSize);
233# elif defined(__APPLE__) && \
235 struct mach_task_basic_info info;
236 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT;
237 if (task_info(mach_task_self(), MACH_TASK_BASIC_INFO,
238 (task_info_t)(&info), &infoCount) != KERN_SUCCESS)
240 mem = (size_t)(info.resident_size);
243# elif defined(__linux__) || \
244 defined(__linux) || \
246 defined(__gnu_linux__)
249 if ((fp = fopen(
"/proc/self/statm",
"r")) == NULL)
251 if (fscanf(fp,
"%*s%ld", &rss) != 1)
257 mem = (size_t)(rss) * (size_t)(sysconf(_SC_PAGESIZE));
274 size_t min(0), max(0), tot(0);
275 Teuchos::reduceAll(comm, Teuchos::REDUCE_MIN, 1, &mem, &min);
276 Teuchos::reduceAll(comm, Teuchos::REDUCE_MAX, 1, &mem, &max);
277 Teuchos::reduceAll(comm, Teuchos::REDUCE_SUM, 1, &mem, &tot);