Hi - This saves and restores FPU/XMM state when we enter vcore context.
Unfortunately, this is the best I can do for for now: every async vcore_entry (event/notif, trap, vmexit) will save and restore the FPU/XMM state. Save/restore adds about 250 cycles on what is normally a 2850 cycle operation (as measured by tests/interference). The driver for this is that there are just too many ways that vcore context code can clobber XMM registers. Until we sort that out, like by not calling into glibc at all from VC ctx, we'll have to save/restore. This bug (occasional xmm clobber) triggered all sorts of nasty things: - ssh+scp to VM guests of large files would fail - ssh connection to VM guests would occasionally die - Go tests in a VM guest would fail - Large initramfs's for the guest would fail to unpack - Plus whatever was happening about a year ago with Kyle and Gan - Plus whatever was happening about 18 months ago with Mike Barret The following changes since commit 88501869ce07386cd7695989ab22fddf3e860b6a: Documentation: document running go test with u-root (2017-09-25 13:55:03 -0400) are available in the git repository at: [email protected]:brho/akaros.git aggressive-fp-save for you to fetch changes up to 5562ccb05015af83cc7a410e01ac9e6f56256462: parlib: Aggressively save and restore the FPU (2017-09-27 11:11:05 -0400) ---------------------------------------------------------------- View this online at: https://github.com/brho/akaros/compare/88501869ce07...5562ccb05015 ---------------------------------------------------------------- Barret Rhoden (3): parlib: Add a couple helpers Add tests for interference parlib: Aggressively save and restore the FPU kern/arch/x86/rdtsc_test.c | 79 ++++++++++++++++++++ tests/interference.c | 138 +++++++++++++++++++++++++++++++++++ tests/misc-compat.h | 8 ++ user/parlib/include/parlib/uthread.h | 5 ++ user/parlib/include/parlib/vcore.h | 6 ++ user/parlib/uthread.c | 50 ++++++++++--- 6 files changed, 276 insertions(+), 10 deletions(-) create mode 100644 tests/interference.c -- 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.
