| The Gaudi Framework v29r1 (5cd95fa2)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
ProcStats Class Reference

`#include <src/ProcStats.h>`

Collaboration diagram for ProcStats:
[legend]

## Classes
struct | cleanup
class | unique_fd

## Public Member Functions
bool | fetch (procInfo &fill_me)
double | pageSize () const

## Static Public Member Functions
static ProcStats * | instance ()

## Private Member Functions
| ProcStats ()

## Private Attributes
unique_fd | fd
double | pg_size
procInfo | curr
std::string | fname
char | buf [500]
bool | valid

## Static Private Attributes
static ProcStats * | inst = 0

## Friends
struct | cleanup

## Detailed Description

Definition at line 42 of file ProcStats.h.

## Constructor & Destructor Documentation

ProcStats::ProcStats | ( |  | ) |
| private

Definition at line 249 of file ProcStats.cpp.

249 : valid( false )
250 {
251 #if defined( __linux__ ) or defined( __APPLE__ )
252 pg_size = sysconf( _SC_PAGESIZE ); // getpagesize();
253
254 fname = "/proc/" + std::to_string( getpid() ) + "/stat";
255
256 fd.open( fname.c_str(), O_RDONLY );
257 if ( !fd ) {
258 cerr << "Failed to open " << fname << endl;
259 return;
260 }
261 #endif // __linux__ or __APPLE__
262 valid = true;
263 }
std::to_string
T to_string(T...args)
std::endl
T endl(T...args)
ProcStats::unique_fd::open
unique_fd & open(Args &&...args)
Definition: ProcStats.h:80
ProcStats::pg_size
double pg_size
Definition: ProcStats.h:103
ProcStats::fname
std::string fname
Definition: ProcStats.h:105
ProcStats::fd
unique_fd fd
Definition: ProcStats.h:102
ProcStats::valid
bool valid
Definition: ProcStats.h:107
std::string::c_str
T c_str(T...args)

## Member Function Documentation

bool ProcStats::fetch | ( | procInfo & | fill_me | ) |

Definition at line 265 of file ProcStats.cpp.

