| Commit message (Collapse) | Author | Age |
... | |
|
|
|
| |
This is required to visualize the schedule.
|
|
|
|
| |
The arguments were not printed correctly.
|
|
|
|
|
|
| |
The reschedule test in scheduler_tick() was missing the case
when the CPU has to preempt a real-time task in favor of background
work.
|
| |
|
|
|
|
|
| |
This bug created unkillable tasks if the first event did not
match the event that was being disabled.
|
|
|
|
|
| |
Not-yet-released jobs were not properly queued because of an overly complicated
and wrong requeue implementation. Found by visualizing sched_traces.
|
| |
|
|
|
|
| |
Using both sched_clock() and litmus_clock() leads to garbled traces.
|
|
|
|
|
| |
Due to bad ordering of ()-pairs, the priority function
was not correct. This should fix it.
|
|
|
|
| |
If we can't allocate heap nodes then we can't admit RT tasks.
|
|
|
|
|
| |
This provides and hooks up a new made-from-scratch sched_trace()
implementation based on Feather-Trace and ftdev.
|
|
|
|
| |
rationale: uniformity
|
|
|
|
| |
This is useful to deny opening per-cpu buffers if a CPU is not online.
|
|
|
|
|
| |
Otherwise required buffers may not be present anymore.
This patch also fixes some minor initialization issues.
|
|
|
|
| |
Much cleaner code now.
|
|
|
|
| |
This will help to redruce code duplication in the long run.
|
|
|
|
| |
We don't always need the file in the kernel.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since some architectures don't support __udivdi3().
Signed-off-by: Segher Boessenkool <segher@kernel.crashing.org>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|/
|
|
|
| |
Each record is exactly 24 bytes (= three 64bit integers) long.
We accept possibly truncated fields in order to save some space.
|
|
|
|
|
| |
This patch fixes some minor issues that inadvertedly crept in during
development. Found in John's review.
|
|
|
|
|
|
|
| |
We already have a heap_node slab in litmus.c. We can reuse it for the
other allocations.
This patch also fixes a misnaming of heap_node_alloc/free.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
This should be faster on high CPU counts.
The list-based implementation was O(1) + O(N) for a position update.
The heap-based implementation is O(log N) + O(log N).
|
| |
| |
| |
| |
| |
| | |
If the first argument to edf_higher_prio is NULL, then just
return 0, since it can't possibly have a higher piority than the
second argument.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of having hrtimers for each task, we now have only
one hrtimer per rt_domain. To-be-released tasks are grouped in
mergable heaps and presented as a bunch on each release.
This approach should allow us to reduce the worst-case overhead
at hyperperiod boundaries significantly.
1) less hrtimer overhead
2) less calls to the active plugin
3) only one CPU handles releases at a time
4) (2) & (3) should bring down lock contention significantly
|
| | |
|
| | |
|
|/
|
|
| |
Avoid division by zero.
|
|
|
|
| |
This fixes a copy&paste bug reported by John.
|
| |
|
|
|
|
| |
we can disable it to improve performance when it is not needed
|
| |
|
| |
|
|
|
|
| |
NP-Flag support appears to be broken at the moment on SPARC64.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds the PFAIR plugin. The implementation is based on an earlier version
developed by John Calandrino.
Features:
- supports aligned and staggered quanta
- supports early releasing
- uses mergable heaps to limit overheads
This version still has a couple of limitations:
- no support for sporadic; all tasks are assumed to be periodic
- tasks are limited to a maximum period of 1000 quanta
- overload (especially in the tick) is not handled gracefully
|
|
|
|
|
| |
We probably don't get such a big buffer, but the allocation
code scales it down if such a large memory chunk is not available.
|
| |
|
|
|
|
|
| |
The default implementation contained a bug in a macro.
Also, add a cast to silence the compiler.
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| |
| | |
- move platform dependent bits into arch/
- provide a default implementation (used for sparc64)
|
| |
| |
| |
| |
| |
| |
| |
| | |
- TICK
- SCHED1
- SCHED2
- RELEASE
- CXS
|
| | |
|
| | |
|
|/
|
|
| |
Without this change, a BUG_ON() in schedule() triggers.
|
|
|
|
|
|
| |
The list-based priority queues did not perform well on the Niagara T2000.
This heap-based implementation should perform much faster when queues
are long.
|
| |
|
|\ |
|