On Wed, Jul 07, 2021 at 02:20:07PM -0700, Dave Hansen wrote:
On 7/7/21 1:50 PM, Jarkko Sakkinen wrote:
There is consistent known behaviour how reclaimer and also the page fault are exercised for each test. I think that is what matters most right now that the basic behaviour of both the page reclaimer and page fault handler gets exercised.
There's also a lot of value to ensuring that tests can run _quickly_. If you have a test that fails one out of a million executions, it's a lot easier find and debug if it takes 1 ms versus 10 seconds.
In other words, I think I'd prefer if we run two enclaves in each execution of the selftest. One can be as small as possible. The other can be the reclaim-triggering one.
That's good both for test coverage, and it makes it a *bit* more straightforward to hack out the reclaim test if you need things to run faster.
The pkeys selftest isn't a bad example here either. It has a couple of different "malloc()" options: THP, hugetlbfs, small-page mmap(), and a bunch of tests it runs on each type. As we add more SGX tests, we might end up with "do reclaim" just being an option we pass.
Even with large EPC's, the current test runs quite fast, because heap is left unmeasured. It's the EEXTEND operations that would cause a major slow-down.
I would go only to something "more complex" when the current test hits the roof. I don't like to make code more complicated, when that does not happen.
When there's no compatibility requirements, it's not hard to refactor it later on.
/Jarkko