139 PROCESS_MEMORY_COUNTERS info;
140 GetProcessMemoryInfo(GetCurrentProcess(), &info,
sizeof(info));
141 mem = (size_t)(info.PeakWorkingSetSize);
144# elif (defined(_AIX) || \
145 defined(__TOS__AIX__)) || \
146 (defined(__sun__) || \
149 (defined(__SVR4) || \
151 struct psinfo psinfo;
153 if ((fd = open(
"/proc/self/psinfo", O_RDONLY)) == -1)
155 if (read(fd, &psinfo,
sizeof(psinfo)) !=
sizeof(psinfo))
161 mem = (size_t)(psinfo.pr_rssize * 1024L);
164# elif defined(__unix__) || \
167 (defined(__APPLE__) && \
169 struct rusage rusage;
170 getrusage(RUSAGE_SELF, &rusage);
171# if defined(__APPLE__) && \
173 mem = (size_t)(rusage.ru_maxrss);
175 mem = (size_t)(rusage.ru_maxrss * 1024L);
196 PROCESS_MEMORY_COUNTERS info;
197 GetProcessMemoryInfo(GetCurrentProcess(), &info,
sizeof(info));
198 mem = (size_t)(info.WorkingSetSize);
201# elif defined(__APPLE__) && \
203 struct mach_task_basic_info info;
204 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT;
205 if (task_info(mach_task_self(), MACH_TASK_BASIC_INFO,
206 (task_info_t)(&info), &infoCount) != KERN_SUCCESS)
208 mem = (size_t)(info.resident_size);
211# elif defined(__linux__) || \
212 defined(__linux) || \
214 defined(__gnu_linux__)
217 if ((fp = fopen(
"/proc/self/statm",
"r")) == NULL)
219 if (fscanf(fp,
"%*s%ld", &rss) != 1)
225 mem = (size_t)(rss) * (size_t)(sysconf(_SC_PAGESIZE));
242 size_t min(0), max(0), tot(0);
243 Teuchos::reduceAll(comm, Teuchos::REDUCE_MIN, 1, &mem, &min);
244 Teuchos::reduceAll(comm, Teuchos::REDUCE_MAX, 1, &mem, &max);
245 Teuchos::reduceAll(comm, Teuchos::REDUCE_SUM, 1, &mem, &tot);