simulator

package
v0.4.21 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2024 License: Apache-2.0 Imports: 40 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthSimulator        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowSimulator          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupSimulator = fmt.Errorf("proto: unexpected end of group")
)

Functions

func EventSequenceSummary added in v0.3.100

func EventSequenceSummary(eventSequence *armadaevents.EventSequence) string

func EventSequencesSummary added in v0.3.100

func EventSequencesSummary(eventSequences []*armadaevents.EventSequence) string

func EventSummary added in v0.3.100

func EventSummary(event *armadaevents.EventSequence_Event) string

func GetBasicSchedulingConfig added in v0.3.100

func GetBasicSchedulingConfig() configuration.SchedulingConfig

func JobRunLeased added in v0.3.100

func JobRunLeased(n int, queue string, jobSetName string) *armadaevents.EventSequence

func JobRunPreempted added in v0.3.100

func JobRunPreempted(n int, queue string, jobSetName string) *armadaevents.EventSequence

func JobSucceeded added in v0.3.100

func JobSucceeded(n int, queue string, jobSetName string) *armadaevents.EventSequence

func RepeatEvents added in v0.4.9

func SchedulingConfigFromFilePath

func SchedulingConfigFromFilePath(filePath string) (configuration.SchedulingConfig, error)

func SchedulingConfigsByFilePathFromPattern added in v0.3.100

func SchedulingConfigsByFilePathFromPattern(pattern string) (map[string]configuration.SchedulingConfig, error)

func SchedulingConfigsFromFilePaths

func SchedulingConfigsFromFilePaths(filePaths []string) ([]configuration.SchedulingConfig, error)

func SchedulingConfigsFromPattern

func SchedulingConfigsFromPattern(pattern string) ([]configuration.SchedulingConfig, error)

func SubmitJob added in v0.3.100

func SubmitJob(n int, queue string, jobSetName string) *armadaevents.EventSequence

Types

type Cluster added in v0.3.100

type Cluster struct {
	Name          string          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	NodeTemplates []*NodeTemplate `protobuf:"bytes,2,rep,name=node_templates,json=nodeTemplates,proto3" json:"nodeTemplates,omitempty"`
}

func Executor32Cpu added in v0.3.100

func Executor32Cpu(numNodes int64) *Cluster

func ExecutorGpu added in v0.3.100

func ExecutorGpu(numNodes int64) *Cluster

func WithNodeTemplatesExecutor added in v0.3.100

func WithNodeTemplatesExecutor(executor *Cluster, nodeTemplates ...*NodeTemplate) *Cluster

func (*Cluster) Descriptor added in v0.3.100

func (*Cluster) Descriptor() ([]byte, []int)

func (*Cluster) GetName added in v0.3.100

func (m *Cluster) GetName() string

func (*Cluster) GetNodeTemplates added in v0.3.100

func (m *Cluster) GetNodeTemplates() []*NodeTemplate

func (*Cluster) Marshal added in v0.3.100

func (m *Cluster) Marshal() (dAtA []byte, err error)

func (*Cluster) MarshalTo added in v0.3.100

func (m *Cluster) MarshalTo(dAtA []byte) (int, error)

func (*Cluster) MarshalToSizedBuffer added in v0.3.100

func (m *Cluster) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Cluster) ProtoMessage added in v0.3.100

func (*Cluster) ProtoMessage()

func (*Cluster) Reset added in v0.3.100

func (m *Cluster) Reset()

func (*Cluster) Size added in v0.3.100

func (m *Cluster) Size() (n int)

func (*Cluster) String added in v0.3.100

func (m *Cluster) String() string

func (*Cluster) Unmarshal added in v0.3.100

func (m *Cluster) Unmarshal(dAtA []byte) error

func (*Cluster) XXX_DiscardUnknown added in v0.3.100

func (m *Cluster) XXX_DiscardUnknown()

func (*Cluster) XXX_Marshal added in v0.3.100

func (m *Cluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Cluster) XXX_Merge added in v0.3.100

func (m *Cluster) XXX_Merge(src proto.Message)

func (*Cluster) XXX_Size added in v0.3.100

func (m *Cluster) XXX_Size() int

