Go to the documentation of this file.00001
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 }
00120