| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
simple IKGLP is already done. it does:
1) auto gpu de/registration.
2) distruption amongst simultanous users across queues
3) calls default IKGLP routines when appropriate.
Remaining work:
1) FQ advisement.
2) Donor stealing advisement.
3) Donee selection advisement.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
include/litmus/fdso.h
include/litmus/rt_param.h
include/litmus/sched_plugin.h
include/litmus/unistd_32.h
include/litmus/unistd_64.h
litmus/Makefile
litmus/edf_common.c
litmus/litmus.c
litmus/locking.c
litmus/sched_gsn_edf.c
litmus/sched_plugin.c
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
include/litmus/affinity.h
kernel/sched.c
kernel/softirq.c
litmus/Kconfig
litmus/affinity.c
litmus/litmus.c
litmus/preempt.c
litmus/sched_cedf.c
litmus/sched_gsn_edf.c
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Also reformated code to be slightly more
standard coding practice compliant.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Added support for Dynamic Group Locks. Locks
are FIFO ordered (no timestamps), so a big DGL
lock is needed to enqueue for resources atomically.
Unfortunatly, this requires nested inheritance to use
coarse-grain locking. Coarse-grain locking is used
when DGLs are enabled. Fine-grain locking is used
when DGLs are disabled.
TODO: Clean up IKGLP implementatio. There is
a lot of needless debug/TRACE work.
|
| | |
| | |
| | |
| | |
| | | |
Apply fixes to the IKGLP. Also, break binheap.h
into binheap.h/.c
|
| | |
| | |
| | |
| | |
| | | |
I don't like coding so much w/o testing, but it's
sort of hard to do without both lock() and unlock().
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Minor hack to lockdep was required too allow
the inheritance propagation locking logic to
work.
|
|\ \ \ |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Use binary heap to track CPU priorities.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | | |
Motivation: Linux's prio_heap.h is of fixed size. Litmus's binomial
heap may be overkill (and perhaps not general enough) for some applications.
Implemented in the style of linked lists.
|
| | | |
|
|/ / |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Increment a processor-local counter whenever an interrupt is handled.
This allows Feather-Trace to include a (truncated) counter and a flag
to report interference from interrupts. This could be used to filter
samples that were disturbed by interrupts.
|
| |
| |
| |
| |
| |
| | |
User a 32-bit word for all non-preemptive section flags.
Set the "please yield soon" flag atomically when
accessing it on remotely-scheduled tasks.
|
| |
| |
| |
| |
| | |
This allows us to splice in information into logs from events
that were recorded in userspace.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Preemption state tracing is only useful when debugging preemption-
and IPI-related races. Since it creates a lot of clutter in the logs,
this patch turns it off unless explicitly requested.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Needed to update C-EDF to handle release master. Also
updated get_nearest_available_cpu() to take NO_CPU instead
of -1 to indicate that there is no release master. While
NO_CPU is 0xffffffff (-1 in two's complement), we still
translate this value to -1 in case NO_CPU changes.
Signed-off-by: Andrea Bastoni <bastoni@cs.unc.edu>
|
| |
| |
| |
| |
| | |
Original comment said that this feature wasn't supported,
though it has been since around October 2010.
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
Given a choice between several available CPUs (unlinked) on which
to schedule a task, let the scheduler select the CPU closest to
where that task was previously scheduled. Hopefully, this will
reduce cache migration penalties.
Notes: SCHED_CPU_AFFINITY is dependent upon x86 (only x86 is
supported at this time). Also PFair/PD^2 does not make use of
this feature.
Signed-off-by: Andrea Bastoni <bastoni@cs.unc.edu>
|
|
|
|
|
|
|
|
|
|
| |
The next owner of a FMLP-protected resource is dequeued from
the FMLP FIFO queue by unlock() (when the resource is freed by
the previous owner) instead of performing the dequeue by the next
owner immediately after it has been woken up.
This simplifies the code a little bit and also reduces potential
spinlock contention.
|
|
|
|
|
| |
Inspired by the existing C-EDF code, this generic version will build
clusters of CPUs based on a given cache level.
|
|
|
|
|
| |
Make the cluster size configuration in C-EDF generic so that it can be
used by other clustered schedulers.
|
|
|
|
|
| |
Since we don't expect to trace more than one lock type at a time,
having protocol-specific trace points is not required.
|
|
|
|
|
|
|
|
|
|
|
|
| |
As Glenn pointed out, it is useful for some protocols (e.g.,
k-exclusion protocols) to know the userspace configuration at object
creation time. This patch changes the fdso API to pass the parameter
to the object constructor, which is then in turn passed to the lock
allocater. The return code from the lock allocater is passed to
userspace in return.
This also fixes some null pointer dereferences in the FDSO code found
by the test suite in liblitmus.
|
|
|
|
|
| |
Implement the partitioned FMLP with priority boosting based on the
generic lock API.
|
|
|
|
| |
While we are at it, simplify edf_higher_prio() a bit.
|