func (*Cluster) XXX_Unmarshal added in v0.3.100

func (m *Cluster) XXX_Unmarshal(b []byte) error

type ClusterGroup added in v0.3.100

type ClusterGroup struct {
	Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
}

func ExecutorGroup32Cpu added in v0.3.100

func ExecutorGroup32Cpu(numExecutors, numNodesPerExecutor int64) *ClusterGroup

func ExecutorGroupGpu added in v0.3.100

func ExecutorGroupGpu(numExecutors, numNodesPerExecutor int64) *ClusterGroup

func WithExecutorsExecutorGroup added in v0.3.100

func WithExecutorsExecutorGroup(executorGroup *ClusterGroup, executors ...*Cluster) *ClusterGroup

func (*ClusterGroup) Descriptor added in v0.3.100

func (*ClusterGroup) Descriptor() ([]byte, []int)

func (*ClusterGroup) GetClusters added in v0.3.100

func (m *ClusterGroup) GetClusters() []*Cluster

func (*ClusterGroup) Marshal added in v0.3.100

func (m *ClusterGroup) Marshal() (dAtA []byte, err error)

func (*ClusterGroup) MarshalTo added in v0.3.100

func (m *ClusterGroup) MarshalTo(dAtA []byte) (int, error)

func (*ClusterGroup) MarshalToSizedBuffer added in v0.3.100

func (m *ClusterGroup) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ClusterGroup) ProtoMessage added in v0.3.100

func (*ClusterGroup) ProtoMessage()

func (*ClusterGroup) Reset added in v0.3.100

func (m *ClusterGroup) Reset()

func (*ClusterGroup) Size added in v0.3.100

func (m *ClusterGroup) Size() (n int)

func (*ClusterGroup) String added in v0.3.100

func (m *ClusterGroup) String() string

func (*ClusterGroup) Unmarshal added in v0.3.100

func (m *ClusterGroup) Unmarshal(dAtA []byte) error

func (*ClusterGroup) XXX_DiscardUnknown added in v0.3.100

func (m *ClusterGroup) XXX_DiscardUnknown()

func (*ClusterGroup) XXX_Marshal added in v0.3.100

func (m *ClusterGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ClusterGroup) XXX_Merge added in v0.3.100

func (m *ClusterGroup) XXX_Merge(src proto.Message)

func (*ClusterGroup) XXX_Size added in v0.3.100

func (m *ClusterGroup) XXX_Size() int

func (*ClusterGroup) XXX_Unmarshal added in v0.3.100

func (m *ClusterGroup) XXX_Unmarshal(b []byte) error

type ClusterSpec added in v0.3.100

