IMPALA-3201: reservation implementation for new buffer pool
This patch implements the reservation bookkeeping logic for the new
buffer pool. The reservations are always guaranteed and any buffer/page
allocations require a reservation. Reservations are tracked via a
hierarchy of ReservationTrackers.
Eventually ReservationTrackers should become the main mechanism for
memory accounting, once all runtime memory is handled by the buffer
pool. In the meantime, query/process limits are enforced and memory
is reported through the preexisting MemTracker hierarchy.
Reservations are accounted as consumption against a MemTracker because
the memory is committed and cannot be used for other purposes. The
MemTracker then uses the counters from the ReservationTracker to log
information about buffer-pool memory down to the operator level.
Includes basic tests for buffer pool client registration and various
Reviewed-by: Tim Armstrong <firstname.lastname@example.org>
Tested-by: Internal Jenkins