[MemTracker] Refactored the hierarchical structure of memtracker (#5956)

To avoid showing too many memtracker on BE web pages.
The MemTracker level now has 3 levels: OVERVIEW, TASK and VERBOSE.

OVERVIEW Mainly used for main memory consumption module such as Query/Load/Metadata.
TASK is mainly used to record the memory overhead of a single task such as a single query, load, and compaction task.
VERBOSE is used for other more detailed memtrackers.
This commit is contained in:
Mingyu Chen
2021-06-16 09:44:24 +08:00
committed by GitHub
parent 0145bdb1f0
commit d57c2344e1
26 changed files with 94 additions and 72 deletions

View File

@ -72,7 +72,7 @@ static std::shared_ptr<MemTracker> root_tracker;
static GoogleOnceType root_tracker_once = GOOGLE_ONCE_INIT;
void MemTracker::CreateRootTracker() {
root_tracker.reset(new MemTracker(-1, "Root"));
root_tracker.reset(new MemTracker(nullptr, -1, "Root", nullptr, true, MemTrackerLevel::OVERVIEW));
root_tracker->Init();
}
@ -143,7 +143,7 @@ std::shared_ptr<MemTracker> MemTracker::CreateTracker(int64_t byte_limit, const
}
MemTracker::MemTracker(int64_t byte_limit, const std::string& label)
: MemTracker(nullptr, byte_limit, label, std::shared_ptr<MemTracker>(), true, MemTrackerLevel::RELEASE) {}
: MemTracker(nullptr, byte_limit, label, std::shared_ptr<MemTracker>(), true, MemTrackerLevel::VERBOSE) {}
MemTracker::MemTracker(RuntimeProfile* profile, int64_t byte_limit, const string& label,
const std::shared_ptr<MemTracker>& parent, bool log_usage_if_zero, MemTrackerLevel level)