mon

package
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2017 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultPoolAllocationSize = envutil.EnvOrDefaultInt64("COCKROACH_ALLOCATION_CHUNK_SIZE", 10*1024)

DefaultPoolAllocationSize specifies the unit of allocation used by a monitor to reserve and release bytes to a pool.

Functions

This section is empty.

Types

type BoundAccount

type BoundAccount struct {
	BytesAccount
	// contains filtered or unexported fields
}

BoundAccount implements a BytesAccount attached to a specific monitor.

func MakeStandaloneBudget

func MakeStandaloneBudget(capacity int64) BoundAccount

MakeStandaloneBudget creates a BoundAccount suitable for root monitors.

func (*BoundAccount) Clear

func (b *BoundAccount) Clear(ctx context.Context)

Clear is an accessor for b.mon.ClearAccount.

func (*BoundAccount) Close

func (b *BoundAccount) Close(ctx context.Context)

Close is an accessor for b.mon.CloseAccount.

func (*BoundAccount) Grow

func (b *BoundAccount) Grow(ctx context.Context, x int64) error

Grow is an accessor for b.mon.GrowAccount.

func (*BoundAccount) ResizeItem

func (b *BoundAccount) ResizeItem(ctx context.Context, oldSz, newSz int64) error

ResizeItem is an accessor for b.mon.ResizeItem.

func (*BoundAccount) Shrink added in v1.1.0

func (b *BoundAccount) Shrink(ctx context.Context, x int64)

Shrink is an accessor for b.mon.ShrinkAccount.

type BytesAccount added in v1.1.0

type BytesAccount struct {
	// contains filtered or unexported fields
}

BytesAccount tracks the cumulated allocations for one client of a pool or monitor. BytesMonitor has an account to its pool; BytesMonitor clients have an account to the monitor. This allows each client to release all the bytes at once when it completes its work.

See the comments in bytes_usage.go for a fuller picture of how these accounts are used in CockroachDB.

func (BytesAccount) CurrentlyAllocated added in v1.1.0

func (acc BytesAccount) CurrentlyAllocated() int64

CurrentlyAllocated returns the number of bytes currently allocated through this account.

type BytesMonitor added in v1.1.0

type BytesMonitor struct {
	// contains filtered or unexported fields
}

BytesMonitor defines an object that can track and limit memory/disk usage by other CockroachDB components. The monitor must be set up via Start/Stop before and after use. The various counters express sizes in bytes.

func MakeMonitor

func MakeMonitor(
	name string,
	res Resource,
	curCount *metric.Counter,
	maxHist *metric.Histogram,
	increment int64,
	noteworthy int64,
) BytesMonitor

MakeMonitor creates a new monitor. Arguments:

  • name is used to annotate log messages, can be used to distinguish monitors.
  • resource specifies what kind of resource the monitor is tracking allocations for (e.g. memory or disk).
  • 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 size is used.
  • noteworthy determines the minimum total allocated size beyond which the monitor starts to log increases. Use 0 to always log or math.MaxInt64 to never log.

func MakeMonitorInheritWithLimit added in v1.1.0

func MakeMonitorInheritWithLimit(name string, limit int64, m *BytesMonitor) BytesMonitor

MakeMonitorInheritWithLimit creates a new monitor with a limit local to this monitor with all other attributes inherited from the passed in monitor.

func MakeMonitorWithLimit added in v1.1.0

func MakeMonitorWithLimit(
	name string,
	res Resource,
	limit int64,
	curCount *metric.Counter,
	maxHist *metric.Histogram,
	increment int64,
	noteworthy int64,
) BytesMonitor

MakeMonitorWithLimit creates a new monitor with a limit local to this monitor.

func MakeUnlimitedMonitor

func MakeUnlimitedMonitor(
	ctx context.Context,
	name string,
	res Resource,
	curCount *metric.Counter,
	maxHist *metric.Histogram,
	noteworthy int64,
) BytesMonitor