266 {
267 if ( valid == false ) return false;
268
269 #if defined( __linux__ ) or defined( __APPLE__ )
270 double pr_size, pr_rssize;
271 linux_proc pinfo;
272 int cnt;
273
274 fd.lseek( 0, SEEK_SET );
275
276 if ( ( cnt = fd.read( buf, sizeof( buf ) ) ) < 0 ) {
277 cout << "LINUX Read of Proc file failed:" << endl;
278 return false;
279 }
280
281 if ( cnt > 0 ) {
282 buf[std::min( static_cast<std::size_t>( cnt ), sizeof( buf ) - 1 )] = '\0';
283
284 sscanf( buf,
285 // 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 20 1 2 3 4 5 6 7 8 9
286 // 30 1 2 3 4 5
287 "%d %s %c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu %ld %ld %ld %ld %ld %ld %llu %lu %ld %lu %lu %lu %lu "
288 "%lu %lu %lu %lu %lu %lu %lu",
289 &pinfo.pid, pinfo.comm, &pinfo.state, &pinfo.ppid, &pinfo.pgrp, &pinfo.session, &pinfo.tty, &pinfo.tpgid,
290 &pinfo.flags, &pinfo.minflt, &pinfo.cminflt, &pinfo.majflt, &pinfo.cmajflt, &pinfo.utime, &pinfo.stime,
291 &pinfo.cutime, &pinfo.cstime, &pinfo.priority, &pinfo.nice, &pinfo.num_threads, &pinfo.itrealvalue,
292 &pinfo.starttime, &pinfo.vsize, &pinfo.rss, &pinfo.rlim, &pinfo.startcode, &pinfo.endcode,
293 &pinfo.startstack, &pinfo.kstkesp, &pinfo.kstkeip, &pinfo.signal, &pinfo.blocked, &pinfo.sigignore,
294 &pinfo.sigcatch, &pinfo.wchan );
295
296 // resident set size in pages
297 pr_size = (double)pinfo.vsize;
298 pr_rssize = (double)pinfo.rss;
299
300 f.vsize = pr_size / ( 1024 * 1024 );
301 f.rss = pr_rssize * pg_size / ( 1024 * 1024 );
302 }
303
304 #else
305 f.vsize = 0;
306 f.rss = 0;
307 #endif // __linux__ or __APPLE__
308
309 bool rc = ( curr == f ) ? false : true;
310
311 curr.rss = f.rss;
312 curr.vsize = f.vsize;
313
314 return rc;
315 }
linux_proc::minflt
unsigned long minflt
Definition: ProcessDescriptor.cpp:270
linux_proc::kstkesp
unsigned long kstkesp
Definition: ProcessDescriptor.cpp:289
linux_proc::signal
unsigned long signal
Definition: ProcessDescriptor.cpp:291
linux_proc::wchan
unsigned long wchan
Definition: ProcessDescriptor.cpp:295
linux_proc::sigcatch
unsigned long sigcatch
Definition: ProcessDescriptor.cpp:294
linux_proc::state
char state
Definition: ProcessDescriptor.cpp:263
linux_proc::tty
int tty
Definition: ProcessDescriptor.cpp:267
std::sscanf
T sscanf(T...args)
linux_proc::flags
unsigned long flags
Definition: ProcessDescriptor.cpp:269
linux_proc::pid
int pid
Definition: ProcessDescriptor.cpp:261
linux_proc
Definition: ProcessDescriptor.cpp:260
std::endl
T endl(T...args)
linux_proc::comm
char comm[400]
Definition: ProcessDescriptor.cpp:262
linux_proc::num_threads
long num_threads
Definition: ProcessDescriptor.cpp:280
ProcStats::pg_size
double pg_size
Definition: ProcStats.h:103
ProcStats::curr
procInfo curr
Definition: ProcStats.h:104
linux_proc::session
int session
Definition: ProcessDescriptor.cpp:266
std::min
T min(T...args)
linux_proc::cstime
long cstime
Definition: ProcessDescriptor.cpp:277
linux_proc::pgrp
int pgrp
Definition: ProcessDescriptor.cpp:265
procInfo::rss
double rss
Definition: ProcStats.h:39
ProcStats::fd
unique_fd fd
Definition: ProcStats.h:102
linux_proc::cutime
long cutime
Definition: ProcessDescriptor.cpp:276
linux_proc::nice
long nice
Definition: ProcessDescriptor.cpp:279
IOTest.rc
rc
Definition: IOTest.py:103
linux_proc::itrealvalue
long itrealvalue
Definition: ProcessDescriptor.cpp:281
linux_proc::vsize
unsigned long vsize
Definition: ProcessDescriptor.cpp:283
linux_proc::startstack
unsigned long startstack
Definition: ProcessDescriptor.cpp:288
linux_proc::rss
long rss
Definition: ProcessDescriptor.cpp:284
linux_proc::cminflt
unsigned long cminflt
Definition: ProcessDescriptor.cpp:271
linux_proc::tpgid
int tpgid
Definition: ProcessDescriptor.cpp:268
linux_proc::majflt
unsigned long majflt
Definition: ProcessDescriptor.cpp:272
linux_proc::starttime
unsigned long long starttime
Definition: ProcessDescriptor.cpp:282
linux_proc::cmajflt
unsigned long cmajflt
Definition: ProcessDescriptor.cpp:273
linux_proc::kstkeip
unsigned long kstkeip
Definition: ProcessDescriptor.cpp:290
linux_proc::priority
long priority
Definition: ProcessDescriptor.cpp:278
linux_proc::startcode
unsigned long startcode
Definition: ProcessDescriptor.cpp:286
ProcStats::valid
bool valid
Definition: ProcStats.h:107
linux_proc::utime
unsigned long utime
Definition: ProcessDescriptor.cpp:274
linux_proc::ppid
int ppid
Definition: ProcessDescriptor.cpp:264
ProcStats::buf
char buf[500]
Definition: ProcStats.h:106
linux_proc::blocked
unsigned long blocked
Definition: ProcessDescriptor.cpp:292
procInfo::vsize
double vsize
Definition: ProcStats.h:38
linux_proc::endcode
unsigned long endcode
Definition: ProcessDescriptor.cpp:287
linux_proc::stime
unsigned long stime
Definition: ProcessDescriptor.cpp:275
linux_proc::sigignore
unsigned long sigignore
Definition: ProcessDescriptor.cpp:293
linux_proc::rlim
unsigned long rlim
Definition: ProcessDescriptor.cpp:285

ProcStats * ProcStats::instance | ( |  | ) |
| static

Definition at line 240 of file ProcStats.cpp.

241 {
242 static cleanup c;
243 if ( !inst ) inst = new ProcStats;
244 return inst;
245 }
ProcStats::inst
static ProcStats * inst
Definition: ProcStats.h:109
gaudirun.c
c
Definition: gaudirun.py:407
ProcStats::cleanup
friend struct cleanup
Definition: ProcStats.h:58
ProcStats::ProcStats
ProcStats()
Definition: ProcStats.cpp:249

double ProcStats::pageSize | ( |  | ) | const
| inline

Definition at line 48 of file ProcStats.h.

48 { return pg_size; }
ProcStats::pg_size
double pg_size
Definition: ProcStats.h:103

## Friends And Related Function Documentation

friend struct cleanup
| friend

Definition at line 58 of file ProcStats.h.

## Member Data Documentation

char ProcStats::buf[500]
| private

Definition at line 106 of file ProcStats.h.

procInfo ProcStats::curr
| private

Definition at line 104 of file ProcStats.h.

unique_fd ProcStats::fd
| private

Definition at line 102 of file ProcStats.h.

std::string ProcStats::fname
| private

Definition at line 105 of file ProcStats.h.

ProcStats * ProcStats::inst = 0
| static private

Definition at line 109 of file ProcStats.h.

double ProcStats::pg_size
| private

Definition at line 103 of file ProcStats.h.

bool ProcStats::valid
| private

Definition at line 107 of file ProcStats.h.

The documentation for this class was generated from the following files:

- GaudiAud/src/ProcStats.h
- GaudiAud/src/ProcStats.cpp