vmm: Make the greedy 2LS pinning and optimistic
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 14 Aug 2017 20:37:53 +0000 (16:37 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 25 Aug 2017 18:41:49 +0000 (14:41 -0400)
commit40a49e1b22c6af5b015f1ca057d8b88fb159a531
treeb59a8bb36c0e66de9787f776a28c6e478e4da627
parentfd190b57aa1a4d55d051a97d661fb3e3ef5e299e
vmm: Make the greedy 2LS pinning and optimistic

The greedy flag (-g) now causes the VMM 2LS to do the following:
- Ask for N + 1 vcores, with N == nr_guest_cores.
- Assume all of those vcores are allocated (optimistic)
- Never yield those vcores
- All task threads run on vcore 0, including timer alarms
- All other vcores run their respective guest thread or controller thread.
  E.g. vcore 1 run GPC 0.

With this, guest cores are never rescheduled - they stay on the same vcore,
and thus the same underlying pcore, since we never yield.

Note that this assumes all vcores are allocated and remain that way.  So
any preemptions will screw it up.  Fixing that is a much harder TODO.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/vmm/sched.c