linux-sgx.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Haitao Huang" <haitao.huang@linux.intel.com>
To: "jarkko@kernel.org" <jarkko@kernel.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"tj@kernel.org" <tj@kernel.org>,
	"mkoutny@suse.com" <mkoutny@suse.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-sgx@vger.kernel.org" <linux-sgx@vger.kernel.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"cgroups@vger.kernel.org" <cgroups@vger.kernel.org>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>, "hpa@zytor.com" <hpa@zytor.com>,
	"Mehta, Sohil" <sohil.mehta@intel.com>,
	"Huang, Kai" <kai.huang@intel.com>
Cc: "Li, Zhiquan1" <zhiquan1.li@intel.com>,
	"kristen@linux.intel.com" <kristen@linux.intel.com>,
	"seanjc@google.com" <seanjc@google.com>,
	"Zhang, Bo" <zhanb@microsoft.com>,
	"anakrish@microsoft.com" <anakrish@microsoft.com>,
	"mikko.ylinen@linux.intel.com" <mikko.ylinen@linux.intel.com>,
	"yangjie@microsoft.com" <yangjie@microsoft.com>,
	"chrisyan@microsoft.com" <chrisyan@microsoft.com>
Subject: Re: [PATCH v8 07/15] x86/sgx: Expose sgx_reclaim_pages() for cgroup
Date: Tue, 30 Jan 2024 19:35:19 -0600	[thread overview]
Message-ID: <op.2id1c5n3wjvjmi@hhuan26-mobl.amr.corp.intel.com> (raw)
In-Reply-To: <BL1PR11MB5978A8E4B6E1DC4CC0159FD0F77D2@BL1PR11MB5978.namprd11.prod.outlook.com>

On Tue, 30 Jan 2024 09:39:44 -0600, Huang, Kai <kai.huang@intel.com> wrote:

>> + * @lru:	The LRU from which pages are reclaimed.
>> + * @nr_to_scan: Pointer to the target number of pages to scan, must be  
>> less
>> than
>> + *		SGX_NR_TO_SCAN.
>> + * Return:	Number of pages reclaimed.
>>   */
>> -static void sgx_reclaim_pages(void)
>> +unsigned int sgx_reclaim_pages(struct sgx_epc_lru_list *lru, unsigned
>> +int *nr_to_scan)
>
> Since the function is now returning the number of reclaimed pages, why  
> do you need to make the @nr_to_scan as pointer?
>
> Cannot the caller just adjust @nr_to_scan when calling this function  
> based on how many pages have reclaimed?
>
> I am not even sure whether you need @nr_to_scan at all because as we  
> discussed I think it's just extremely rare you need to pass "<  
> SGX_NR_TO_SCAN" to this function.
>
> Even if you need, you can always choose to try to reclaim SGX_NR_TO_SCAN  
> pages.
>

I tested with that approach and found we can only target number of pages  
attempted to reclaim not pages actually reclaimed due to the uncertainty  
of how long it takes to reclaim pages. Besides targeting number of scanned  
pages for each cycle is also what the ksgxd does.

If we target actual number of pages, sometimes it just takes too long. I  
saw more timeouts with the default time limit when running parallel  
selftests.

We also need return number of pages actually reclaimed as indication to  
caller whether we actually reclaimed any pages at all. The caller, e.g.,  
sgx_epc_cg_try_charge(), then can decide to schedule() or continue next  
step which usually is allocation of the page.

> [...]
>
>>
>> +static void sgx_reclaim_pages_global(void) {
>> +	unsigned int nr_to_scan = SGX_NR_TO_SCAN;
>> +
>> +	sgx_reclaim_pages(&sgx_global_lru, &nr_to_scan); }
>> +
>
> I think this function doesn't look sane at all when you have @nr_to_scan  
> being a pointer?
>

You will see the pointer being used later for cgroup worker.