type ClusterSpec struct {
	Name                             string             `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Pools                            []*Pool            `protobuf:"bytes,2,rep,name=pools,proto3" json:"pools,omitempty"`
	WorkflowManagerDelayDistribution ShiftedExponential `` /* 148-byte string literal not displayed */
	PendingDelayDistribution         ShiftedExponential `protobuf:"bytes,4,opt,name=pending_delay_distribution,json=pendingDelayDistribution,proto3" json:"pendingDelayDistribution"`
}

func ClusterSpecFromFilePath added in v0.3.100

func ClusterSpecFromFilePath(filePath string) (*ClusterSpec, error)

func ClusterSpecsFromFilePaths added in v0.3.100

func ClusterSpecsFromFilePaths(filePaths []string) ([]*ClusterSpec, error)

func ClusterSpecsFromPattern added in v0.3.100

func ClusterSpecsFromPattern(pattern string) ([]*ClusterSpec, error)

func GetTwoPoolTwoNodeCluster added in v0.3.100

func GetTwoPoolTwoNodeCluster() *ClusterSpec

func (*ClusterSpec) Descriptor added in v0.3.100

func (*ClusterSpec) Descriptor() ([]byte, []int)

func (*ClusterSpec) GetName added in v0.3.100

func (m *ClusterSpec) GetName() string

func (*ClusterSpec) GetPendingDelayDistribution added in v0.3.100

func (m *ClusterSpec) GetPendingDelayDistribution() ShiftedExponential

func (*ClusterSpec) GetPools added in v0.3.100

func (m *ClusterSpec) GetPools() []*Pool

func (*ClusterSpec) GetWorkflowManagerDelayDistribution added in v0.3.100

func (m *ClusterSpec) GetWorkflowManagerDelayDistribution() ShiftedExponential

func (*ClusterSpec) Marshal added in v0.3.100

func (m *ClusterSpec) Marshal() (dAtA []byte, err error)

func (*ClusterSpec) MarshalTo added in v0.3.100

func (m *ClusterSpec) MarshalTo(dAtA []byte) (int, error)

func (*ClusterSpec) MarshalToSizedBuffer added in v0.3.100

func (m *ClusterSpec) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ClusterSpec) ProtoMessage added in v0.3.100

func (*ClusterSpec) ProtoMessage()

func (*ClusterSpec) Reset added in v0.3.100

func (m *ClusterSpec) Reset()

func (*ClusterSpec) Size added in v0.3.100

func (m *ClusterSpec) Size() (n int)

func (*ClusterSpec) String added in v0.3.100

func (m *ClusterSpec) String() string

func (*ClusterSpec) TotalResources added in v0.3.100

func (cs *ClusterSpec) TotalResources() schedulerobjects.ResourceList

TotalResources returns the total resources available across all nodes in the ClusterSpec.

func (*ClusterSpec) Unmarshal added in v0.3.100

func (m *ClusterSpec) Unmarshal(dAtA []byte) error

func (*ClusterSpec) XXX_DiscardUnknown added in v0.3.100

func (m *ClusterSpec) XXX_DiscardUnknown()

func (*ClusterSpec) XXX_Marshal added in v0.3.100

func (m *ClusterSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ClusterSpec) XXX_Merge added in v0.3.100

func (m *ClusterSpec) XXX_Merge(src proto.Message)

func (*ClusterSpec) XXX_Size added in v0.3.100

func (m *ClusterSpec) XXX_Size() int

func (*ClusterSpec) XXX_Unmarshal added in v0.3.100

func (m *ClusterSpec) XXX_Unmarshal(b []byte) error

type Event

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

Event is a simulator-internal event.

type EventLog

type EventLog []Event

func (EventLog) Len

func (el EventLog) Len() int

func (EventLog) Less

func (el EventLog) Less(i, j int) bool

func (*EventLog) Pop

func (el *EventLog) Pop() any

func (*EventLog) Push

func (el *EventLog) Push(x any)

func (EventLog) Swap

func (el EventLog) Swap(i, j int)

type FlattenedArmadaEvent added in v0.4.1

type FlattenedArmadaEvent struct {
	Time                  int64   `parquet:"name=elapsed_time, type=INT64"`
	Queue                 string  `parquet:"name=queue, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY"`
	JobSet                string  `parquet:"name=job_set, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY"`
	JobId                 string  `parquet:"name=job_id, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY"`
	RunIndex              int     `parquet:"name=run_index, type=INT32"`
	NumRuns               int     `parquet:"name=num_runs, type=INT32"`
	PriorityClass         string  `parquet:"name=priority_class, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY"`
	PreviousEventType     int     `parquet:"name=previous_event_type, type=INT32"`
	EventType             int     `parquet:"name=event_type, type=INT32"`
	SecondsSinceLastEvent float64 `parquet:"name=seconds_since_last_event, type=DOUBLE"`
	Cpu                   float64 `parquet:"name=cpu, type=DOUBLE"`
	Memory                float64 `parquet:"name=memory, type=DOUBLE"`
	Gpu                   float64 `parquet:"name=gpu, type=DOUBLE"`
	EphemeralStorage      float64 `parquet:"name=ephemeral_storage, type=DOUBLE"`
	ExitCode              int     `parquet:"name=exit_code, type=INT32"`
}

type JobTemplate

type JobTemplate struct {
	// Number of jobs to create from this template.
	Number int64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
	// Number of jobs created from this template that have succeeded.
	// Maintained by the simulator.
	NumberSuccessful int64 `protobuf:"varint,2,opt,name=numberSuccessful,proto3" json:"numberSuccessful,omitempty"`
	// Queue to which this template belongs. Populated automatically.
	Queue string `protobuf:"bytes,3,opt,name=queue,proto3" json:"queue,omitempty"`
	// Unique id for this template. An id is generated if empty.
	Id                string `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"`
	JobSet            string `protobuf:"bytes,5,opt,name=job_set,json=jobSet,proto3" json:"jobSet,omitempty"`
	QueuePriority     uint32 `protobuf:"varint,6,opt,name=queue_priority,json=queuePriority,proto3" json:"queuePriority,omitempty"`
	PriorityClassName string `protobuf:"bytes,7,opt,name=priority_class_name,json=priorityClassName,proto3" json:"priorityClassName,omitempty"`
	// Scheduling requirements for the pod embedded in the job.
	Requirements schedulerobjects.PodRequirements `protobuf:"bytes,8,opt,name=requirements,proto3" json:"requirements"`
	// List of template ids that must be completed before this template is submitted.
	Dependencies []string `protobuf:"bytes,9,rep,name=dependencies,proto3" json:"dependencies,omitempty"`
	// Earliest time at which jobs from this template are submitted.
	// Measured from the start of the simulation.
	EarliestSubmitTime time.Duration `protobuf:"bytes,10,opt,name=earliest_submit_time,json=earliestSubmitTime,proto3,stdduration" json:"earliestSubmitTime"`
	// Earliest time job can be submitted from when all its dependencies have completed.
	// This option is meant to model thinking or processing time, where some fixed amount of time
	// needs to be spent between dependencies completing and the next batch of jobs being ready to submit.
	EarliestSubmitTimeFromDependencyCompletion time.Duration `` /* 193-byte string literal not displayed */
	// Job runtimes are assumed to follow a shifted exponential distribution
	// i.e., to be a fixed constant (runtime_minimum) plus a random amount of time
	// drawn from an exponential distribution with known mean (runtime_tail_mean).
	//
	// The shifted-exponential distribution strikes a good balance between simplicity and accuracy;
	// see https://bora.uib.no/bora-xmlui/bitstream/handle/11250/3014726/drthesis_2022_severinson.pdf?sequence=2
	// for a discussion on the topic.
	RuntimeDistribution ShiftedExponential `protobuf:"bytes,12,opt,name=runtime_distribution,json=runtimeDistribution,proto3" json:"runtimeDistribution"`
}