MakeUnlimitedMonitor creates a new monitor and starts the monitor in "detached" mode without a pool and without a maximum budget.

func (*BytesMonitor) ClearAccount added in v1.1.0

func (mm *BytesMonitor) ClearAccount(ctx context.Context, acc *BytesAccount)

ClearAccount releases all the cumulated allocations of an account at once and primes it for reuse.

func (*BytesMonitor) CloseAccount added in v1.1.0

func (mm *BytesMonitor) CloseAccount(ctx context.Context, acc *BytesAccount)

CloseAccount releases all the cumulated allocations of an account at once.

func (*BytesMonitor) EmergencyStop added in v1.1.0

func (mm *BytesMonitor) EmergencyStop(ctx context.Context)

EmergencyStop completes a monitoring region, and disables checking that all accounts have been closed.

func (*BytesMonitor) GetCurrentAllocationForTesting added in v1.1.0

func (mm *BytesMonitor) GetCurrentAllocationForTesting() int64

GetCurrentAllocationForTesting returns the number of bytes that have currently been allocated in the BytesMonitor. Intended for use in testing.

func (*BytesMonitor) GrowAccount added in v1.1.0

func (mm *BytesMonitor) GrowAccount(ctx context.Context, acc *BytesAccount, extraSize int64) error

GrowAccount requests a new allocation in an account.

func (*BytesMonitor) MakeBoundAccount added in v1.1.0

func (mm *BytesMonitor) MakeBoundAccount() BoundAccount

MakeBoundAccount creates a BoundAccount connected to the given monitor.

func (*BytesMonitor) OpenAccount added in v1.1.0

func (mm *BytesMonitor) OpenAccount(_ *BytesAccount)

OpenAccount creates a new empty account.

func (*BytesMonitor) OpenAndInitAccount added in v1.1.0

func (mm *BytesMonitor) OpenAndInitAccount(
	ctx context.Context, acc *BytesAccount, initialAllocation int64,
) error

OpenAndInitAccount creates a new account and pre-allocates some initial amount of bytes.

func (*BytesMonitor) ResizeItem added in v1.1.0

func (mm *BytesMonitor) ResizeItem(
	ctx context.Context, acc *BytesAccount, oldSize, newSize int64,
) error

ResizeItem requests a size change for an object already registered in an account. The reservation is not modified if the new allocation is refused, so that the caller can keep using the original item without an accounting error. This is better than calling ClearAccount then GrowAccount because if the Clear succeeds and the Grow fails the original item becomes invisible from the perspective of the monitor.

func (*BytesMonitor) ShrinkAccount added in v1.1.0

func (mm *BytesMonitor) ShrinkAccount(ctx context.Context, acc *BytesAccount, delta int64)

ShrinkAccount releases part of the cumulated allocations by the specified size.

func (*BytesMonitor) Start added in v1.1.0

func (mm *BytesMonitor) Start(ctx context.Context, pool *BytesMonitor, reserved BoundAccount)

Start begins a monitoring region. Arguments:

  • pool is the upstream monitor that provision allocations exceeding the pre-reserved budget. If pool is nil, no upstream allocations are possible and the pre-reserved budget determines the entire capacity of this monitor.

- reserved is the pre-reserved budget (see above).

func (*BytesMonitor) Stop added in v1.1.0

func (mm *BytesMonitor) Stop(ctx context.Context)

Stop completes a monitoring region.

type Resource added in v1.1.0

type Resource interface {
	NewBudgetExceededError(requestedBytes int64, budgetBytes int64) error
}

Resource is an interface used to abstract the specifics of tracking bytes usage by different types of resources.

var DiskResource Resource = diskResource{}

DiskResource is a utility singleton used as an argument when creating a BytesMonitor to indicate that the monitor will be tracking disk usage.

var MemoryResource Resource = memoryResource{}

MemoryResource is a utility singleton used as an argument when creating a BytesMonitor to indicate that the monitor will be tracking memory usage.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL