Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slite and parallel runtime work #402

Open
wants to merge 144 commits into
base: ppos
Choose a base branch
from

Conversation

phanikishoreg
Copy link
Member

Summary of this Pull Request (PR)

This PR includes a lot of the work towards RTAS'20 research, Slite, enabling near zero-cost, configurable scheduling!

  • Slite user-level scheduling
  • SCB, DCB capabilities
  • Part - Parallel runtime
  • OpenMP wrappers and test programs

I see from the diff that, there is more to it:

  • IOAPIC stuff

Intent for your PR

Choose one (Mandatory):

  • This PR is for a code-review and is intended to get feedback, but not to be pulled yet.
  • This PR is mature, and ready to be integrated into the repo.

Reviewers (Mandatory):

@gparmer
@hungry-foolish @WenyuanShao I know this is a lot to ask, but if you guys have a bit of time here and there, please provide feedback at your own pace. Thanks!

Code Quality

I will go through a round of self-review before I check these boxes. Closer to the deadline of the paper, I'm sure I did not adhere to the quality guidelines.
As part of this pull request, I've considered the following:

Style:

  • Comments adhere to the Style Guide (SG)
  • Spacing adhere's to the SG
  • Naming adhere's to the SG
  • All other aspects of the SG are adhered to, or exceptions are justified in this pull request
  • I have run the auto formatter on my code before submitting this PR (see doc/auto_formatter.md for instructions)

Code Craftsmanship:

  • I've made an attempt to remove all redundant code
  • I've considered ways in which my changes might impact existing code, and cleaned it up
  • I've formatted the code in an effort to make it easier to read (proper error handling, function use, etc...)
  • I've commented appropriately where code is tricky
  • I agree that there is no "throw-away" code, and that code in this PR is of high quality

Testing

I've tested the code using the following test programs (provide list here):

  • micro_booter
  • unit_pingpong
  • unit_schedtests

phanikishoreg and others added 30 commits February 3, 2018 13:13
…apic

Conflicts RESOLVED:
	src/platform/i386/hpet.c
	src/platform/i386/isr.h
	src/platform/i386/kernel.c
	src/platform/i386/kernel.h
	src/platform/i386/lapic.c
	src/platform/i386/vga.c
	src/platform/i386/vm.c
Ioapic api for multi-core and apicid programming
Multi-core in llbooter, capmgr, sl, cos_kernel_api(locks) and other related
* Major limitations: no kernel entry allowed at anytime. That could potentially
  screw up things for the "current thread".
* SCB and DCB are user-level only. Have to enable kernel-user page sharing, TODO!
* Given these limitations, tested sl_yield(), and the benchmarks look promising.
  With only kernel-level dispatching: AVG: 620, WC:804
  With only user-level dispatching: AVG: 340, WC: 750
  With shared pages, a couple more branches in the kernel-dispatching.
8k)

* it says successful sometimes, failed sometimes.
* I recently added that rule to clean ps on distclean but I didn't
  realize it wont work on fresh clone, for now reverting it.
- TODO: test interrupt to sched (direct) switch..
…to slite

Conflicts:
	src/components/implementation/tests/unit_slrcv/Makefile
	src/components/implementation/tests/unit_slrcv/init.c
	src/components/include/sl.h
	src/components/lib/sl/sl_sched.c
	src/platform/i386/runscripts/unit_slite01.sh
* TODO! invocation + switch!
* if ulthd != kthd, get the comp_info of the ulthd to proceed from
  lazyupdate!!
* pass the timeout with the api to call slowpath kernel switch
* make sure cos_rcv is called with the sched timer in cos_ul_rcv.
* if cos_rcv is switching back to the scheduler, do not disable the
  timer.
* there seem to be some cases, where switching to a tcap with infinite
  budget is disabling timer somewhere. It happens when tcap has inf budget
  and timeout is set to NIL. Timeout should be set appropriately!
  This will disable the timer programmed previously.
* resolved conflicts
* fixed bugs and made necessary changes to use slite.
  for ex: cos_sched_rcv now adds events to the ring buffer, so fixed the
kernel-test for tcaps to use that.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants