[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 4/9] mm: Scrub memory from idle loop

>>> On 05.05.17 at 15:42, <boris.ostrovsky@xxxxxxxxxx> wrote:
>>>> Otoh there's not much to scrub yet until Dom0 had all its memory
>>>> allocated, and we know which pages truly remain free (wanting
>>>> what is currently the boot time scrubbing done on them). But that
>>>> point in time may still be earlier than when we switch to
>>>> SYS_STATE_active.
>> IOW I think boot scrubbing could be kicked off as soon as Dom0
>> had the bulk of its memory allocated.
> Since we only are trying to avoid mapcache vcpu override can't we just
> scrub whenever override is NULL (per-cpu or not)?

But how do you know? The variable should remain static in
domain_page.c, so I think we'd instead need a notification to
the scrubber when it gets set back to NULL.

>>>>> @@ -1065,16 +1131,29 @@ static void scrub_free_pages(unsigned int node)
>>>>>                          pg[i].count_info &= ~PGC_need_scrub;
>>>>>                          node_need_scrub[node]--;
>>>>>                      }
>>>>> +                    if ( softirq_pending(cpu) )
>>>>> +                    {
>>>>> +                        preempt = true;
>>>>> +                        break;
>>>>> +                    }
>>>> Isn't this a little too eager, especially if you didn't have to scrub
>>>> the page on this iteration?
>>> What would be a good place then? Count how actually scrubbed pages and
>>> check for pending interrupts every so many?
>> Yes.
>>> Even if we don't scrub at all walking whole heap can take a while.
>> Correct - you can't skip this check altogether even if no page
>> requires actual scrubbing.
> But then how will counting help --- we want to periodically check even
> when count is zero? Once per zone? That still may be too infrequent
> since we may have, for example, one dirty page per order and so we are
> scanning whole order but bumping the count by only one.

Oh, I didn't read your proposal properly. Of course you'd need
to count loop iterations, not pages scrubbed. Presumably you'd
want to increment the counter by one when not scrubbing the
page, and by a larger value when scrubbing is needed.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.