diff options
| author | Joshua Bakita <jbakita@cs.unc.edu> | 2020-05-14 23:27:57 -0400 |
|---|---|---|
| committer | Joshua Bakita <jbakita@cs.unc.edu> | 2020-05-14 23:27:57 -0400 |
| commit | aed8838b6d65f3ab614f2971347fd9ba2d302f15 (patch) | |
| tree | a7a1da7d93fc86ce0ecd517b2b94782af3470ce4 /tools/perf/scripts/python | |
| parent | 6d69592ca8e41e6be634d517939fd30027500fec (diff) | |
Optimize the process of setting `entry->linked` in edfsc_gschedule()
This optimization is based off two observed properties:
1. All of edfsc_gschedule() can handle `entry->linked` being NULL
2. All tasks removed from the ready queue must not be out of budget
These invariants allow us to finish this scheduling cycle in one go,
rather than restarting when we pull a task off the ready queue. This
means that the `goto out` call is not strictly necessary, and can
actually put the scheduler in an inconsistent state.
This optimization exposed a buggy BUG_ON() call that checked if
budget is exhausted without first checking that budget is enforced.
That bug is fixed in this commit.
This commit also makes the slight optimization that there's no need
to call link_task_to_cpu() with NULL if `entry->linked` is already
NULL.
The removal of the `out:` label also allows for this commit to
combine the checks for `is_container(next)`.
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
