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
WorkerMonitorand related types. It purposes includes:
StructsΒ§
- GCWorker
- A GC worker. This part is privately owned by a worker thread.
EnumsΒ§
- Work
Bucket Stage - 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.