blob: c6128909e90372042d2697e8f446a20ce6e0ba48 [file] [log] [blame]
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
// This source code is licensed under both the GPLv2 (found in the
// COPYING file in the root directory) and Apache 2.0 License
// (found in the LICENSE.Apache file in the root directory).
#ifndef ROCKSDB_LITE
#pragma once
#include <map>
#include <string>
#include <unordered_set>
#include <vector>
#include "rocksdb/cache.h"
#include "rocksdb/db.h"
namespace rocksdb {
// Returns the current memory usage of the specified DB instances.
class MemoryUtil {
public:
enum UsageType : int {
// Memory usage of all the mem-tables.
kMemTableTotal = 0,
// Memory usage of those un-flushed mem-tables.
kMemTableUnFlushed = 1,
// Memory usage of all the table readers.
kTableReadersTotal = 2,
// Memory usage by Cache.
kCacheTotal = 3,
kNumUsageTypes = 4
};
// Returns the approximate memory usage of different types in the input
// list of DBs and Cache set. For instance, in the output map
// usage_by_type, usage_by_type[kMemTableTotal] will store the memory
// usage of all the mem-tables from all the input rocksdb instances.
//
// Note that for memory usage inside Cache class, we will
// only report the usage of the input "cache_set" without
// including those Cache usage inside the input list "dbs"
// of DBs.
static Status GetApproximateMemoryUsageByType(
const std::vector<DB*>& dbs,
const std::unordered_set<const Cache*> cache_set,
std::map<MemoryUtil::UsageType, uint64_t>* usage_by_type);
};
} // namespace rocksdb
#endif // !ROCKSDB_LITE