Messages in this thread | | | Subject | Re: [PATCH v5 2/2] mm/page_alloc: remove software prefetching in __free_pages_core | From | Vlastimil Babka <> | Date | Wed, 10 Oct 2018 18:36:52 +0200 |
| |
On 10/5/18 10:10 AM, Arun KS wrote: > They not only increase the code footprint, they actually make things > slower rather than faster. Remove them as contemporary hardware doesn't > need any hint. > > Suggested-by: Dan Williams <dan.j.williams@intel.com> > Signed-off-by: Arun KS <arunks@codeaurora.org>
Yeah, a tight loop with fixed stride is a trivial case for hw prefetcher.
Acked-by: Vlastimil Babka <vbabka@suse.cz>
> --- > mm/page_alloc.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 7ab5274..90db431 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -1258,14 +1258,10 @@ void __free_pages_core(struct page *page, unsigned int order) > struct page *p = page; > unsigned int loop; > > - prefetchw(p); > - for (loop = 0; loop < (nr_pages - 1); loop++, p++) { > - prefetchw(p + 1); > + for (loop = 0; loop < nr_pages ; loop++, p++) { > __ClearPageReserved(p); > set_page_count(p, 0); > } > - __ClearPageReserved(p); > - set_page_count(p, 0); > > page_zone(page)->managed_pages += nr_pages; > set_page_refcounted(page); >
| |