func JobTemplate1Cpu added in v0.3.100

func JobTemplate1Cpu(n int64, jobSet, priorityClassName string) *JobTemplate

func JobTemplate32Cpu added in v0.3.100

func JobTemplate32Cpu(n int64, jobSet, priorityClassName string) *JobTemplate

func WithDependenciesJobTemplate added in v0.3.100

func WithDependenciesJobTemplate(jobTemplate *JobTemplate, dependencyIds ...string) *JobTemplate

func WithIdJobTemplate added in v0.3.100

func WithIdJobTemplate(jobTemplate *JobTemplate, id string) *JobTemplate

func WithMinSubmitTimeJobTemplate added in v0.3.100

func WithMinSubmitTimeJobTemplate(jobTemplate *JobTemplate, minSubmitTime time.Duration) *JobTemplate

func (*JobTemplate) Descriptor

func (*JobTemplate) Descriptor() ([]byte, []int)

func (*JobTemplate) GetDependencies

func (m *JobTemplate) GetDependencies() []string

func (*JobTemplate) GetEarliestSubmitTime added in v0.3.100

func (m *JobTemplate) GetEarliestSubmitTime() time.Duration

func (*JobTemplate) GetEarliestSubmitTimeFromDependencyCompletion added in v0.3.100

func (m *JobTemplate) GetEarliestSubmitTimeFromDependencyCompletion() time.Duration

func (*JobTemplate) GetId

func (m *JobTemplate) GetId() string

func (*JobTemplate) GetJobSet

func (m *JobTemplate) GetJobSet() string

func (*JobTemplate) GetNumber

func (m *JobTemplate) GetNumber() int64

func (*JobTemplate) GetNumberSuccessful

func (m *JobTemplate) GetNumberSuccessful() int64

func (*JobTemplate) GetPriorityClassName

func (m *JobTemplate) GetPriorityClassName() string

func (*JobTemplate) GetQueue

