|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen/page_alloc: Simplify domain_adjust_tot_pages
On 24.02.2025 15:49, Alejandro Vallejo wrote:
> Open question to whoever reviews this...
>
> On Mon Feb 24, 2025 at 1:27 PM GMT, Alejandro Vallejo wrote:
>> spin_lock(&heap_lock);
>> - /* adjust domain outstanding pages; may not go negative */
>> - dom_before = d->outstanding_pages;
>> - dom_after = dom_before - pages;
>> - BUG_ON(dom_before < 0);
>> - dom_claimed = dom_after < 0 ? 0 : dom_after;
>> - d->outstanding_pages = dom_claimed;
>> - /* flag accounting bug if system outstanding_claims would go negative */
>> - sys_before = outstanding_claims;
>> - sys_after = sys_before - (dom_before - dom_claimed);
>> - BUG_ON(sys_after < 0);
>> - outstanding_claims = sys_after;
>> + BUG_ON(outstanding_claims < d->outstanding_pages);
>> + if ( pages > 0 && d->outstanding_pages < pages )
>> + {
>> + /* `pages` exceeds the domain's outstanding count. Zero it out. */
>> + outstanding_claims -= d->outstanding_pages;
>> + d->outstanding_pages = 0;
>
> While this matches the previous behaviour, do we _really_ want it? It's weird,
> quirky, and it hard to extend to NUMA-aware claims (which is something in
> midway through).
>
> Wouldn't it make sense to fail the allocation (earlier) if the claim has run
> out? Do we even expect this to ever happen this late in the allocation call
> chain?
This goes back to what a "claim" means. Even without any claim, a domain may
allocate memory. So a claim having run out doesn't imply allocation has to
fail.
NUMA-aware claims require more than an adjustment just here, I expect. Tracking
of claims (certainly the global, maybe also the per-domain value) would likely
need to become per-node, for example.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |