aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Manually patched mc^2 related codewip-mc2-cache-slackMing Yang2016-02-11
|
* Patched reservation implementation of MC^2 versionMing Yang2016-02-10
| | | | | | | | Patched using Namhoon's implementation of reservation for MC^2 to support global multiprocessor scheduling. Patched compiler-gcc5 to support gcc v5 compiler. Bug fixed regarding user input big cpu id number causing kernel crash.
* P-RES: improved handling of tardy jobsBjoern Brandenburg2014-09-17
| | | | | Don't set a release timer for jobs that are tardy and already released.
* Reservations: request scheduler update for new active reservationsBjoern Brandenburg2014-09-17
| | | | | | Don't forget to ask for a scheduler update when a reservation is replenished but enters state ACTIVE_IDLE and there's nothing else going on that triggers the scheduler by chance.
* Reservations: fix time-tracking of table-driven reservationsBjoern Brandenburg2014-09-17
| | | | | | Keep track of the current slot and major cycle explicitly to avoid ambiguity when the budget charging is delayed into the next major cycle due to a late interrupt or other sources of delay.
* P-RES: keep track in per-task state of whether it suspendedBjoern Brandenburg2014-09-17
| | | | | Checking state->scheduled is not accurate when bandwidth inheritance is applied.
* P-RES: disable LITMUS^RT's standard budget enforcementBjoern Brandenburg2014-09-17
| | | | | | | The P-RES plugin is currently not compatible with the per-thread budget enforcement logic, which can trigger assertion failures. For now, let's simply disable per-thread timeslice enforcement. (P-RES's reservations are a much better mechanism anyway.)
* P-RES: allocation in pres_admit_task() must be atomicBjoern Brandenburg2014-09-17
| | | | | | The kernel codepath calling into pres_admit_task() is holding some lock unrelated to LITMUS^RT. As a result, we need to pass GFP_ATOMIC, not just GFP_KERNEL, to kzalloc().
* Reservations: priority should be a lt_tBjoern Brandenburg2014-09-16
| | | | | | | Rationale: the internal priority point representation is of type lt_t (64 bits), so to enable userspace to specify priorities below (=after) EDF priority points, we need to allow userspace to specify values larger than 2^32.
* Reservations: keep track of consumed budgetBjoern Brandenburg2014-09-15
| | | | This can be a useful stat for userspace.
* P-RES: fix rare deadlock via hrtimer_start()Bjoern Brandenburg2014-09-12
| | | | | | | | | | | | | | | | | | There's a rare condition under which the current call to hrtimer_start() in pres_update_timer() may result in deadlock. pres_update_timer() // holds runqueue lock and state->lock -> hrtimer_start() -> raise_softirq_irqoff() -> wakeup_softirqd() -> wake_up_process() -> acquires runqueue lock() To avoid this, we need to call __hrtimer_start_range_ns() with the 'wakeup' flag set to zero. While at it, also drop the state->lock before calling into hrtimer(), to avoid making the scheduler critical section longer than necessary.
* Move 'reservation' field from task_client to generic reservation_clientBjoern Brandenburg2014-09-11
| | | | | | This makes it a lot easier to write generic code for thread arrival / thread departure in plugins with multiple types of reservation clients.
* Table-driven replenishments should depend on the current timeBjoern Brandenburg2014-09-08
| | | | | | Make sure we don't accidentally bleed past the current reservation scheduling slot (due to jitter) by determining the remaining budget precisely when replenishing the reservation budget.
* P-RES: ensure scheduler timer fires on _local_ CPU onlyBjoern Brandenburg2014-09-08
| | | | | | Accidentally setting up the timer on the wrong CPU when a thread resumes is problematic can lead (potentially) to deadlock and to missed scheduling events.
* Switch table-driven reservations to use table-driven budgetBjoern Brandenburg2014-09-04
| | | | | Instead of counting how much budget has been consumed, determine budget based on actual time slots.
* Fix scheduler invocation after draining budgetNamhoon Kim2014-09-04
|
* Add partitioned reservation-based scheduler plugin (P-RES)Bjoern Brandenburg2014-07-21
| | | | | | A simple partitioned scheduler that provides a reservation environment on each core, based on the generic reservations code. Hierarchical scheduling is not supported in this version.
* Add reservation configuration types to rt_param.hBjoern Brandenburg2014-07-21
|
* Add basic generic reservation-based scheduling infrastructureBjoern Brandenburg2014-07-21
|
* Add reservation system calls to ARM syscall tableBjoern Brandenburg2014-07-21
|
* Add generic reservation syscall table definitionsBjoern Brandenburg2014-07-21
|
* Add reservation system calls to x86 syscall tableBjoern Brandenburg2014-07-21
|
* Add reservation creation API to plugin interface & syscallsBjoern Brandenburg2014-07-21
|
* Add void* plugin_state pointer to task_structBjoern Brandenburg2014-07-21
|
* default_wait_for_release_at() should invoke plugin callbackBjoern Brandenburg2014-07-21
| | | | | | | Instead of calling complete_job() directly, the default implementation of wait_for_release_at() should invoke the plugin-provided complete_job() method to support plugins that happen to override complete_job(), but not wait_for_release_at().
* PFAIR: set release time of new tasksBjoern Brandenburg2014-06-12
| | | | | | | | | | Without a proper release time, the job will be considered "lagging behind" for quite a while, which breaks the period enforcement. This bug manifested only in the absence of a synchronous release (which set a proper release time). This patch simply sets the beginning of the next quantum as the release time of the first job of a newly added task.
* Add PD^2 scheduler pluginBjoern Brandenburg2014-06-07
|
* Add C-EDF scheduler pluginBjoern Brandenburg2014-06-07
|
* Add P-FP scheduler pluginBjoern Brandenburg2014-06-07
|
* Add GSN-EDF scheduler pluginBjoern Brandenburg2014-06-07
|
* Add PSN-EDF scheduler pluginBjoern Brandenburg2014-06-07
|
* Hook into kernel/exit.c to force exiting RT tasks into best-effort modeBjoern Brandenburg2014-06-07
|
* Protect LITMUS^RT tasks from re-nicingBjoern Brandenburg2014-06-07
| | | | | Assigning a nice value to LITMUS^RT tasks is meaningless. Bail out early.
* Don't call set_tsk_need_resched() on remote LITMUS^RT taskBjoern Brandenburg2014-06-07
| | | | | This patch fixes a BUG_ON() in litmus/preempt.c:33 reported by Felipe Cerqueira & Manohar Vanga.
* Hook into rt scheduling class to protect LITMUS^RT tasksBjoern Brandenburg2014-06-07
| | | | | | The rt scheduling class thinks it's the highest-priority scheduling class around. It is not in LITMUS^RT. Don't go preempting remote cores that run SCHED_LITMUS tasks.
* Don't trigger load balancer in scheduler tick for LITMUS^RTBjoern Brandenburg2014-06-07
|
* Cache 'prev' in LITMUS^RT runqueueBjoern Brandenburg2014-06-07
| | | | | | LITMUS^RT plugins like to know who 'prev' is. pick_next_task() doesn't expose that info, so we just cache prev in the runqueue. Could robably be replaced by looking at 'current' instead.
* Hook into finish_switch()Bjoern Brandenburg2014-06-07
| | | | To keep track of stack usage and to notify plugin, if necessary.
* Reset SCHED_LITMUS scheduling class on forkBjoern Brandenburg2014-06-07
|
* Block sched_setaffinity() for SCHED_LITMUS tasksBjoern Brandenburg2014-06-07
|
* Integrate LITMUS^RT scheduling class with sched_setschedulerBjoern Brandenburg2014-06-07
|
* Disable cut-to-CFS optimization in Linux schedulerBjoern Brandenburg2014-06-07
| | | | | Global plugins require that the plugin be called even if there currently is no real-time task executing on the local core.
* Integrate LITMUS^RT with try_to_wake_up() pathBjoern Brandenburg2014-06-07
|
* Make LITMUS^RT scheduling class the highest-priority scheduling classBjoern Brandenburg2014-06-07
| | | | | | Needs to be above stop_machine_class for legacy reasons; the main plugins were developed before stop_machine_class was introduced and assume that they are the highest-priority scheduling class.
* Add LITMUS^RT scheduling class in kernel/sched/MakefileBjoern Brandenburg2014-06-07
|
* Introduce LITMUS^RT runqueue dummy into struct rqBjoern Brandenburg2014-06-07
|
* Integrate SRP ceiling blocking callback with Linux schedulerBjoern Brandenburg2014-06-07
| | | | Check whether a suspension is required at end of schedule().
* Hookup sched_trace_XXX() tracing in Linux schedulerBjoern Brandenburg2014-06-07
| | | | This patch adds context switch tracing to the main Linux scheduler.
* Augment rt_task() with is_realtime()Bjoern Brandenburg2014-06-07
| | | | | | | | | | | Whenever the kernel checks for rt_task() to avoid delaying real-time tasks, we want it to also not delay LITMUS^RT tasks. Hence, most calls to rt_task() should be matched by an equivalent call to is_realtime(). Notably, this affects the implementations of select() and nanosleep(), which use timer_slack_ns when setting up timers for non-real-time tasks.
* Hook into fork(), exec(), and exit()Bjoern Brandenburg2014-06-07
| | | | | Allow LITMUS^RT to do some work when a process is created or terminated.