CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Static Public Member Functions
StorageAccount Class Reference

#include <StorageAccount.h>

Classes

struct  Counter
 
class  Stamp
 

Public Types

typedef std::map< std::string,
Counter
OperationStats
 
typedef std::map< std::string,
boost::shared_ptr
< OperationStats > > 
StorageStats
 

Static Public Member Functions

static Countercounter (const std::string &storageClass, const std::string &operation)
 
static void fillSummary (std::map< std::string, std::string > &summary)
 
static const StorageStatssummary (void)
 
static std::string summaryText (bool banner=false)
 
static std::string summaryXML (void)
 

Detailed Description

Definition at line 9 of file StorageAccount.h.

Member Typedef Documentation

typedef std::map<std::string, Counter> StorageAccount::OperationStats

Definition at line 30 of file StorageAccount.h.

typedef std::map<std::string, boost::shared_ptr<OperationStats> > StorageAccount::StorageStats

Definition at line 31 of file StorageAccount.h.

Member Function Documentation

StorageAccount::Counter & StorageAccount::counter ( const std::string &  storageClass,
const std::string &  operation 
)
static

Definition at line 96 of file StorageAccount.cc.

References CommonMethods::lock(), pos, s_mutex, s_stats, and vdt::x.

Referenced by StorageFactory::check(), StorageAccountProxy::close(), StorageAccountProxy::flush(), StorageFactory::open(), StorageAccountProxy::resize(), StorageFactory::stagein(), StorageAccountProxy::StorageAccountProxy(), storageCounter(), and StorageAccountProxy::~StorageAccountProxy().

96  {
97  boost::mutex::scoped_lock lock (s_mutex);
98  boost::shared_ptr<OperationStats> &opstats = s_stats [storageClass];
99  if (!opstats) opstats.reset(new OperationStats);
100 
101  OperationStats::iterator pos = opstats->find (operation);
102  if (pos == opstats->end ()) {
103  Counter x = { 0, 0, 0, 0, 0 };
104  pos = opstats->insert (OperationStats::value_type (operation, x)).first;
105  }
106 
107  return pos->second;
108 }
std::map< std::string, Counter > OperationStats
StorageAccount::StorageStats s_stats
unsigned int(* Counter)(align::ID)
Definition: Counters.h:26
Container::value_type value_type
x
Definition: VDTMath.h:216
boost::mutex s_mutex
void StorageAccount::fillSummary ( std::map< std::string, std::string > &  summary)
static

Definition at line 74 of file StorageAccount.cc.

References d2str(), i, i2str(), j, and s_stats.

Referenced by TFileAdaptor::statsXML().

74  {
75  int const oneM = 1000 * 1000;
76  int const oneMeg = 1024 * 1024;
77  for (StorageStats::iterator i = s_stats.begin (); i != s_stats.end(); ++i) {
78  for (OperationStats::iterator j = i->second->begin(); j != i->second->end(); ++j) {
79  std::ostringstream os;
80  os << "Timing-" << i->first << "-" << j->first << "-";
81  summary.insert(std::make_pair(os.str() + "numOperations", i2str(j->second.attempts)));
82  summary.insert(std::make_pair(os.str() + "numSuccessfulOperations", i2str(j->second.successes)));
83  summary.insert(std::make_pair(os.str() + "totalMegabytes", d2str(j->second.amount / oneMeg)));
84  summary.insert(std::make_pair(os.str() + "totalMsecs", d2str(j->second.timeTotal / oneM)));
85  summary.insert(std::make_pair(os.str() + "minMsecs", d2str(j->second.timeMin / oneM)));
86  summary.insert(std::make_pair(os.str() + "maxMsecs", d2str(j->second.timeMax / oneM)));
87  }
88  }
89 }
int i
Definition: DBlmapReader.cc:9
static const StorageStats & summary(void)
StorageAccount::StorageStats s_stats
static std::string d2str(double d)
int j
Definition: DBlmapReader.cc:9
static std::string i2str(int i)
const StorageAccount::StorageStats & StorageAccount::summary ( void  )
static

Definition at line 92 of file StorageAccount.cc.

References s_stats.

93 { return s_stats; }
StorageAccount::StorageStats s_stats
std::string StorageAccount::summaryText ( bool  banner = false)
static

Definition at line 35 of file StorageAccount.cc.

References first, i, j, and s_stats.

Referenced by TFileAdaptor::stats().

35  {
36  bool first = true;
37  std::ostringstream os;
38  if (banner)
39  os << "stats: class/operation/attempts/successes/amount/time-total/time-min/time-max\n";
40  for (StorageStats::iterator i = s_stats.begin (); i != s_stats.end(); ++i)
41  for (OperationStats::iterator j = i->second->begin (); j != i->second->end (); ++j, first = false)
42  os << (first ? "" : "; ")
43  << i->first << '/'
44  << j->first << '='
45  << j->second.attempts << '/'
46  << j->second.successes << '/'
47  << (j->second.amount / 1024 / 1024) << "MB/"
48  << (j->second.timeTotal / 1000 / 1000) << "ms/"
49  << (j->second.timeMin / 1000 / 1000) << "ms/"
50  << (j->second.timeMax / 1000 / 1000) << "ms";
51 
52  return os.str ();
53 }
int i
Definition: DBlmapReader.cc:9
StorageAccount::StorageStats s_stats
int j
Definition: DBlmapReader.cc:9
bool first
Definition: L1TdeRCT.cc:94
std::string StorageAccount::summaryXML ( void  )
static

Definition at line 56 of file StorageAccount.cc.

References i, j, and s_stats.

56  {
57  std::ostringstream os;
58  os << "<storage-timing-summary>\n";
59  for (StorageStats::iterator i = s_stats.begin (); i != s_stats.end(); ++i)
60  for (OperationStats::iterator j = i->second->begin (); j != i->second->end (); ++j)
61  os << " <counter-value subsystem='" << i->first
62  << "' counter-name='" << j->first
63  << "' num-operations='" << j->second.attempts
64  << "' num-successful-operations='" << j->second.successes
65  << "' total-megabytes='" << (j->second.amount / 1024 / 1024)
66  << "' total-msecs='" << (j->second.timeTotal / 1000 / 1000)
67  << "' min-msecs='" << (j->second.timeMin / 1000 / 1000)
68  << "' max-msecs='" << (j->second.timeMax / 1000 / 1000) << "'/>\n";
69  os << "</storage-timing-summary>";
70  return os.str ();
71 }
int i
Definition: DBlmapReader.cc:9
StorageAccount::StorageStats s_stats
int j
Definition: DBlmapReader.cc:9