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

EPT lags out PC; while it's working on VM #37

Open
arnerak opened this issue Apr 27, 2019 · 5 comments
Open

EPT lags out PC; while it's working on VM #37

arnerak opened this issue Apr 27, 2019 · 5 comments

Comments

@arnerak
Copy link

arnerak commented Apr 27, 2019

Sorry to bother again. Enabling EPT (and only mapping identity) severely degrades system performance when run on my PC. I also noticed the "System Interrupts" process occasionally has high CPU load (~20%) when hvpp is running. I don't have this issue on VMWare. What could be the cause of this?

@arnerak
Copy link
Author

arnerak commented Apr 28, 2019

Just to clarify, this happens with both unmodified hvppdrv and hvppdrv_c. Commenting out these lines "fixes" the issue, however I'm dependant on EPT functionality.
https://github.com/wbenny/hvpp/blob/master/src/hvppdrv/vmexit_custom.cpp#L14-L15

@syslaz
Copy link

syslaz commented Dec 4, 2019

Any fixes for this issue? I'm having the same problem on different machines.

@syslaz
Copy link

syslaz commented Dec 9, 2019

Can confirm on two separate systems that while HVPP is running, System Interrupts jumps to ~11% on one, and on another ~18%. On my personal it stays at ~0% no issues.

@syslaz
Copy link

syslaz commented Dec 9, 2019

It seems that disabling KVAShadowing seems to fix this completely. No idea why it does so.

@syslaz
Copy link

syslaz commented Jan 6, 2020

After some investigating I've come to close to a conclusion that this is being caused only on Intels 5th generation and older, more than likely related to changes to the MM_PAUSE instruction latency in the newer generations. It seems that there is a deadlock happening related to the spinlock used in the hypervisor memory allocator. I have no idea what the actual cause is but creating an allocator per CPU to remove the spinlock seems to help tremendously. Still seems there's a deeper issue going on.

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

No branches or pull requests

2 participants