On Wed Aug 21, 2024 at 4:54 AM EEST, Haitao Huang wrote: > With EPC cgroups, the global reclamation function, > sgx_reclaim_pages_global(), can no longer apply to the global LRU as > pages are now in per-cgroup LRUs. > > Create a wrapper, sgx_cgroup_reclaim_global() to invoke > sgx_cgroup_reclaim_pages() passing in the root cgroup. Call this wrapper > from sgx_reclaim_pages_global() when cgroup is enabled. The wrapper will > scan and attempt to reclaim SGX_NR_TO_SCAN pages just like the current > global reclaim. > > Note this simple implementation doesn't _exactly_ mimic the current > global EPC reclaim (which always tries to do the actual reclaim in batch > of SGX_NR_TO_SCAN pages): in rare cases when LRUs have less than > SGX_NR_TO_SCAN reclaimable pages, the actual reclaim of EPC pages will > be split into smaller batches _across_ multiple LRUs with each being > smaller than SGX_NR_TO_SCAN pages. > > A more precise way to mimic the current global EPC reclaim would be to > have a new function to only "scan" (or "isolate") SGX_NR_TO_SCAN pages > _across_ the given EPC cgroup _AND_ its descendants, and then do the > actual reclaim in one batch. But this is unnecessarily complicated at > this stage to address such rare cases. > > Signed-off-by: Haitao Huang <haitao.hu...@linux.intel.com>
Reviewed-by: Jarkko Sakkinen <jar...@kernel.org> BR, Jarkko