CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch1/src/EventFilter/StorageManager/src/FragmentMonitorCollection.cc

Go to the documentation of this file.
00001 // $Id: FragmentMonitorCollection.cc,v 1.9 2011/03/07 15:31:32 mommsen Exp $
00003 
00004 #include <string>
00005 #include <sstream>
00006 #include <iomanip>
00007 
00008 #include "EventFilter/StorageManager/interface/Exception.h"
00009 #include "EventFilter/StorageManager/interface/FragmentMonitorCollection.h"
00010 
00011 
00012 namespace stor {
00013   
00014   FragmentMonitorCollection::FragmentMonitorCollection(const utils::Duration_t& updateInterval) :
00015   MonitorCollection(updateInterval),
00016   allFragmentSizes_(updateInterval, boost::posix_time::seconds(5)),
00017   allFragmentBandwidth_(updateInterval, boost::posix_time::seconds(5)),
00018   eventFragmentSizes_(updateInterval, boost::posix_time::seconds(5)),
00019   eventFragmentBandwidth_(updateInterval, boost::posix_time::seconds(5)),
00020   dqmEventFragmentSizes_(updateInterval, boost::posix_time::seconds(300)),
00021   dqmEventFragmentBandwidth_(updateInterval, boost::posix_time::seconds(300))
00022   {}
00023   
00024   
00025   void FragmentMonitorCollection::addFragmentSample(const double bytecount)
00026   {
00027     double mbytes = bytecount / 0x100000;
00028     allFragmentSizes_.addSample(mbytes);
00029   }
00030   
00031   
00032   void FragmentMonitorCollection::addEventFragmentSample(const double bytecount)
00033   {
00034     double mbytes = bytecount / 0x100000;
00035     allFragmentSizes_.addSample(mbytes);
00036     eventFragmentSizes_.addSample(mbytes);
00037   }
00038   
00039   
00040   void FragmentMonitorCollection::addDQMEventFragmentSample(const double bytecount)
00041   {
00042     double mbytes = bytecount / 0x100000;
00043     allFragmentSizes_.addSample(mbytes);
00044     dqmEventFragmentSizes_.addSample(mbytes);
00045   }
00046   
00047   
00048   void FragmentMonitorCollection::getStats(FragmentStats& stats) const
00049   {
00050     getAllFragmentSizeMQ().getStats(stats.allFragmentSizeStats);
00051     getEventFragmentSizeMQ().getStats(stats.eventFragmentSizeStats);
00052     getDQMEventFragmentSizeMQ().getStats(stats.dqmEventFragmentSizeStats);
00053     
00054     getAllFragmentBandwidthMQ().getStats(stats.allFragmentBandwidthStats);
00055     getEventFragmentBandwidthMQ().getStats(stats.eventFragmentBandwidthStats);
00056     getDQMEventFragmentBandwidthMQ().getStats(stats.dqmEventFragmentBandwidthStats);
00057   }
00058   
00059   
00060   void FragmentMonitorCollection::do_calculateStatistics()
00061   {
00062     allFragmentSizes_.calculateStatistics();
00063     eventFragmentSizes_.calculateStatistics();
00064     dqmEventFragmentSizes_.calculateStatistics();
00065     
00066     MonitoredQuantity::Stats stats;
00067     allFragmentSizes_.getStats(stats);
00068     if (stats.getSampleCount() > 0) {
00069       allFragmentBandwidth_.addSample(stats.getLastValueRate());
00070     }
00071     allFragmentBandwidth_.calculateStatistics();
00072     
00073     eventFragmentSizes_.getStats(stats);
00074     if (stats.getSampleCount() > 0) {
00075       eventFragmentBandwidth_.addSample(stats.getLastValueRate());
00076     }
00077     eventFragmentBandwidth_.calculateStatistics();
00078     
00079     dqmEventFragmentSizes_.getStats(stats);
00080     if (stats.getSampleCount() > 0) {
00081       dqmEventFragmentBandwidth_.addSample(stats.getLastValueRate());
00082     }
00083     dqmEventFragmentBandwidth_.calculateStatistics();
00084   }
00085   
00086   
00087   void FragmentMonitorCollection::do_reset()
00088   {
00089     allFragmentSizes_.reset();
00090     eventFragmentSizes_.reset();
00091     dqmEventFragmentSizes_.reset();
00092     
00093     allFragmentBandwidth_.reset();
00094     eventFragmentBandwidth_.reset();
00095     dqmEventFragmentBandwidth_.reset();
00096   }
00097   
00098   
00099   void FragmentMonitorCollection::do_appendInfoSpaceItems(InfoSpaceItems& infoSpaceItems)
00100   {
00101     infoSpaceItems.push_back(std::make_pair("receivedFrames", &receivedFrames_));
00102     infoSpaceItems.push_back(std::make_pair("instantBandwidth", &instantBandwidth_));
00103     infoSpaceItems.push_back(std::make_pair("instantRate", &instantRate_));
00104   }
00105   
00106   
00107   void FragmentMonitorCollection::do_updateInfoSpaceItems()
00108   {
00109     MonitoredQuantity::Stats stats;
00110     
00111     allFragmentSizes_.getStats(stats);
00112     receivedFrames_ = static_cast<xdata::UnsignedInteger32>(stats.getSampleCount());
00113     instantRate_           = static_cast<xdata::Double>(stats.getSampleRate(MonitoredQuantity::RECENT));
00114     
00115     allFragmentBandwidth_.getStats(stats);
00116     instantBandwidth_ = static_cast<xdata::Double>(stats.getValueRate(MonitoredQuantity::RECENT));
00117   }
00118   
00119 } // namespace stor
00120