summaryrefslogtreecommitdiff
path: root/src/mongo/db/stats/top.h
diff options
context:
space:
mode:
authorKevin Albertson <kevin.albertson@10gen.com>2016-06-23 11:49:38 -0400
committerKevin Albertson <kevin.albertson@10gen.com>2016-06-24 17:40:02 -0400
commit6c755905c31ac284d88077500ebba021d20b3626 (patch)
tree5d9926babdd696004b830a0a1664d58cef4b9e2c /src/mongo/db/stats/top.h
parent4d14ddf06f49ff55c90451dcff2da1a6edcaf366 (diff)
downloadmongo-6c755905c31ac284d88077500ebba021d20b3626.tar.gz
SERVER-5905 Add operation latency histogram
Diffstat (limited to 'src/mongo/db/stats/top.h')
-rw-r--r--src/mongo/db/stats/top.h47
1 files changed, 45 insertions, 2 deletions
diff --git a/src/mongo/db/stats/top.h b/src/mongo/db/stats/top.h
index eb7f6ab9872..a7d543e0ae0 100644
--- a/src/mongo/db/stats/top.h
+++ b/src/mongo/db/stats/top.h
@@ -31,6 +31,9 @@
#include <boost/date_time/posix_time/posix_time.hpp>
+#include "mongo/db/commands.h"
+#include "mongo/db/operation_context.h"
+#include "mongo/db/stats/operation_latency_histogram.h"
#include "mongo/util/concurrency/mutex.h"
#include "mongo/util/net/message.h"
#include "mongo/util/string_map.h"
@@ -78,22 +81,62 @@ public:
UsageData update;
UsageData remove;
UsageData commands;
+ OperationLatencyHistogram opLatencyHistogram;
};
typedef StringMap<CollectionData> UsageMap;
public:
- void record(StringData ns, LogicalOp logicalOp, int lockType, long long micros, bool command);
+ void record(OperationContext* txn,
+ StringData ns,
+ LogicalOp logicalOp,
+ int lockType,
+ long long micros,
+ bool command,
+ Command::ReadWriteType readWriteType);
+
void append(BSONObjBuilder& b);
+
void cloneMap(UsageMap& out) const;
+
void collectionDropped(StringData ns);
+ /**
+ * Appends the collection-level latency statistics
+ */
+ void appendLatencyStats(StringData ns, BSONObjBuilder* builder);
+
+ /**
+ * Increments the global histogram.
+ */
+ void incrementGlobalLatencyStats(OperationContext* txn,
+ uint64_t latency,
+ Command::ReadWriteType readWriteType);
+
+ /**
+ * Appends the global latency statistics.
+ */
+ void appendGlobalLatencyStats(BSONObjBuilder* builder);
+
private:
void _appendToUsageMap(BSONObjBuilder& b, const UsageMap& map) const;
+
void _appendStatsEntry(BSONObjBuilder& b, const char* statsName, const UsageData& map) const;
- void _record(CollectionData& c, LogicalOp logicalOp, int lockType, long long micros);
+
+ void _record(OperationContext* txn,
+ CollectionData& c,
+ LogicalOp logicalOp,
+ int lockType,
+ long long micros,
+ Command::ReadWriteType readWriteType);
+
+ void _incrementHistogram(OperationContext* txn,
+ long long latency,
+ OperationLatencyHistogram* histogram,
+ Command::ReadWriteType readWriteType);
mutable SimpleMutex _lock;
+ OperationLatencyHistogram _globalHistogramStats;
UsageMap _usage;
std::string _lastDropped;
};