aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
| | * | boost aux tasks unconditionallyGlenn Elliott2012-11-11
| | | |
| * | | improve ikglp heuristicsGlenn Elliott2012-11-11
| |/ /
| * | Description of refined aux task inheritance.Glenn Elliott2012-09-17
| | |
| * | Fixed three bugs with aux threads and nested locksGlenn Elliott2012-09-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes two bugs with nested locks: 1) List of aux threads could become corrupted. -- moved modifications to be within scheduler lock. 2) Fixed bad EDF comparison ordering that could lead to schedule thrashing in an infinite loop. 3) Prevent aux threads from inheriting a priority from a task that is blocked on a real-time litmus lock. (since the aux threads can't possibly hold these locks, we don't have to worry about inheritance.)
| * | Merge branch 'prop/sched_fork' into wip-gpu-rtas12Glenn Elliott2012-09-17
| |\ \ | | | | | | | | | | | | | | | | Conflicts: kernel/sched.c
| | * | Do processor state transitions in schedule_tail().Glenn Elliott2012-09-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes a bug in Litmus where processor scheduling states could become corrupted. Corruption can occur when a just-forked thread is externally forced to be scheduled by SCHED_LITMUS before this just-forked thread can complete post-fork processing. Specifically, before schedule_tail() has completed.
| * | | Add support for CUDA 5.0 (release candidate)Glenn Elliott2012-09-16
| | | |
| * | | C-EDF support for auxillary tasks.Glenn Elliott2012-09-16
| | | | | | | | | | | | | | | | Extended auxillary task support to C-EDF. Modeld after G-EDF.
| * | | Added CONFIG_REALTIME_AUX_TASKS optionGlenn Elliott2012-09-16
| | | | | | | | | | | | | | | | | | | | | | | | Auxillary task features were enabled by CONFIG_LITMUS_LOCKING. Made auxillary tasks a seperate feature that depends upon CONFIG_LITMUS_LOCKING.
| * | | Implement real-time aux threads. G-EDF only.Glenn Elliott2012-09-16
| | | |
| * | | checkpoint for aux_tasks. can still deadlockGlenn Elliott2012-09-14
| | | |
| * | | Merge branch 'wip-gpu-rtas12' into wip-slave-threadsGlenn Elliott2012-09-11
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: include/litmus/unistd_32.h include/litmus/unistd_64.h litmus/litmus.c
| | * | | changed gpu filtering to 1.5 stdev.Glenn Elliott2012-09-11
| | | | |
| | * | | Fix hang from bug in edf_common.cGlenn Elliott2012-09-11
| | | | |
| | * | | Merge remote-tracking branch 'github/prop/litmus-signals' into wip-gpu-rtas12Glenn Elliott2012-09-10
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: litmus/sched_gsn_edf.c
| | | * | | Infrastructure for Litmus signals.prop/litmus-signalsGlenn Elliott2012-09-07
| | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added signals to Litmus. Specifcally, SIG_BUDGET signals are delivered (when requested by real-time tasks) when a budget is exceeded. Note: pfair not currently supported (but it probably could be).
| | * | | Merge branch 'prop/robust-tie-break' into wip-gpu-rtas12Glenn Elliott2012-09-10
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: include/litmus/binheap.h include/litmus/fdso.h include/litmus/litmus.h litmus/Makefile litmus/binheap.c litmus/edf_common.c litmus/fdso.c litmus/jobs.c litmus/locking.c
| | | * | | Fixed type-os and clarified text in litmus/KconfigGlenn Elliott2012-09-08
| | | | | |
| | | * | | EDF priority tie-breaks.wip-robust-tie-breakGlenn Elliott2012-08-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of tie-breaking by PID (which is a static priority tie-break), we can tie-break by other job-level-unique parameters. This is desirable because tasks are equaly affected by tardiness since static priority tie-breaks cause tasks with greater PID values to experience the most tardiness. There are four tie-break methods: 1) Lateness. If two jobs, J_{1,i} and J_{2,j} of tasks T_1 and T_2, respectively, have equal deadlines, we favor the job of the task that had the worst lateness for jobs J_{1,i-1} and J_{2,j-1}. Note: Unlike tardiness, lateness may be less than zero. This occurs when a job finishes before its deadline. 2) Normalized Lateness. The same as #1, except lateness is first normalized by each task's relative deadline. This prevents tasks with short relative deadlines and small execution requirements from always losing tie-breaks. 3) Hash. The job tuple (PID, Job#) is used to generate a hash. Hash values are then compared. A job has ~50% chance of winning a tie-break with respect to another job. Note: Emperical testing shows that some jobs can have +/- ~1.5% advantage in tie-breaks. Linux's built-in hash function is not totally a uniform hash. 4) PIDs. PID-based tie-break used in prior versions of Litmus. Conflicts: litmus/edf_common.c
| | | * | | Improve readability of EDF comparisons.Glenn Elliott2012-08-20
| | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | Restructured the EDF task comparison code to improve readability. Recoded chained logical expression embedded in return statement into a series of if/else blocks.
| | * | | standard devation-based gpu affinity predictorGlenn Elliott2012-09-10
| | | | |
| | * | | simple average trackingGlenn Elliott2012-09-09
| | | | |
| | * | | enable migration tracing and short-cut interruptsGlenn Elliott2012-08-31
| | | | |
| | * | | GPUSync patch for Litmus 2012.1.Glenn Elliott2012-05-26
| | | | |
| * | | | blargGlenn Elliott2012-09-11
| | |/ / | |/| |
* | | | Merge branch 'prop/misc-fixes' into wip-2012.3-gpuGlenn Elliott2013-01-10
|\ \ \ \ | | |_|/ | |/| |
| * | | Reimplement plugin switching using stop_machine()Bjoern Brandenburg2013-01-10
| | | | | | | | | | | | | | | | | | | | | | | | stop_machine() does exactly what we want (avoid all concurrent scheduling activity) and much simpler than rolling our own (buggy) implementation.
| * | | Avoid race in do_release_ts()Bjoern Brandenburg2013-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The list is concurrently being modified by the waking processes. This requires the use of the list_for_each_safe() iterator. Reported by Glenn Elliott.
* | | | Extend non-rt support to sync-releases.Glenn Elliott2013-01-09
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | Note that non-rt tasks are released immediately. That is, the 'delay' provided to the release_ts() system-call is ignored for non-rt tasks. Conflicts: litmus/sync.c
* | | Protect SCHED_LITMUS tasks from reschedules triggered by SCHED_FIFO enqueues.2012.3Jonathan Herman2012-12-21
| | | | | | | | | | | | (BB: edited to include <litmus/litmus.h> to resolve compile error.)
* | | Config: PREEMPT_STATE_TRACE depends on DEBUG_KERNEL.Christopher Kenna2012-12-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes CONFIG_PREEMPT_STATE_TRACE depend on CONFIG_DEBUG_KERNEL. Prior to this patch, selecting PREEMPT_STATE_TRACE resulted in linker errors (see below), because sched_state_name is not built unless DEBUG_KERNEL is selected. kernel/built-in.o: In function `schedule': (.sched.text+0x3d2): undefined reference to `sched_state_name'
* | | Send reboot notifications to LitmusGlenn Elliott2012-12-07
| | | | | | | | | | | | | | | | | | | | | | | | This patch causes reboot notifications to be send to Litmus. With this patch, Litmus attempts to switch back to the Linux-plugin before the reboot proceeds. Any failures to switch back are reported via printk() (the reboot is not halted).
* | | litmus: get rid of unused RT_F_EXIT_SEM flagManohar Vanga2012-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes the RT_F_EXIT_SEM flag. All code paths depending on it being true are assumed to be unreachable and removed. The 'flags' field in struct rt_params is left as-is for use by specific schedulers. For example, sched_pfair defines a custom flag RT_F_REQUEUE within the 'flags' field. Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | litmus: use is_present() instead of using rt_param->presentManohar Vanga2012-11-27
| | | | | | | | | | | | Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | litmus: get rid of RT_F_SLEEP and RT_F_RUNNINGManohar Vanga2012-11-27
| | | | | | | | | | | | | | | | | | | | | | | | This patch removes the flags RT_F_SLEEP and RT_F_RUNNING as their name is misleading. This patch replaces them with a 'completed' field in struct rt_param. Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | litmus: fix warning about unused label in sched_pfp.cManohar Vanga2012-11-27
| | | | | | | | | | | | | | | | | | | | | This patch fixes a warning about an unused label in sched_pfp.c when CONFIG_LITMUS_LOCKING is not set. Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | litmus: fix compiler warning in sched_plugin.hManohar Vanga2012-11-27
| | | | | | | | | | | | | | | | | | | | | | | | This patch fixes the compiler warning about struct litmus_locking being defined in the parameter list when CONFIG_LITMUS_LOCKING is not set. Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | P-FP: be less permissive about non-running tasks in queueBjoern Brandenburg2012-10-18
| | | | | | | | | | | | No suspended task should ever be queued in this plugin.
* | | P-FP: be paranoid in the preemption caseBjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | Crash and burn if an expected preemption didn't happen. This is useful to flag any bugs in the queue management code...
* | | P-FP: use proper CONFIG_ symbolBjoern Brandenburg2012-10-18
| | | | | | | | | | | | It's CONFIG_LITMUS_LOCKING, not just CONFIG_LOCKING...
* | | P-FP: prevent misuse of priority queueBjoern Brandenburg2012-10-18
| | | | | | | | | | | | Stop hard-to-detect out-of-bounds errors early.
* | | P-FP: simplify priority comparisonBjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | | | | Make the priority comparison easier to read. Also, remove the "equal PID" clause and insert a corresponding BUG_ON() instead; this should really never happen.
* | | P-FP: simplify boost_priority()Bjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | | | | boost_priority() is only applied to already-scheduled tasks. Remove the (untested and unneeded) case handling unscheduled tasks, which was likely not correct anyway.
* | | P-FP: record job release records for tardy tasksBjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | When a job was tardy, the plugin failed to invoke sched_trace. This caused ugly "holes" in the visualized schedule.
* | | Move SEND_RESCHED tracing to preempt.cBjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | | | | | | | The SEND_RESCHED is really only interesting if the IPI was generated by LITMUS^RT. Therefore, we don't need to trace in Linux's architecture-specific code. Instead, we hook into the preemption state machine, which is informed about incoming IPIs anyway.
* | | Move SCHED2 trace points to post_schedule()Bjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Linux's post_schedule() scheduling class hook more closely matches what SCHED2 is supposed to trace, namely any scheduling overhead after the context switch. The prior trace points caught timers being armed from finish_switch(), which is already included in the context switch cost CXS. (This patch essentially reverts 8fe2fb8bb1c1cd0194608bc783d0ce7029e8d869).
* | | Feather-Trace: hide irq in SEND_RESCHED_ENDBjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | | | | | | | SEND_RESCHED_END is necessarily preceded by an interrupt. We don't want to filter events based on this expected interrupts, but we still want to detect samples disturbed by other interrupts. Hence, subtract one off the interrupt count.
* | | Trace IPI-related IRQs with ft_irq_fired()Bjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | IPIs have some special cases where irq_enter() is not called. This caused ft_irq_fired() to "miss" some rescheduling-related interrupts, which in turn may cause outliers. This patch makes sure ft_irq_fired() is called on scheduling-related IPIs.
* | | Mark feather-trace buffers as "disturbed" on soft IRQsBjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | We don't want outliers due to soft IRQs, so let them mark ongoing traces as "dirty" as well.
* | | Make Feather-Trace timestamp collection non-preemptiveBjoern Brandenburg2012-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the tracing code is interrupted / preempted inbetween the time that a sequence number is drawn and the time that the trace recorded is allocated, then the trace file will contain "out of order" events. These are difficult to detect during post-processing and can create artificial "outliers". This patch briefly disables local interrutps to avoid this. While at it, de-duplicate the timestamp recording code.