MCPcopy Create free account
hub / github.com/apache/impala / InitChildTracker

Method InitChildTracker

be/src/runtime/bufferpool/reservation-tracker.cc:61–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59}
60
61void ReservationTracker::InitChildTracker(RuntimeProfile* profile,
62 ReservationTracker* parent, MemTracker* mem_tracker, int64_t reservation_limit,
63 MemLimit mem_limit_mode) {
64 DCHECK(parent != nullptr);
65 DCHECK_GE(reservation_limit, 0);
66
67 lock_guard<SpinLock> l(lock_);
68 DCHECK(!initialized_);
69 parent_ = parent;
70 mem_tracker_ = mem_tracker;
71 mem_limit_mode_ = mem_limit_mode;
72
73 reservation_limit_.Store(reservation_limit);
74 reservation_.Store(0);
75 used_reservation_.Store(0);
76 child_reservations_.Store(0);
77 initialized_ = true;
78
79 if (mem_tracker_ != nullptr) {
80 MemTracker* parent_mem_tracker = GetParentMemTracker();
81 if (parent_mem_tracker != nullptr) {
82 // Make sure the parent links of the MemTrackers correspond to our parent links.
83 DCHECK_EQ(parent_mem_tracker, mem_tracker_->parent());
84 // Make sure we don't have a lower limit than the ancestor, since we don't enforce
85 // limits at lower links.
86 DCHECK_EQ(mem_tracker_->GetLowestLimit(mem_limit_mode_),
87 parent_mem_tracker->GetLowestLimit(mem_limit_mode_));
88 } else {
89 // Make sure we didn't leave a gap in the links. E.g. this tracker's grandparent
90 // shouldn't have a MemTracker.
91 ReservationTracker* ancestor = parent_;
92 while (ancestor != nullptr) {
93 DCHECK(ancestor->mem_tracker_ == nullptr);
94 ancestor = ancestor->parent_;
95 }
96 }
97 }
98
99 InitCounters(profile, reservation_limit);
100
101 CheckConsistency();
102}
103
104void ReservationTracker::InitCounters(
105 RuntimeProfile* profile, int64_t reservation_limit) {

Callers 8

PrepareMethod · 0.80
InitMethod · 0.80
InitialReservationsMethod · 0.80
InitBufferPoolStateMethod · 0.80
TEST_FFunction · 0.80
InitMethod · 0.80
ClientMethod · 0.80

Calls 3

GetLowestLimitMethod · 0.80
StoreMethod · 0.45
parentMethod · 0.45

Tested by 2

TEST_FFunction · 0.64