func (m *JobTemplate) GetQueue() string

func (*JobTemplate) GetQueuePriority

func (m *JobTemplate) GetQueuePriority() uint32

func (*JobTemplate) GetRequirements

func (m *JobTemplate) GetRequirements() schedulerobjects.PodRequirements

func (*JobTemplate) GetRuntimeDistribution added in v0.3.100

func (m *JobTemplate) GetRuntimeDistribution() ShiftedExponential

func (*JobTemplate) Marshal

func (m *JobTemplate) Marshal() (dAtA []byte, err error)

func (*JobTemplate) MarshalTo

func (m *JobTemplate) MarshalTo(dAtA []byte) (int, error)

func (*JobTemplate) MarshalToSizedBuffer

func (m *JobTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*JobTemplate) ProtoMessage

func (*JobTemplate) ProtoMessage()

func (*JobTemplate) Reset

func (m *JobTemplate) Reset()

func (*JobTemplate) Size

func (m *JobTemplate) Size() (n int)

func (*JobTemplate) String

func (m *JobTemplate) String() string

func (*JobTemplate) Unmarshal

func (m *JobTemplate) Unmarshal(dAtA []byte) error

func (*JobTemplate) XXX_DiscardUnknown

func (m *JobTemplate) XXX_DiscardUnknown()

func (*JobTemplate) XXX_Marshal

func (m *JobTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*JobTemplate) XXX_Merge

func (m *JobTemplate) XXX_Merge(src proto.Message)

func (*JobTemplate) XXX_Size

func (m *JobTemplate) XXX_Size() int

func (*JobTemplate) XXX_Unmarshal

func (m *JobTemplate) XXX_Unmarshal(b []byte) error

type MetricsCollector added in v0.3.100

type MetricsCollector struct {
	OverallMetrics MetricsVector
	MetricsByQueue map[string]MetricsVector
	// If non-zero, log a summary every this many events.
	LogSummaryInterval int
	// contains filtered or unexported fields
}

func NewMetricsCollector added in v0.3.100

func NewMetricsCollector(c <-chan StateTransition) *MetricsCollector

func (*MetricsCollector) Run added in v0.3.100

func (*MetricsCollector) String added in v0.3.100

func (mc *MetricsCollector) String() string

type MetricsVector added in v0.3.100

type MetricsVector struct {
	NumEvents                         int
	NumSubmitEvents                   int
	NumLeasedEvents                   int
	NumPreemptedEvents                int
	NumJobSucceededEvents             int
	TimeOfMostRecentEvent             time.Duration
	TimeOfMostRecentJobSubmittedEvent time.Duration
	TimeOfMostRecentJobLeasedEvent    time.Duration
	TimeOfMostRecentJobPreemptedEvent time.Duration
	TimeOfMostRecentJobSucceededEvent time.Duration
}

func (MetricsVector) String added in v0.3.100

func (m MetricsVector) String() string

type NodeTemplate

