diff options
author | Kevin Albertson <kevin.albertson@10gen.com> | 2016-06-23 11:49:38 -0400 |
---|---|---|
committer | Kevin Albertson <kevin.albertson@10gen.com> | 2016-06-24 17:40:02 -0400 |
commit | 6c755905c31ac284d88077500ebba021d20b3626 (patch) | |
tree | 5d9926babdd696004b830a0a1664d58cef4b9e2c /src/mongo/db/stats/top.h | |
parent | 4d14ddf06f49ff55c90451dcff2da1a6edcaf366 (diff) | |
download | mongo-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.h | 47 |
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; }; |