// newBookie creates a reservations system. func newBookie(metrics *StoreMetrics) *bookie { b := &bookie{ metrics: metrics, maxReservations: envutil.EnvOrDefaultInt("COCKROACH_MAX_RESERVATIONS", defaultMaxReservations), maxReservedBytes: envutil.EnvOrDefaultBytes("COCKROACH_MAX_RESERVED_BYTES", defaultMaxReservedBytes), } b.mu.reservationsByRangeID = make(map[roachpb.RangeID]reservationRequest) return b }
// newBookie creates a reservations system and starts its timeout queue. func newBookie( clock *hlc.Clock, stopper *stop.Stopper, metrics *StoreMetrics, reservationTimeout time.Duration, ) *bookie { b := &bookie{ clock: clock, metrics: metrics, reservationTimeout: reservationTimeout, maxReservations: envutil.EnvOrDefaultInt("COCKROACH_MAX_RESERVATIONS", defaultMaxReservations), maxReservedBytes: envutil.EnvOrDefaultBytes("COCKROACH_MAX_RESERVED_BYTES", defaultMaxReservedBytes), } b.mu.reservationsByRangeID = make(map[roachpb.RangeID]*reservation) b.start(stopper) return b }
noteworthyUsageBytes int64 curBytesCount *metric.Counter maxBytesHist *metric.Histogram } // maxAllocatedButUnusedMemoryBlocks determines the maximum difference // between the amount of memory used by a monitor and the amount of // memory reserved at the upstream pool before the monitor // relinquishes the memory back to the pool. This is useful so that a // monitor currently at the boundary of a block does not cause // contention when accounts cause its allocation counter to grow and // shrink slightly beyond and beneath an allocation block // boundary. The difference is expressed as a number of blocks of size // `poolAllocationSize`. var maxAllocatedButUnusedMemoryBlocks = envutil.EnvOrDefaultInt("COCKROACH_MAX_ALLOCATED_UNUSED_BLOCKS", 10) // DefaultPoolAllocationSize specifies the unit of allocation used by // a monitor to reserve and release memory to a pool. var DefaultPoolAllocationSize = envutil.EnvOrDefaultInt64("COCKROACH_MEMORY_ALLOCATION_CHUNK_SIZE", 10*1024) // MakeMonitor creates a new monitor. // Arguments: // - name is used to annotate log messages, can be used to distinguish // monitors. // // - curCount and maxHist are the metric objects to update with usage // statistics. // // - increment is the block size used for upstream allocations from // the pool. Note: if set to 0 or lower, the default pool allocation