summaryrefslogtreecommitdiffstats
path: root/tests/getrssusage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/getrssusage.cpp')
-rw-r--r--tests/getrssusage.cpp106
1 files changed, 50 insertions, 56 deletions
diff --git a/tests/getrssusage.cpp b/tests/getrssusage.cpp
index 020c7d6..16fec52 100644
--- a/tests/getrssusage.cpp
+++ b/tests/getrssusage.cpp
@@ -21,7 +21,7 @@
21#if defined(__APPLE__) && defined(__MACH__) 21#if defined(__APPLE__) && defined(__MACH__)
22#include <mach/mach.h> 22#include <mach/mach.h>
23 23
24#elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__))) 24#elif(defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__)))
25#include <fcntl.h> 25#include <fcntl.h>
26#include <procfs.h> 26#include <procfs.h>
27 27
@@ -40,85 +40,79 @@
40 * memory use) measured in bytes, or zero if the value cannot be 40 * memory use) measured in bytes, or zero if the value cannot be
41 * determined on this OS. 41 * determined on this OS.
42 */ 42 */
43size_t getPeakRSS( ) 43size_t getPeakRSS()
44{ 44{
45#if defined(_WIN32) 45#if defined(_WIN32)
46 /* Windows -------------------------------------------------- */ 46 /* Windows -------------------------------------------------- */
47 PROCESS_MEMORY_COUNTERS info; 47 PROCESS_MEMORY_COUNTERS info;
48 GetProcessMemoryInfo( GetCurrentProcess( ), &info, sizeof(info) ); 48 GetProcessMemoryInfo(GetCurrentProcess(), &info, sizeof(info));
49 return (size_t)info.PeakWorkingSetSize; 49 return (size_t)info.PeakWorkingSetSize;
50 50
51#elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__))) 51#elif(defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__)))
52 /* AIX and Solaris ------------------------------------------ */ 52 /* AIX and Solaris ------------------------------------------ */
53 struct psinfo psinfo; 53 struct psinfo psinfo;
54 int fd = -1; 54 int fd = -1;
55 if ( (fd = open( "/proc/self/psinfo", O_RDONLY )) == -1 ) 55 if ((fd = open("/proc/self/psinfo", O_RDONLY)) == -1)
56 return (size_t)0L; /* Can't open? */ 56 return (size_t)0L; /* Can't open? */
57 if ( read( fd, &psinfo, sizeof(psinfo) ) != sizeof(psinfo) ) 57 if (read(fd, &psinfo, sizeof(psinfo)) != sizeof(psinfo)) {
58 { 58 close(fd);
59 close( fd ); 59 return (size_t)0L; /* Can't read? */
60 return (size_t)0L; /* Can't read? */ 60 }
61 } 61 close(fd);
62 close( fd ); 62 return (size_t)(psinfo.pr_rssize * 1024L);
63 return (size_t)(psinfo.pr_rssize * 1024L);
64 63
65#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) 64#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
66 /* BSD, Linux, and OSX -------------------------------------- */ 65 /* BSD, Linux, and OSX -------------------------------------- */
67 struct rusage rusage; 66 struct rusage rusage;
68 getrusage( RUSAGE_SELF, &rusage ); 67 getrusage(RUSAGE_SELF, &rusage);
69#if defined(__APPLE__) && defined(__MACH__) 68#if defined(__APPLE__) && defined(__MACH__)
70 return (size_t)rusage.ru_maxrss; 69 return (size_t)rusage.ru_maxrss;
71#else 70#else
72 return (size_t)(rusage.ru_maxrss * 1024L); 71 return (size_t)(rusage.ru_maxrss * 1024L);
73#endif 72#endif
74 73
75#else 74#else
76 /* Unknown OS ----------------------------------------------- */ 75 /* Unknown OS ----------------------------------------------- */
77 return (size_t)0L; /* Unsupported. */ 76 return (size_t)0L; /* Unsupported. */
78#endif 77#endif
79} 78}
80 79
81 80
82
83
84
85/** 81/**
86 * Returns the current resident set size (physical memory use) measured 82 * Returns the current resident set size (physical memory use) measured
87 * in bytes, or zero if the value cannot be determined on this OS. 83 * in bytes, or zero if the value cannot be determined on this OS.
88 */ 84 */
89size_t getCurrentRSS( ) 85size_t getCurrentRSS()
90{ 86{
91#if defined(_WIN32) 87#if defined(_WIN32)
92 /* Windows -------------------------------------------------- */ 88 /* Windows -------------------------------------------------- */
93 PROCESS_MEMORY_COUNTERS info; 89 PROCESS_MEMORY_COUNTERS info;
94 GetProcessMemoryInfo( GetCurrentProcess( ), &info, sizeof(info) ); 90 GetProcessMemoryInfo(GetCurrentProcess(), &info, sizeof(info));
95 return (size_t)info.WorkingSetSize; 91 return (size_t)info.WorkingSetSize;
96 92
97#elif defined(__APPLE__) && defined(__MACH__) 93#elif defined(__APPLE__) && defined(__MACH__)
98 /* OSX ------------------------------------------------------ */ 94 /* OSX ------------------------------------------------------ */
99 struct mach_task_basic_info info; 95 struct mach_task_basic_info info;
100 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT; 96 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT;
101 if ( task_info( mach_task_self( ), MACH_TASK_BASIC_INFO, 97 if (task_info(mach_task_self(), MACH_TASK_BASIC_INFO, (task_info_t)&info, &infoCount) != KERN_SUCCESS)
102 (task_info_t)&info, &infoCount ) != KERN_SUCCESS ) 98 return (size_t)0L; /* Can't access? */
103 return (size_t)0L; /* Can't access? */ 99 return (size_t)info.resident_size;
104 return (size_t)info.resident_size;
105 100
106#elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__) 101#elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
107 /* Linux ---------------------------------------------------- */ 102 /* Linux ---------------------------------------------------- */
108 long rss = 0L; 103 long rss = 0L;
109 FILE* fp = NULL; 104 FILE *fp = NULL;
110 if ( (fp = fopen( "/proc/self/statm", "r" )) == NULL ) 105 if ((fp = fopen("/proc/self/statm", "r")) == NULL)
111 return (size_t)0L; /* Can't open? */ 106 return (size_t)0L; /* Can't open? */
112 if ( fscanf( fp, "%*s%ld", &rss ) != 1 ) 107 if (fscanf(fp, "%*s%ld", &rss) != 1) {
113 { 108 fclose(fp);
114 fclose( fp ); 109 return (size_t)0L; /* Can't read? */
115 return (size_t)0L; /* Can't read? */ 110 }
116 } 111 fclose(fp);
117 fclose( fp ); 112 return (size_t)rss * (size_t)sysconf(_SC_PAGESIZE);
118 return (size_t)rss * (size_t)sysconf( _SC_PAGESIZE);
119 113
120#else 114#else
121 /* AIX, BSD, Solaris, and Unknown OS ------------------------ */ 115 /* AIX, BSD, Solaris, and Unknown OS ------------------------ */
122 return (size_t)0L; /* Unsupported. */ 116 return (size_t)0L; /* Unsupported. */
123#endif 117#endif
124} 118}