type NodeTemplate struct {
	Number         int64                         `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
	Taints         []v1.Taint                    `protobuf:"bytes,2,rep,name=taints,proto3" json:"taints"`
	Labels         map[string]string             `` /* 153-byte string literal not displayed */
	TotalResources schedulerobjects.ResourceList `protobuf:"bytes,4,opt,name=total_resources,json=totalResources,proto3" json:"totalResources"`
}

func NodeTemplate32Cpu added in v0.3.100

func NodeTemplate32Cpu(n int64) *NodeTemplate

func NodeTemplateGpu added in v0.3.100

func NodeTemplateGpu(n int64) *NodeTemplate

func (*NodeTemplate) Descriptor

func (*NodeTemplate) Descriptor() ([]byte, []int)

func (*NodeTemplate) GetLabels

func (m *NodeTemplate) GetLabels() map[string]string

func (*NodeTemplate) GetNumber

func (m *NodeTemplate) GetNumber() int64

func (*NodeTemplate) GetTaints

func (m *NodeTemplate) GetTaints() []v1.Taint

func (*NodeTemplate) GetTotalResources

func (m *NodeTemplate) GetTotalResources() schedulerobjects.ResourceList

func (*NodeTemplate) Marshal

func (m *NodeTemplate) Marshal() (dAtA []byte, err error)

func (*NodeTemplate) MarshalTo

func (m *NodeTemplate) MarshalTo(dAtA []byte) (int, error)

func (*NodeTemplate) MarshalToSizedBuffer

func (m *NodeTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*NodeTemplate) ProtoMessage

func (*NodeTemplate) ProtoMessage()

func (*NodeTemplate) Reset

func (m *NodeTemplate) Reset()

func (*NodeTemplate) Size

func (m *NodeTemplate) Size() (n int)

func (*NodeTemplate) String

func (m *NodeTemplate) String() string

func (*NodeTemplate) Unmarshal

func (m *NodeTemplate) Unmarshal(dAtA []byte) error

func (*NodeTemplate) XXX_DiscardUnknown

func (m *NodeTemplate) XXX_DiscardUnknown()

func (*NodeTemplate) XXX_Marshal

func (m *NodeTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*NodeTemplate) XXX_Merge

func (m *NodeTemplate) XXX_Merge(src proto.Message)

func (*NodeTemplate) XXX_Size

func (m *NodeTemplate) XXX_Size() int

func (*NodeTemplate) XXX_Unmarshal

func (m *NodeTemplate) XXX_Unmarshal(b []byte) error

type Pool

type Pool struct {
	Name          string          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	ClusterGroups []*ClusterGroup `protobuf:"bytes,2,rep,name=cluster_groups,json=clusterGroups,proto3" json:"clusterGroups,omitempty"`
}

func Pool32Cpu added in v0.3.100

func Pool32Cpu(name string, numExecutorGroups, numExecutorsPerGroup, numNodesPerExecutor int64) *Pool

func PoolGpu added in v0.3.100

func PoolGpu(name string, numExecutorGroups, numExecutorsPerGroup, numNodesPerExecutor int64) *Pool

func WithExecutorGroupsPool added in v0.3.100

func WithExecutorGroupsPool(pool *Pool, executorGroups ...*ClusterGroup) *Pool

func (*Pool) Descriptor

func (*Pool) Descriptor() ([]byte, []int)

func (*Pool) GetClusterGroups added in v0.3.100

func (m *Pool) GetClusterGroups() []*ClusterGroup

func (*Pool) GetName

func (m *Pool) GetName() string

func (*Pool) Marshal

func (m *Pool) Marshal() (dAtA []byte, err error)

func (*Pool) MarshalTo

func (m *Pool) MarshalTo(dAtA []byte) (int, error)

func (*Pool) MarshalToSizedBuffer

func (m *Pool) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Pool) ProtoMessage

func (*Pool) ProtoMessage()

func (*Pool) Reset

func (m *Pool) Reset()

func (*Pool) Size

func (m *Pool) Size() (n int)

func (*Pool) String

func (m *Pool) String() string

func (*Pool) Unmarshal

func (m *Pool) Unmarshal(dAtA []byte) error

func (*Pool) XXX_DiscardUnknown

func (m *Pool) XXX_DiscardUnknown()

func (*Pool) XXX_Marshal

func (m *Pool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Pool) XXX_Merge

func (m *Pool) XXX_Merge(src proto.Message)

func (*Pool) XXX_Size

func (m *Pool) XXX_Size() int

func (*Pool) XXX_Unmarshal

func (m *Pool) XXX_Unmarshal(b []byte) error

type Queue

type Queue struct {
	Name         string         `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Weight       float64        `protobuf:"fixed64,2,opt,name=weight,proto3" json:"weight,omitempty"`
	JobTemplates []*JobTemplate `protobuf:"bytes,3,rep,name=job_templates,json=jobTemplates,proto3" json:"jobTemplates,omitempty"`
}

func WithJobTemplatesQueue added in v0.3.100

func WithJobTemplatesQueue(queue *Queue, jobTemplate ...*JobTemplate) *Queue

func (*Queue) Descriptor

func (*Queue) Descriptor() ([]byte, []int)

func (*Queue) GetJobTemplates

func (m *Queue) GetJobTemplates() []*JobTemplate

func (*Queue) GetName

func (m *Queue) GetName() string

func (*Queue) GetWeight

func (m *Queue) GetWeight() float64

