On Wed Aug 21, 2024 at 4:53 AM EEST, Haitao Huang wrote: > From: Kristen Carlson Accardi <[email protected]> > > In cases EPC pages need be allocated during a page fault and the cgroup > usage is near its limit, an asynchronous reclamation needs to be > triggered to avoid blocking the page fault handling. > > To keep implementation simple, use a workqueue instead of kthread to > schedule the asynchronous reclamation work. Add corresponding work item and > function definitions for EPC cgroup. > > In sgx_cgroup_try_charge(), if caller does not allow synchronous > reclamation, queue an asynchronous work into the workqueue. > > The current global reclaimer, ksgxd, maintains a threshold for the > minimal free EPC pages to avoid thrashing when allocating EPC pages. > Similarly, only reclaiming EPC pages from the current cgroup when its > usage actually reaches limit could also cause thrashing. To avoid that, > define a similar "per-cgroup usage threshold" and actively trigger > asynchronous per-cgroup EPC reclamation when the usage reaches the > threshold after try_charge() is successful. > > Co-developed-by: Sean Christopherson <[email protected]> > Signed-off-by: Sean Christopherson <[email protected]> > Signed-off-by: Kristen Carlson Accardi <[email protected]> > Co-developed-by: Haitao Huang <[email protected]> > Signed-off-by: Haitao Huang <[email protected]> > Tested-by: Jarkko Sakkinen <[email protected]>
Reviewed-by: Jarkko Sakkinen <[email protected]> BR, Jarkko

