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 33 of file StorageAccount.h.

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

Definition at line 34 of file StorageAccount.h.

Member Function Documentation

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

Definition at line 97 of file StorageAccount.cc.

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

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

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

Definition at line 75 of file StorageAccount.cc.

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

Referenced by TFileAdaptor::statsXML().

75  {
76  int const oneM = 1000 * 1000;
77  int const oneMeg = 1024 * 1024;
78  for (StorageStats::iterator i = s_stats.begin (); i != s_stats.end(); ++i) {
79  for (OperationStats::iterator j = i->second->begin(); j != i->second->end(); ++j) {
80  std::ostringstream os;
81  os << "Timing-" << i->first << "-" << j->first << "-";
82  summary.insert(std::make_pair(os.str() + "numOperations", i2str(j->second.attempts)));
83  summary.insert(std::make_pair(os.str() + "numSuccessfulOperations", i2str(j->second.successes)));
84  summary.insert(std::make_pair(os.str() + "totalMegabytes", d2str(j->second.amount / oneMeg)));
85  summary.insert(std::make_pair(os.str() + "totalMsecs", d2str(j->second.timeTotal / oneM)));
86  summary.insert(std::make_pair(os.str() + "minMsecs", d2str(j->second.timeMin / oneM)));
87  summary.insert(std::make_pair(os.str() + "maxMsecs", d2str(j->second.timeMax / oneM)));
88  }
89  }
90 }
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 93 of file StorageAccount.cc.

References s_stats.

Referenced by edm::storage::StatisticsSenderService::FileStatistics::fillUDP().

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

Definition at line 36 of file StorageAccount.cc.

References plotBeamSpotDB::first, i, j, and s_stats.

Referenced by TFileAdaptor::stats().

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

Definition at line 57 of file StorageAccount.cc.

References i, j, and s_stats.

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