Ignore:
Timestamp:
Jun 27, 2022, 8:29:11 AM (7 weeks ago)
Branches:
Children:
e4ea4b8d
Parents:
9b817e15
Message:

 r9b817e15 \subsection{User-Level Schedulers} By comparison, user level schedulers tend to be simpler, gathering fewer metrics and avoid complex notions of fairness. Part of the simplicity is due to the fact that all \glspl{at} have the same user, and therefore cooperation is both feasible and probable. \paragraph{Go} Go's scheduler uses a randomized work-stealing algorithm that has a global run-queue (\emph{GRQ}) and each processor (\emph{P}) has both a fixed-size run-queue (\emph{LRQ}) and a high-priority next chair'' holding a single element~\cite{GITHUB:go,YTUBE:go}. Preemption is present, but only at function call boundaries. \paragraph{Go}\label{GoSafePoint} Go's scheduler uses a randomized work-stealing algorithm that has a global run-queue (\emph{GRQ}) and each processor (\emph{P}) has both a fixed-size run-queue (\emph{LRQ}) and a high-priority next chair'' holding a single element~\cite{GITHUB:go,YTUBE:go}. Preemption is present, but only at safe-points,~\cit{https://go.dev/src/runtime/preempt.go} which are inserted detection code at various frequent access boundaries. The algorithm is as follows :