| Commit message (Collapse) | Author | Age |
|\
| |
| |
| | |
into wip-semi-part
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
|
| |
This helper function is also useful to remind us that if we use
hrtimer_pull outside the scope of triggering remote releases, we need to
take care of properly set the "state" field of hrtimer_start_on_info
structure.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The state of pulled hrtimers is reset during reinit_release_heap()
as this timers normally only controls remote releases.
In NPS-F the state of a pulled timer is not reset once the pulling is
over and therefore timers are no longer pulled (and restarted) upon
plugin reloading.
FIXME list: moving reset of HRTIMER_START_ON_INACTIVE
in on_release_timer() ?
|
| |
|
|
|
|
|
| |
Program the enforcement timer when we need to make sure
that schedule() invoked shortly after a budget expiring.
|
|
|
|
|
|
| |
A job that temporarily blocked without being descheduled
might have its slices advanced to the next CPU. In this case,
we need to force a rescheduling + migration.
|
|
|
|
| |
Also move budget handling functions to top of file.
|
|
|
|
| |
To aid with debugging.
|
|
|
|
|
|
|
|
|
| |
Having tasks that are !is_running() in shared structures is
very confusing during development and debugging, and can likely
mask bugs and/or create races.
It seems like a strange choice that Linux changes a task's state
only _after_ activating it. For LITMUS^RT tasks, we change this order.
|
|
|
|
|
|
|
| |
These messages are highly useful when debugging races,
but they quickly litter the log when looking for something else.
We keep them around, but by default they shouldn't show up.
|
|
|
|
|
| |
Jobs do not signal when a slice is complete, thus, we need to
police it accurately.
|
|
|
|
|
|
| |
Required for EDF-WM. We should implement precise enforcement
in the core distribution soon anyway (once we know how it
works in EDF-WM).
|
|
|
|
| |
Returns the amount of budget left for a given job.
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
This version of litmus2010 contains the implementation of three
semi-partitioned scheduling algorithms: EDF-fm, EDF-WM, and NPS-F.
Conflicts:
include/litmus/rt_param.h
litmus/Makefile
|
| |
| |
| |
| |
| | |
The migration code patch simulates blocking if state changes occur
while dropping the lock. We need to handle that.
|
| |
| |
| |
| |
| | |
When the budget is exhausted but the job wakes up before
its actual deadline, then we do not want to release right now.
|
| |
| |
| |
| | |
This created a juicy NULL dereference due to wm.slice being NULL.
|
| |
| |
| |
| | |
Trace more and be a bit paranoid.
|
| |
| |
| |
| | |
We'll need this to allow hrtimer-based budget enforcement in EDF-WM.
|
| |
| |
| |
| |
| | |
The partitioning does seem to create some small budgets,
so let's support. Going smaller than this seems a bit silly.
|
| |
| |
| |
| | |
Makes debugging easier.
|
| |
| |
| |
| | |
Only log becoming idle if there actually was a RT task previously.
|
| |
| |
| |
| |
| | |
For now, just hard-code a limit. This is ugly, but RTAS
is only 2 weeks away.
|
| |
| |
| |
| |
| | |
When the current slice is expired, then a job has to migrate
to another processor. wm_requeue_remote() takes care of this.
|
| |
| |
| |
| |
| |
| | |
If a lot of time has passed, then this code can be used
to advance across several slices. This will be used in
the wm_wake_up() code path.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Releasing sliced tasks is a bit more involved...
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
This API addition allows the calling code to override
the release master for a given rt_domain_t object. This
is particularly useful if a job is supposed to migrate
to a particular CPU. This need arises for example in semi-
partitioned schedulers.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Copy & rename PSN-EDF.
|
| |
| |
| |
| | |
Avoids name clash---we don't need the types anyway.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Updated the code to remove the condition that was causing soft-lockup
problem.
|
| |
| |
| |
| |
| |
| |
| | |
The last commit didn't include proper accounting of cpu time for slices
of a job. This commit has modified 'update_time_litmus' in
litmus/sched_litmus.c to track cpu time given to the current slice of a
job on a particular cpu.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit has edf-wm code working with migrations. The remote-locking
process is also working properly in this commit. The subjobs of the
tasks are migrated across cpus based on the window size. A timer is set
for each migrating job when it starts execution on its slice on a
particular cpu. Also for migration, a timer is set on remote cpu when
the next slice is due for execution.
|
| |
| |
| |
| |
| | |
Added functions required for timer control to the current scheduler.
Still, it does not support migrations and works same as PSN-EDF.
|