aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/edf_common.c
Commit message (Collapse)AuthorAge
* Fix AUX tasks from being dropped by Litmus.Glenn Elliott2013-01-23
|
* Fixed case where blocked tasks are released.Glenn Elliott2013-01-21
| | | | | | | | | | Fixed bug where AUX tasks were being added to the ready queue while those AUX tasks were actually blocked. Bug stems from the fact that the AUX tasks do not make themselves realtime, but another thread does this instead. Also fixed minor bugs elsewhere. NOTE: ONLY FIXES C-EDF. OTHER PLUGINS REMAIN TO BE FIXED.
* Merge branch 'wip-gpu-cleanup' into wip-2012.3-gpuGlenn Elliott2013-01-10
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: include/litmus/fpmath.h include/litmus/litmus.h include/litmus/rt_param.h include/litmus/trace.h kernel/sched.c kernel/softirq.c litmus/edf_common.c litmus/jobs.c litmus/litmus.c litmus/locking.c litmus/preempt.c litmus/sched_cedf.c litmus/sched_gsn_edf.c litmus/sched_litmus.c litmus/sync.c
| * Fix several klmirqd bugs.Glenn Elliott2012-12-13
| | | | | | | | | | | | | | | | | | | | 1) Deadlock in litmus_task_exit()-- added litmus_pre_task_exit() to be called without the Linux runqueue lock held. 2) Prioritization of base-prio klmirqd/aux threads vs. normal real-time tasks. 3) Initialization of gpu owner binheap node moved to *after* memset(0) of rt_params. 4) Exit path of klmirqd threads.
| * make klmirqd work like aux tasks. checkpoint.Glenn Elliott2012-12-12
| | | | | | | | this code is untested!
| * Rename klitirqd klmirqd.Glenn Elliott2012-12-09
| |
| * AUX_FUTURE and revised inh-based aux tie breakGlenn Elliott2012-12-06
| |
| * Fix compilation warnings.Glenn Elliott2012-11-30
| |
| * More improvements on affinity heuristicsGlenn Elliott2012-11-30
| |
| * boost aux tasks unconditionallyGlenn Elliott2012-11-11
| |
| * 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.)
| * 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
| |
| * Fix hang from bug in edf_common.cGlenn Elliott2012-09-11
| |
| * 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
| | * 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.
| * | GPUSync patch for Litmus 2012.1.Glenn Elliott2012-05-26
| |/
* | EDF priority tie-breaks.Glenn Elliott2012-09-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Improve readability of EDF comparisons.Glenn Elliott2012-09-21
|/ | | | | | Restructured the EDF task comparison code to improve readability. Recoded chained logical expression embedded in return statement into a series of if/else blocks.
* EDF: support priority boostingBjoern B. Brandenburg2011-02-01
| | | | While we are at it, simplify edf_higher_prio() a bit.
* Refactor binomial heap names: heap -> bheapAndrea Bastoni2010-05-29
| | | | | | - Binomial heap "heap" names conflicted with priority heap of cgroup in kernel - This patch change binomial heap "heap" names in "bheap"
* [ported from 2008.3] Add common EDF functionsAndrea Bastoni2010-05-29