Originally, we did not include this
step. Instead we only granted compensation tickets to the task that
just finished running, and we reset the number of tickets for the
task that was then chosen to run. This approach should be
equivalent, and it is slightly more efficient. However, there is a
mysterious force that resets the task_struct.counter field to
zero periodically, even if the task is not chosen to run. This
would cause tasks that should be highly boosted to become very low
priority. We never quite figured out what was causing this to
happen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.