indexlanethroughput

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package indexlanethroughput measures how a durable index build scales as its crawl is divided across journal-writing lanes.

The measurement exists to answer one question with evidence rather than argument: does giving each lane its own journal actually raise ingest throughput, and does it leave a listing-bound crawl alone? Both halves matter. A writer-bound case that does not improve means the lanes are not worth their complexity; a listing-bound case that changes means lanes are taking credit for prefix fan-out that already existed.

Figures produced here are machine-local and directional. They are not a product benchmark and must not be quoted as one.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Corpus

type Corpus struct {
	Prefixes         int
	ObjectsPerPrefix int
	PageSize         int
	// PageLatency is the simulated per-LIST-page round trip. Zero produces the
	// writer-bound case; a large value produces the listing-bound control.
	PageLatency time.Duration
}

Corpus describes the synthetic estate a run crawls.

type Instrument

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

Instrument records aggregate provider pressure and lane activity for one run.

Every counter here is deliberately aggregate rather than per-lane: the ceilings a shared request budget promises are run-global, and a per-lane reading would look correct even when N lanes together breach them.

func (*Instrument) CrawlWall

func (in *Instrument) CrawlWall() time.Duration

CrawlWall is the crawl phase measured directly by this harness: from the first provider listing to the last observation delivered. It does not depend on the engine reporting its own duration.

func (*Instrument) ListStarts

func (in *Instrument) ListStarts() int

ListStarts is the total number of provider listing requests issued.

func (*Instrument) PeakConcurrentLanes

func (in *Instrument) PeakConcurrentLanes() int

PeakConcurrentLanes reports the largest number of lanes whose delivery windows overlapped at one instant.

Headline throughput alone cannot distinguish a genuinely parallel run from a scheduler that happened to interleave lanes; this can. A value of 1 means the lanes ran one after another whatever the wall clock says.

func (*Instrument) PeakListConcurrency

func (in *Instrument) PeakListConcurrency() int

PeakListConcurrency is the highest number of simultaneous provider listings observed across every lane.

func (*Instrument) RequestWindow

func (in *Instrument) RequestWindow() time.Duration

RequestWindow is the interval a sustained-rate ceiling applies to: from before the first request could have been admitted, to the last one observed.

It starts at the run rather than at the first observed listing on purpose. A listing is timestamped on provider entry, which is after the limiter admitted it, so scheduler delay after that first admission would shrink the window and report a breach the limiter did not commit.

type RunResult

type RunResult struct {
	Spec                RunSpec
	JournalsSealed      int
	ObjectsObserved     int64
	CrawlDuration       time.Duration
	TotalDuration       time.Duration
	PeakListConcurrency int
	PeakConcurrentLanes int
	ListStarts          int
	RequestWindow       time.Duration
}

RunResult is what one cell reports.

func Run

func Run(ctx context.Context, spec RunSpec) (RunResult, error)

Run executes one build and returns its measurements.

func (RunResult) CrawlObjectsPerSec

func (r RunResult) CrawlObjectsPerSec() float64

CrawlObjectsPerSec is the throughput the lane feature is meant to move. It is deliberately the crawl phase alone: publication runs after every lane is terminal and is unaffected by how many lanes produced the journals.

The duration is this harness's own measurement of the crawl interval, not a figure the engine reported about itself.

type RunSpec

type RunSpec struct {
	Corpus      Corpus
	Lanes       int
	Concurrency int
	RateLimit   float64
	Root        string
}

RunSpec is one cell of the sweep.

Jump to

Keyboard shortcuts

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