391885c4e4
Summary: Prototype stat's collection. Diff is a good estimate of what the final code will look like. A few assumptions : * Used a global static instance of the statistics object. Plan to pass it to each internal function. Static allows metrics only at app level. * In the Ticker's do not do any locking. Depend on the mutex at each function of LevelDB. If we ever remove the mutex, we should change here too. The other option is use atomic objects anyways as there won't be any contention as they will be always acquired only by one thread. * The counters are dumb, increment through lifecycle. Plan to use ods etc to get last5min stat etc. Test Plan: made changes in db_bench Ran ./db_bench --statistics=1 --num=10000 --cache_size=5000 This will print the cache hit/miss stats. Reviewers: dhruba, heyongqiang Differential Revision: https://reviews.facebook.net/D6441
50 lines
1.0 KiB
C++
50 lines
1.0 KiB
C++
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
|
|
#include <cassert>
|
|
#include <stdlib.h>
|
|
#include <vector>
|
|
|
|
#include "leveldb/statistics.h"
|
|
#include "port/port.h"
|
|
#include "util/mutexlock.h"
|
|
namespace leveldb {
|
|
|
|
class DBStatistics: public Statistics {
|
|
public:
|
|
DBStatistics() : allTickers_(TICKER_ENUM_MAX) { }
|
|
|
|
void incNumFileOpens() {
|
|
MutexLock l(&mu_);
|
|
numFileOpens_++;
|
|
}
|
|
|
|
void incNumFileCloses() {
|
|
MutexLock l(&mu_);
|
|
numFileCloses_++;
|
|
}
|
|
|
|
void incNumFileErrors() {
|
|
MutexLock l(&mu_);
|
|
numFileErrors_++;
|
|
}
|
|
|
|
long getTickerCount(Tickers tickerType) {
|
|
assert(tickerType < MAX_NO_TICKERS);
|
|
return allTickers_[tickerType].getCount();
|
|
}
|
|
|
|
void recordTick(Tickers tickerType) {
|
|
assert(tickerType < MAX_NO_TICKERS);
|
|
allTickers_[tickerType].recordTick();
|
|
}
|
|
|
|
private:
|
|
port::Mutex mu_;
|
|
std::vector<Ticker> allTickers_;
|
|
};
|
|
}
|
|
|
|
|