// 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 #include #include #include #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& dbs, const std::unordered_set cache_set, std::map* usage_by_type); }; } // namespace rocksdb #endif // !ROCKSDB_LITE