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

Re: [Xen-devel] [PATCH v2 3/3] xen: use idle vcpus to scrub pages



On 07/23/2014 03:28 PM, Jan Beulich wrote:
>>>> On 15.07.14 at 11:16, <bob.liu@xxxxxxxxxx> wrote:
>> After so many days I haven't make a workable solution if don't remove
>> pages temporarily. The hardest part is iterating the heap free list
>> without holding heap_lock because if holding the lock it might be heavy
>> lock contention.
>> So do you think it's acceptable if fixed all other concerns about this
>> patch?
> 
> No, I don't think so. Instead I'm of the opinion that you may have
> worked in the wrong direction: Rather than not taking the heap lock
> at all, it may also be sufficient to shrink the lock holding time (i.e.
> avoid long loops with the lock held).
> 

But I still think have to drop pages from heap list temporarily else
heap lock must be taken for a long time to get rid of E.g. below race
condition.

A: alloc path            B: idle loop

                        spin_lock(&heap_lock)
                      page_list_for_each( pg, &heap(node, zone, order) )
                        if _PGC_need_scrub is set, break;
                        spin_unlock(&heap_lock)

                        if ( test_bit(_PGC_need_scrub, pg)

^^^^
spin_lock(&heap_lock)
delist page
spin_unlock(&heap_lock)

write data to this page

                         scrub_one_page(pg)
                         ^^^ will clean useful data


-- 
Regards,
-Bob

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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