aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* work in progress.Glenn Elliott2013-03-22
|
* SOBLIV draining support for C-EDF.wip-2012.3-gpuGlenn Elliott2013-03-21
| | | | | | | Adds support for suspension-oblivous budget draining to C-EDF. Also changes how jobs with exhausted budget in C-EDF are treated: jobs are early released until they catch up.
* Per-task budget high-resolution timers (hrtimers).Glenn Elliott2013-03-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As a step towards implementing more complex budget tracking method (ex. BWI, VXR, etc.), we need per-task budget trackers because we may be required to drain budget from a task, even while it is suspended or blocked. This patch does: 1) Replaces the per-CPU hrtimers with per-task hrtimers. 2) Plugin architecture for different budget policies. This patch creates three budget draining policies: SIMPLE, SAWARE (suspension-aware), and SOBLIV (suspension-oblivious). However, only SIMPLE is supported by this patch. SIMPLE (default): Budget drains while the task is scheduled. Budget is preserved across self-suspensions (but not job completions, of course). Only SIMPLE is supported in this patch. (Maintaining current Litmus functionality.) SAWARE: Draining according to suspension-aware analysis. Budget should drain whenever a task is among the top-m tasks in its cluster, where m is the number of processors in said cluster. This draining should happen whether or not the task is actually scheduled. SOBLIV: Draining according to suspension-oblivious analysis. Budget should drain whenever the task is scheduled or suspended (but not due to preemption). Exception: Draining should halt when we can prove that the task is not among the top-m tasks blocked on the same lock (i.e., on the PQ in the OMLP-family locking protocols).
* Make lock name alloc dynamicGlenn Elliott2013-03-14
|
* BUG: Remove lock proc on destroy, not closeGlenn Elliott2013-03-14
| | | | | Remove lock proc entries on lock destruction, not lock close.
* formattingGlenn Elliott2013-03-14
|
* COMPILE BUG: No migration injection if no GPUsGlenn Elliott2013-03-14
|
* Merge branch 'gh/staging' into tempGlenn Elliott2013-03-13
|\ | | | | | | | | | | | | | | | | Conflicts: include/litmus/litmus.h include/litmus/rt_param.h litmus/Makefile litmus/sched_cedf.c litmus/sched_gsn_edf.c
| * Differentiate between PERIODIC and SPORADIC tasks.Glenn Elliott2013-03-12
| | | | | | | | | | | | | | | | | | | | | | | | | | Tasks can now be PERIODIC or SPORADIC. PERIODIC tasks do not have their job number incremented when they wake up and are tardy. PERIODIC jobs must end with a call to sys_complete_job() to set up their next release. (Not currently supported by pfair.) SPORADIC tasks _do_ have their job number incremented when they wake up and are tardy. SPORADIC is the default task behavior, carrying forward Litmus's current behavior.
| * EDF schedulers: Support early job releasing.Glenn Elliott2013-03-12
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows a task to request early releasing via rt_task parameters to sys_set_task_rt_param(). Note that early releasing can easily peg your CPUs since early-releasing tasks never suspend to wait for their next job. As such, early releasing is really only useful in the context of implementing bandwidth servers, interrupt handling threads (or any thread that spends most of its time waiting for an event), or short-lived computations. If early releasing pegs your CPUs, then you probably shouldn't be using it.
| * C-EDF: Cluster-aware admission test.Glenn Elliott2013-03-12
| | | | | | | | | | | | | | | | cedf_admit_task() is too restrictive in that the task to be admitted must be executing on the same CPU as is set in the task's task_params. This patch allows the task to be admitted to be executing on the same cluter as the CPU set in the task's task_params.
| * uncachedev: mmap memory that is not cached by CPUsGlenn Elliott2013-03-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch creates a new character device, uncachedev. Pages of RAM allocated by this device are not cached by CPUs. Uses for such pages: 1) Determining *very* pessimistic emperical worst- case execution times. 2) Compare against performance with caches (quantify the avg. case benefit). 3) Deterministic memory accesses (access cannot cause a cache eviction.) 4) Theoretically, increased performance can be achieved by storing infrequently accessed data in uncache pages. uncachedev allocates pages with the pgprot_noncached() page attribute for user applications. Since pages allocated by uncachedev are not locked in memory by default, applications with any access level may mmap pages with uncachedev. Limitations: 1) Uncache pages must be MAP_PRIVATE. 2) Remapping not supported. Usage (user level): int size = NR_PAGES*PAGE_SIZE; int fd = open("/dev/litmus/uncache", O_RDWR); char *data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); <...do stuff...> munmap(data, size);
* | Injection of GPU migration events from usrspaceGlenn Elliott2013-02-28
| |
* | Merge remote-tracking branch 'github/staging' into wip-2012.3-gpu-stage-mergeGlenn Elliott2013-02-22
|\|
| * Disallow nesting of LITMUS^RT locksBjoern Brandenburg2013-02-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nesting of locks was never supported in LITMUS^RT since the required analysis does not exist anyway. That is, as defined in the literature, the protocols implemented in LITMUS^RT have not been studied in conjunction with nested critical sections. In LITMUS^RT, attempting to nest locks could lead to silent or not-so-silent bugs. This patch makes this restriction explicit and returns EBUSY when a process attempts to nest resources. This is enforced on a protocol-by-protocol basis, which means that adding protocols with support for nesting in future versions is not affected by this change. Exception: PCP and SRP resources may be nested, but not within global critical sections.
| * PCP: allow NULL config parameterBjoern Brandenburg2013-02-15
| | | | | | | | | | When the config parameter is NULL, just default to the local CPU, which is what we want in 99% of the cases anyway.
| * Fix tracepoint compilation errorstagingFelipe Cerqueira2013-02-14
| | | | | | | | | | | | Linux tracepoints for real time tasks were causing compilation errors. For the tracing data structures to be properly created, it's necessary to add a #define.
* | Comment out PAI in Kconfig for nowGlenn Elliott2013-02-20
| |
* | Fix partitioned C-EDFGlenn Elliott2013-02-20
| |
* | Fix DGL trace messagesGlenn Elliott2013-02-20
| |
* | compiler junkGlenn Elliott2013-02-20
| |
* | Minor fixes and cleanup.Glenn Elliott2013-02-20
| |
* | change sys_wait_for_ts_release to ret release timeGlenn Elliott2013-02-20
| |
* | Fixed migration tracing. Added inject of ST_ACTIONGlenn Elliott2013-02-20
| |
* | Support CUDA 4.2Glenn Elliott2013-02-20
| |
* | Generalize IKGLP implementationGlenn Elliott2013-02-14
| | | | | | | | | | | | | | | | | | | | | | | | | | Generalized the IKGLP implementation to support non-optimal configurations. Parameters allow the IKGLP to be configured as FIFO queues (aka KFMLP), a single priority queue, or a hybrid (optimal IKGLP). The maximum number of users within the FIFO queues is also parameterized, allowing more than 'm' replica holders to hold replicas concurrently (this breaks optimality though). Also fixed a bug in locking.c where DGL prority inheritance is determined.
* | BUG FIX: Support DGLs with PRIOQ_MUTEXwip-prioq-dglGlenn Elliott2013-02-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First 'working' implementation of DGLs with PRIOQ_MUTEX. (All other code prior was work-in-progress.) General approach: Because of priority queue order, PRIOQ_MUTEX DGLs must be *acquired* atomically. This means that a task cannot acquire an available PRIOQ_MUTEX if another PRIOQ_MUTEX is not available at the same time. Requests are buffered in PRIOQ_MUTEX and the resource 'idles'-- that is, the mutex owner is NULL, but there are waiting tasks for the resource. Several notes/side-effects: 1) A high-priority task that idles a resource can effectively block lower-priority tasks from acquiring that resource. This is because the low-prio task cannot skip ahead of the high-prio task in the priority queue. 2) Priority inheritance from nesting can cause the low-prioity task in #1 to jump over the high-priority task and acquire the resource. This means that any task blocked on a DGL that receives an increase in priority while blocked on the DGL must trigger a re-eval of the locks it can take. If the resources can be acquired, then the task needs to be woken up! <<<<< Lock acquisition via inheritance is entirely new and weird! >>>>> 3) A similar case for #2 exists for priorty decreases (example: this can happen when a task loses a donor) while it is blocked on a PRIOQ_MUTEX. The high-priority task described in #1 can change and become a lower- priority task. Every idle lock (mutex owner is NULL) on which the task losing priority must be revaluated--- it is possible that the (possible) new head on the priority queue can take the lock. Note: This affects BOTH singular and DGL resource requests, while the case described in #2 only affects DGL requests (because a singular request at the head of the priority queue will never idle a resource).
* | PRIOQ_MUTEX dgl progressGlenn Elliott2013-02-11
| |
* | Make PRIOQ &DGLs work. hangs w/ ikglp thoughGlenn Elliott2013-02-08
| |
* | Optimize DGLs of size = 1.Glenn Elliott2013-02-08
| |
* | Extend support for PRIOQ_MUTEXGlenn Elliott2013-02-08
| |
* | Add PRIOQ_MUTEX semaphoreGlenn Elliott2013-02-08
| |
* | Rename RSM Mutex to FIFO MutexGlenn Elliott2013-02-07
| |
* | re-enable klmirqd for workqueues, and grace rebootGlenn Elliott2013-02-06
| |
* | Fix: get_nv_max_device_owner() was always ret nullGlenn Elliott2013-02-05
| |
* | change "nil/-1" to "null/0" to match prop. m-lineGlenn Elliott2013-02-05
| |
* | Merge branch 'prop/misc-fixes' into wip-2012.3-gpuGlenn Elliott2013-02-05
|\|
| * P-FP: fix BUG_ON releated to priority inheritancearchive/unc-master-3.0Bjoern Brandenburg2013-02-04
| | | | | | | | | | | | | | In some cases, the PCP priority inheritance code triggered a (defensive) BUG_ON() in fp_common.c. This shuffles the order of operations a bit to be compliant with the restriction that tasks are never compared against themselves.
| * FDSO: fail to build if some ops are missingBjoern Brandenburg2013-02-04
| | | | | | | | Prevents out-of-bounds lookups.
| * TRACE_TASK(): accept NULL pointersBjoern Brandenburg2013-02-04
| | | | | | | | Allow tracing of NULL tasks. Makes debugging a bit easier.
* | a lame commitGlenn Elliott2013-02-05
| |
* | BUG IKGLP: Count replica holders as in FIFOGlenn Elliott2013-01-29
| | | | | | | | | | Tasks that immediatly acquired a free replica were not being counted as being in the FIFOs.
* | part. gpu hack and fixed dumb ikglp bugGlenn Elliott2013-01-28
| | | | | | | | | | | | IKGLP wasn't being passed the right value for 'm' in C-EDF. It went undected for so long since m < k in our GPUSync experiments.
* | ECRTS13 testbed (hopefully)Glenn Elliott2013-01-27
| | | | | | | | | | fixed minor bugs and cleaned up ikglp affinity logic
* | Added TRACE calls to ikglpGlenn Elliott2013-01-25
| |
* | Fix inheritance propagation for klmirqd&aux tasks.Glenn Elliott2013-01-24
| | | | | | | | | | | | | | | | | | | | Bug: Inheritance not propagated to klmirqd and aux tasks when the task these threads inherit from has a change in its own priority. (Also removed per-task NV interrupt tracking since we cannnot identify exact interrupt ownership under GPUSync.)
* | 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.
* | Minor changes to lock procGlenn Elliott2013-01-18
| |
* | minor fixesGlenn Elliott2013-01-18
| |