> I am also not sure whether this function is needed -- if we don't add  
> @nr_to_scan to sgx_reclaim_pages(), then this function is basically:
>
> 	sgx_reclaim_pages(&sgx_global_lru);
>

As indicated in the commit message, this wrapper is getting ready for  
doing global reclamation from root cgroup. You will see it changed later.


Thanks
Haitao

  reply	other threads:[~2024-01-31  1:35 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-30  2:09 [PATCH v8 00/15] Add Cgroup support for SGX EPC memory Haitao Huang
2024-01-30  2:09 ` [PATCH v8 01/15] cgroup/misc: Add per resource callbacks for CSS events Haitao Huang
2024-02-01 23:24   ` Jarkko Sakkinen
2024-02-02 16:34     ` Haitao Huang
2024-02-02 17:02       ` Tejun Heo
2024-02-12 19:31       ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 02/15] cgroup/misc: Export APIs for SGX driver Haitao Huang
2024-01-30  2:09 ` [PATCH v8 03/15] cgroup/misc: Add SGX EPC resource type Haitao Huang
2024-01-30  2:09 ` [PATCH v8 04/15] x86/sgx: Implement basic EPC misc cgroup functionality Haitao Huang
2024-01-30 15:22   ` Huang, Kai
2024-01-31  1:59     ` Haitao Huang
2024-02-01 23:27   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 05/15] x86/sgx: Add sgx_epc_lru_list to encapsulate LRU list Haitao Huang
2024-02-01 23:28   ` Jarkko Sakkinen
2024-02-02 16:52     ` Haitao Huang
2024-01-30  2:09 ` [PATCH v8 06/15] x86/sgx: Abstract tracking reclaimable pages in LRU Haitao Huang
2024-02-01 23:29   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 07/15] x86/sgx: Expose sgx_reclaim_pages() for cgroup Haitao Huang
2024-01-30 15:39   ` Huang, Kai
2024-01-31  1:35     ` Haitao Huang [this message]
2024-02-01 23:37   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 08/15] x86/sgx: Implement EPC reclamation flows " Haitao Huang
2024-02-01 23:39   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 09/15] x86/sgx: Charge mem_cgroup for per-cgroup reclamation Haitao Huang
2024-01-30  2:09 ` [PATCH v8 10/15] x86/sgx: Add EPC reclamation in cgroup try_charge() Haitao Huang
2024-01-30  2:09 ` [PATCH v8 11/15] x86/sgx: Abstract check for global reclaimable pages Haitao Huang
2024-01-30  2:09 ` [PATCH v8 12/15] x86/sgx: Expose sgx_epc_cgroup_reclaim_pages() for global reclaimer Haitao Huang
2024-01-30  2:09 ` [PATCH v8 13/15] x86/sgx: Turn on per-cgroup EPC reclamation Haitao Huang
2024-01-30  2:09 ` [PATCH v8 14/15] Docs/x86/sgx: Add description for cgroup support Haitao Huang
2024-01-30  2:09 ` [PATCH v8 15/15] selftests/sgx: Add scripts for EPC cgroup testing Haitao Huang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=op.2id1c5n3wjvjmi@hhuan26-mobl.amr.corp.intel.com \
    --to=haitao.huang@linux.intel.com \
    --cc=anakrish@microsoft.com \
    --cc=bp@alien8.de \
    --cc=cgroups@vger.kernel.org \
    --cc=chrisyan@microsoft.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jarkko@kernel.org \
    --cc=kai.huang@intel.com \
    --cc=kristen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sgx@vger.kernel.org \
    --cc=mikko.ylinen@linux.intel.com \
    --cc=mingo@redhat.com \
    --cc=mkoutny@suse.com \
    --cc=seanjc@google.com \
    --cc=sohil.mehta@intel.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=x86@kernel.org \
    --cc=yangjie@microsoft.com \
    --cc=zhanb@microsoft.com \
    --cc=zhiquan1.li@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).