aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Fixed Task Exit issuelinking-wipZelin Tong2020-05-14
|
* WIP with my local changesZelin Tong2020-05-13
| | | | | contains changes regarding link_task_to_cpu and how budget enforcement works
* Latest Commitedfsc-wipZelin Tong2020-05-06
|
* Scheduler can now schedule (2, 3), (2, 3), (2, 3)Zelin Tong2020-03-08
|
* Fixed acceptance condition test in container_boundaryZelin Tong2020-03-08
| | | | | problem was caused by litmus's fixed point numbers handling negative values in a weird way
* Merge branch 'edfsc-wip' of rtsrv.cs.unc.edu:/public/litmus-rt-edfsc into ↵Zelin Tong2020-03-08
|\ | | | | | | edfsc-wip
| * Manage idle enforcement timer in g_job_completed as recommended by PeterJoshua Bakita2020-03-07
| |
| * Subtract from sys_util and handle signals in edfsc_admit_task()Joshua Bakita2020-03-07
| | | | | | | | | | | | Previously, sys_util held monotonically increasing values. This would cause the system to quickly believe it was saturated and reject all new tasks. It now behaves as expected.
* | Updated logic in utilization trackingZelin Tong2020-03-08
|/
* Unified handling of container releases based off work begun in 1624739aJoshua Bakita2020-03-07
| | | | Fixes the problems mentioned in 1624739a, but for g_job_completion()
* Correct accounting by saving the container_task pointer during edfsc_task_exit()Joshua Bakita2020-03-07
|
* Remove dead code, handle delayed migrations, and fix invalid memory handleJoshua Bakita2020-03-07
| | | | | | | | | As we should never see one of our job completion functions called on a task after it goes through edfsc_task_exit(), simplify that logic to just handle migrations. Also, hold a reference to the task_struct so that it still exists when task_deadline_callback() is called.
* Cleanup, no functional changesJoshua Bakita2020-03-07
|
* Make sure to re-run cschedule if we decide to continue running a containerJoshua Bakita2020-03-07
| | | | | | | | This fixes the issue where deadlines and releases were not being updated. As of this commit, multiple real-time tasks can be created, run simultaneously, be killed, and more tasks can be started and killed on a multicore system - all without crashing or freezing.
* Fix several issues in container_boundary and add documentationJoshua Bakita2020-03-07
| | | | | | | 1. Don't double-add to cpu heap 2. Correctly update linked_on to NO_CPU before linking container 3. Unlink container before requeuing 4. Don't requeue a container that's already queued
* Rewrite the entry->linked logic in edfsc_gscheduleJoshua Bakita2020-03-07
| | | | | | | | | | The old logic was not clear and made more calls than needed. This should be functionally equivalent, except that we don't try to reschedule if we didn't find anything to link. This also adds a BUG_ON to make sure that we don't simultaneously queue and link containers (this is an issue as of this commit, but my next commit will fix that).
* Fix comments, sanity checks, cleanup, and missing or incorrectly ordered ↵Joshua Bakita2020-03-07
| | | | | | spinlocks No functional changes, just some subtle ordering fixes
* Enable and fix fully provisioned containersJoshua Bakita2020-03-07
| | | | Before we could end up trying to do a bogus migration in unlink().
* Fix edfsc_task_new() for multicoreJoshua Bakita2020-03-07
| | | | | | Before we would mess up the container-core partitioning. Now we just trust edfsc_gschedule() to be able to work out the correct state without trying to guess in edfsc_task_new().
* Add comments and sanity checks - no functional changesJoshua Bakita2020-03-07
|
* Updated container budget trackingZelin Tong2020-03-06
|
* Fix edge cases in initialization and state trackingJoshua Bakita2020-03-06
| | | | | | Adds missing allocations in init and starts fixing some bad tracking of container->scheduled in g_finish_switch(), plus some fixes for migrating tasks and background scheduling.
* Fixed contain domain->scheduled trackingJoshua Bakita2020-03-06
| | | | scheduled for container domains is now set to null when container is preempted
* changes to budget tracking and schedulingZelin Tong2020-03-05
| | | | | | consolidated container budget tracking properly excluded fully provisioned containers and their cpus from gedf gschedule no longer returns non-rt tasks
* Merge branch 'edfsc-wip' of rtsrv.cs.unc.edu:/public/litmus-rt-edfsc into ↵Zelin Tong2020-03-05
|\ | | | | | | edfsc-wip
| * Fix lockup after edfsc_task_exit() and improve documentationJoshua Bakita2020-03-04
| | | | | | | | | | This removes a buggy old case that is no longer required since the edfsc_admit_task() rewrite.
* | Fixed calling link_task_to_cpu causing a BUG_ONZelin Tong2020-03-04
|/ | | | | | | | | | This happens because we're not properly scheduling containers to their associated cores and we're not properly keeping track of cpus whose containers are fully provisioned. I fixed the logic for that. Also, I moved around some functions to group them by similar usage and fixed some minor bugs
* Merge branch 'edfsc-wip' of rtsrv.cs.unc.edu:/public/litmus-rt-edfsc into ↵Zelin Tong2020-03-04
|\ | | | | | | edfsc-wip
| * Rewrite edfsc_task_exit(). Task termination now works.Joshua Bakita2020-03-04
| | | | | | | | | | Correcting the deadline timer to not touch potentially invalid memory is still TODO.
* | Fixed Budget tracking and removed excess printkZelin Tong2020-03-04
|/
* Rewrite EDF-sc task admission and fix all build warningsJoshua Bakita2020-03-02
| | | | | | | | | | | | | | | | | | | | | | | | Tasks are no longer unconditionally admitted. Now they suspend until the next container boundry at which we decide if they should be admitted before resuming them. This rewrites edfsc_task_new(), edfsc_admit_task(), and adjusts container_boundary() to wakeup tasks after making admission decisions. container_boundary() and g_job_completion() also contain fixes to correctly clear container->scheduled upon requeue. Finally, this rearranges some printk calls, adds some casts, and removes an unused variable to fix all compiler warnings. PS: This also removes an unconditional BUG() call that should never have been committed. As of this commit, rtspin runs without errors for me. Upon SIGTERM however, edfsc_task_exit() will corrupt the scheduler state and panic the system. SIGSTOP can work as a stand-in for now to demonstrate that the system is still stable.
* Convert sched_edfsc.c to UNIX line ending and use tabs rather than spacesJoshua Bakita2020-03-02
|
* Fix logic in gschedule and cschedule when prev is non-realtimeJoshua Bakita2020-03-02
|
* Various bug fixesZelin Tong2020-02-28
| | | | | | | | | | | Fixed a bug in gschedule where if a non-rt task is scheduled when a container is empty, on reschedule, the scheduler will not check if the container is still empty before resuming the non-rt task Fixed a bug in container_boundary where a container's exec_cost is changed when it should be changed when the container job 'completes' in g_job_completion. This can cause a container job to get extra or less budget if it's tardy
* Fixed accounting for empty container budgetZelin Tong2020-02-27
|
* End of day commit 2/26/2020Zelin Tong2020-02-26
| | | | | | | | | | | | | | | | | | changed edfsc_cschedule found no fixed task to be next, it will now return the container instead of null To explain the other changes, first I must explain the problem. When a container has no fixed tasks, but still has budget, there is nothing in litmus that enforces its budget or updates its exec_time in job_params. This means we will have to enforce the container budget in this case ourselves with an enforcement timer. Furthermore, we also have to update the exec_time ourselves since only actual task have their exec_time updated automatically by litmus the new functions are added and gschedule changed to fix the above problem
* Revert type fix on domain comparison as the old (ab)use is actually okayJoshua Bakita2020-02-26
|
* Revert BUG_ON in preempt() and clarify documentation + fix indentsJoshua Bakita2020-02-26
|
* Fix type mismatch, some indenting, and correctly set entry->scheduledJoshua Bakita2020-02-26
| | | | | | | | | | | | The schedule functions expect entry->scheduled to be set if the task is real-time, but edfsc_gschedule() is called before g_finish_switch() when inserting a new real-time task via edfsc_task_new(). Resolve this issue by also setting entry->scheduled in edfsc_task_new() if nothing was scheduled before. Current issue I'm working through is that entry->scheduled is still not always being set. This causes NULL to be passed to preempt(), which should never happen.
* End of day commit 2/25/2020Zelin Tong2020-02-25
| | | | | | | | | | | | -Added some printk statements to better debug why container_boundary would not execute 10ms after setting scheduler to EDF-sc -Initialized container exec_cost to 0 We still have unresolved issues. Namely, during container_boundary, when releasing new container jobs(where my printk statements are), the containers are shown to have a large, non-zero exec_cost despite the fact that there are no fixed tasks in the system. Need to check container_boundary logic.
* committed latest changesZelin Tong2020-02-25
|
* Added can_release in edfsc_params to help avoid race condition betweenlinux-4.9-litmuspeter2019-04-21
| | | | container boundary timer and container task completion
* Implemented container_boundary function(untested)peter2019-04-21
|
* Implemented background schedulingpeter2019-04-19
|
* Wrote removal stuffClara Hobbs2019-04-18
|
* Various little clean-up operationsClara Hobbs2019-04-18
|
* Added edfsc parameters in rt_param.hpeter2019-04-18
| | | | updated references to parameters in edfsc plugin
* current edfsc plugin progress:peter2019-04-18
| | | | | | worked out scheduling logic worked out logic for inserting and deleting tasks TODO: fix updated function names
* Added sched_edfsc plugin, which is still under constructionpeter2019-04-16
|
* Merge pull request #9 from Zildj1an/patch-2Björn Brandenburg2019-04-09
|\ | | | | add missing curly braces to error path