Module scheduler

Module scheduler 

Source
Expand description

A general scheduler implementation. MMTk uses it to schedule GC-related work.

ModulesΒ§

affinity πŸ”’
gc_work πŸ”’
scheduler πŸ”’
stat πŸ”’
Statistics for work packets
work πŸ”’
work_bucket πŸ”’
work_counter πŸ”’
Counter for work packets
worker πŸ”’
worker_goals πŸ”’
This module contain β€œgoals” which are larger than work packets, and describes what workers are working towards on a high level.
worker_monitor πŸ”’
This module contains WorkerMonitor and related types. It purposes includes:

StructsΒ§

GCWorker
A GC worker. This part is privately owned by a worker thread.

EnumsΒ§

WorkBucketStage
This enum defines all the work bucket types. The scheduler will instantiate a work bucket for each stage defined here.

ConstantsΒ§

EDGES_WORK_BUFFER_SIZE
This constant used to be the default capacity of work packets that process slots, such as ProcessSlots. But now it is an empirical value used by many work packets.

TraitsΒ§

GCWork
This defines a GC work packet which are assigned to the GCWorkers by the scheduler. Work packets carry payloads that indicate the work to be done. For example, a work packet may contain a pointer to a stack that must be scanned, or it may contain a large buffer of pointers that need to be traced, or it might contain a range of static variables to be scanned, etc. The size of the work packet will need to consider at least two points of tension: the work packet must be large enough to ensure that the costs of managing the work packets do not dominate, and the packet must be small enough that good load balancing is achieved.