func (*Queue) Marshal

func (m *Queue) Marshal() (dAtA []byte, err error)

func (*Queue) MarshalTo

func (m *Queue) MarshalTo(dAtA []byte) (int, error)

func (*Queue) MarshalToSizedBuffer

func (m *Queue) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Queue) ProtoMessage

func (*Queue) ProtoMessage()

func (*Queue) Reset

func (m *Queue) Reset()

func (*Queue) Size

func (m *Queue) Size() (n int)

func (*Queue) String

func (m *Queue) String() string

func (*Queue) Unmarshal

func (m *Queue) Unmarshal(dAtA []byte) error

func (*Queue) XXX_DiscardUnknown

func (m *Queue) XXX_DiscardUnknown()

func (*Queue) XXX_Marshal

func (m *Queue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Queue) XXX_Merge

func (m *Queue) XXX_Merge(src proto.Message)

func (*Queue) XXX_Size

func (m *Queue) XXX_Size() int

func (*Queue) XXX_Unmarshal

func (m *Queue) XXX_Unmarshal(b []byte) error

type ShiftedExponential added in v0.3.100

type ShiftedExponential struct {
	Minimum  time.Duration `protobuf:"bytes,1,opt,name=minimum,proto3,stdduration" json:"minimum"`
	TailMean time.Duration `protobuf:"bytes,2,opt,name=tail_mean,json=tailMean,proto3,stdduration" json:"tailMean"`
}

func (*ShiftedExponential) Descriptor added in v0.3.100

func (*ShiftedExponential) Descriptor() ([]byte, []int)

func (*ShiftedExponential) GetMinimum added in v0.3.100

func (m *ShiftedExponential) GetMinimum() time.Duration

func (*ShiftedExponential) GetTailMean added in v0.3.100

func (m *ShiftedExponential) GetTailMean() time.Duration

func (*ShiftedExponential) Marshal added in v0.3.100

func (m *ShiftedExponential) Marshal() (dAtA []byte, err error)

func (*ShiftedExponential) MarshalTo added in v0.3.100

func (m *ShiftedExponential) MarshalTo(dAtA []byte) (int, error)

func (*ShiftedExponential) MarshalToSizedBuffer added in v0.3.100

func (m *ShiftedExponential) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ShiftedExponential) ProtoMessage added in v0.3.100

func (*ShiftedExponential) ProtoMessage()

func (*ShiftedExponential) Reset added in v0.3.100

func (m *ShiftedExponential) Reset()

func (*ShiftedExponential) Size added in v0.3.100

func (m *ShiftedExponential) Size() (n int)

func (*ShiftedExponential) String added in v0.3.100

func (m *ShiftedExponential) String() string

func (*ShiftedExponential) Unmarshal added in v0.3.100

func (m *ShiftedExponential) Unmarshal(dAtA []byte) error

func (*ShiftedExponential) XXX_DiscardUnknown added in v0.3.100

func (m *ShiftedExponential) XXX_DiscardUnknown()

func (*ShiftedExponential) XXX_Marshal added in v0.3.100

func (m *ShiftedExponential) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ShiftedExponential) XXX_Merge added in v0.3.100

func (m *ShiftedExponential) XXX_Merge(src proto.Message)

func (*ShiftedExponential) XXX_Size added in v0.3.100

func (m *ShiftedExponential) XXX_Size() int

func (*ShiftedExponential) XXX_Unmarshal added in v0.3.100

func (m *ShiftedExponential) XXX_Unmarshal(b []byte) error

type Simulator

type Simulator struct {
	ClusterSpec  *ClusterSpec
	WorkloadSpec *WorkloadSpec

	// If true, scheduler logs are omitted.
	// This since the logs are very verbose when scheduling large numbers of jobs.
	SuppressSchedulerLogs bool
	// contains filtered or unexported fields
}

Simulator captures the parameters and state of the Armada simulator.

func NewSimulator

func NewSimulator(clusterSpec *ClusterSpec, workloadSpec *WorkloadSpec, schedulingConfig configuration.SchedulingConfig) (*Simulator, error)

func (*Simulator) Now added in v0.4.12

func (s *Simulator) Now() time.Time

func (*Simulator) Run

