#ifndef PERF_H #define PERF_H #ifdef newc #include #include #include #include #include #include #include using namespace std; #else #include #include #include #include #include #include #include #endif /* for open/read/close */ #include #include #include #include #include #include #include #ifdef MPI_STUB #include "mpi_stub.h" #else #include #endif /* Real time */ #define TimerSignal SIGALRM #define TimerType ITIMER_REAL class perf { public: static size_t mem_peak; static size_t mem_current; /* The sampling interval of the timer in ms, <= 0 disables the timer. */ static int sampling_interval; static char statm[40]; static bool have_statm; static struct itimerval new_it, old; static struct sigaction sa, old_sa; public: perf(); ~perf(); static void sample_mem_usage(int dummy); size_t MemoryUsage(size_t *current_min, size_t *current_avg, size_t *current_max, size_t *peak_min, size_t *peak_avg, size_t *peak_max, int nprocs); }; #endif /* PERF_H */