Hi -

This changes the VMM 2LS's greedy mode scheduler to be optimistic and
pinning.  

Optimistic means that it assumes it will get all of the cores it asks
for.  It's not ideal, but it's a good first step.

Pinning means the guest pcores are pinned to host pcores.  Task threads
run on vcore 0, which never yields (busywait - also not ideal).  Guest
threads (and their controller buddy thread) are pinned to the other
vcores, and the vcores never yield. 

Further, if the guest halts, the physical core will halt - it's still
allocated and considered in use by the process.  You'll see it as 100%
utilized in mpstat, but it shouldn't affect hyperthreads.  Guest pcores
never migrate either.

I might have a few more changes to this branch, possibly allocating
another core so VC 0's spinning doesn't hurt any of the GPCs.

Barret


The following changes since commit 82a6c5af0db02529f1fa89159a0654d9da763bd7:

  Fix deadlock in __hpf() (2017-08-23 17:48:29 -0400)

are available in the git repository at:

  [email protected]:brho/akaros.git vmm

for you to fetch changes up to a3ed4ea733ca1c35e51dc30a4e70b1460c444560:

  vmm: Allow VMMs to change vmexit conditions (XCC) (2017-08-24 16:20:30 -0400)

----------------------------------------------------------------
View this online at:
https://github.com/brho/akaros/compare/82a6c5af0db0...a3ed4ea733ca

----------------------------------------------------------------
Barret Rhoden (11):
      x86: vmm: Track state for handling vmexits as KERNEL
      x86: vmm: Use a separate vector for posted IRQs
      vmm: Collect and report scheduler stats
      vmm: Make the greedy 2LS pinning and optimistic
      x86: Remove split_msr_val()
      vmm: Remove nasty rdmsr() macro (XCC)
      vmm: Move chunks of ros/vmx.h into the kernel (XCC)
      vmm: Allow vmm.h to include vmx.h
      vmm: Add support for changing VMX controls
      Add READ_ONCE and WRITE_ONCE (XCC)
      vmm: Allow VMMs to change vmexit conditions (XCC)

 kern/arch/riscv/trap.h          |   1 +
 kern/arch/x86/process64.c       |   2 +-
 kern/arch/x86/ros/vmx.h         |  89 -------------------------
 kern/arch/x86/trap.c            |  10 ++-
 kern/arch/x86/trap.h            |   3 +-
 kern/arch/x86/trapentry64.S     |   6 +-
 kern/arch/x86/vmm/intel/vmx.c   | 133 +++++++++++++++++++++++++------------
 kern/arch/x86/vmm/intel/vmx.h   | 118 ++++++++++++++++++++++++++++-----
 kern/arch/x86/vmm/vmm.c         |  70 +++++---------------
 kern/arch/x86/vmm/vmm.h         |  21 +-----
 kern/arch/x86/x86.h             |   6 --
 kern/include/common.h           |  14 ++++
 kern/include/rbtree.h           |   3 -
 kern/include/ros/bits/syscall.h |   1 +
 kern/include/ros/common.h       |   4 +-
 kern/include/ros/vmm.h          |   6 ++
 kern/src/schedule.c             |   4 --
 kern/src/syscall.c              |  43 ++++++++++++
 tests/strace.c                  |   1 +
 user/vmm/include/vmm/sched.h    |   5 ++
 user/vmm/sched.c                | 142 ++++++++++++++++++++++++++++++++++++++--
 user/vmm/vmxmsr.c               | 114 +++++++-------------------------
 22 files changed, 461 insertions(+), 335 deletions(-)

-- 
You received this message because you are subscribed to the Google Groups 
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to