func (s *Simulator) Run(ctx *armadacontext.Context) error

Run runs the scheduler until all jobs have finished successfully.

func (*Simulator) Since added in v0.4.12

func (s *Simulator) Since(t time.Time) time.Duration

func (*Simulator) StateTransitions added in v0.4.1

func (s *Simulator) StateTransitions() <-chan StateTransition

StateTransitions returns a channel on which all simulated events are sent. This function must be called before *Simulator.Run.

type StateTransition added in v0.4.1

type StateTransition struct {
	Jobs          []*jobdb.Job
	EventSequence *armadaevents.EventSequence
}

type WorkloadSpec added in v0.3.100

type WorkloadSpec struct {
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Random seed used in simulations; use to ensure simulations are reproducible.
	// If not provided, or explicitly set to 0, the current time is used.
	RandomSeed int64    `protobuf:"varint,2,opt,name=random_seed,json=randomSeed,proto3" json:"randomSeed,omitempty"`
	Queues     []*Queue `protobuf:"bytes,3,rep,name=queues,proto3" json:"queues,omitempty"`
}

func GetOneQueue10JobWorkload added in v0.3.100

func GetOneQueue10JobWorkload() *WorkloadSpec

func WorkloadSpecFromFilePath added in v0.3.100

func WorkloadSpecFromFilePath(filePath string) (*WorkloadSpec, error)

func WorkloadSpecsFromFilePaths added in v0.3.100

func WorkloadSpecsFromFilePaths(filePaths []string) ([]*WorkloadSpec, error)

func WorkloadsFromPattern added in v0.3.100

func WorkloadsFromPattern(pattern string) ([]*WorkloadSpec, error)

func (*WorkloadSpec) Descriptor added in v0.3.100

func (*WorkloadSpec) Descriptor() ([]byte, []int)

func (*WorkloadSpec) GetName added in v0.3.100

func (m *WorkloadSpec) GetName() string

func (*WorkloadSpec) GetQueues added in v0.3.100

func (m *WorkloadSpec) GetQueues() []*Queue

func (*WorkloadSpec) GetRandomSeed added in v0.3.100

func (m *WorkloadSpec) GetRandomSeed() int64

func (*WorkloadSpec) Marshal added in v0.3.100

func (m *WorkloadSpec) Marshal() (dAtA []byte, err error)

func (*WorkloadSpec) MarshalTo added in v0.3.100

func (m *WorkloadSpec) MarshalTo(dAtA []byte) (int, error)

func (*WorkloadSpec) MarshalToSizedBuffer added in v0.3.100

func (m *WorkloadSpec) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*WorkloadSpec) ProtoMessage added in v0.3.100

func (*WorkloadSpec) ProtoMessage()

func (*WorkloadSpec) Reset added in v0.3.100

func (m *WorkloadSpec) Reset()

func (*WorkloadSpec) Size added in v0.3.100

func (m *WorkloadSpec) Size() (n int)

func (*WorkloadSpec) String added in v0.3.100

func (m *WorkloadSpec) String() string

func (*WorkloadSpec) Unmarshal added in v0.3.100

func (m *WorkloadSpec) Unmarshal(dAtA []byte) error

func (*WorkloadSpec) XXX_DiscardUnknown added in v0.3.100

func (m *WorkloadSpec) XXX_DiscardUnknown()

func (*WorkloadSpec) XXX_Marshal added in v0.3.100

func (m *WorkloadSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*WorkloadSpec) XXX_Merge added in v0.3.100

func (m *WorkloadSpec) XXX_Merge(src proto.Message)

func (*WorkloadSpec) XXX_Size added in v0.3.100

func (m *WorkloadSpec) XXX_Size() int

func (*WorkloadSpec) XXX_Unmarshal added in v0.3.100

func (m *WorkloadSpec) XXX_Unmarshal(b []byte) error

type Writer added in v0.4.1

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

func NewWriter added in v0.4.1

func NewWriter(writer io.Writer, c <-chan StateTransition) (*Writer, error)

func (*Writer) Run added in v0.4.1

func (w *Writer) Run(ctx *armadacontext.Context) (err error)

Jump to

Keyboard shortcuts

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