Re: [RFC 00/11] Remove 'order' argument from many mm functions

Ira Weiny
2019-05-09T01:57:38Z

On Mon, May 06, 2019 at 09:05:58PM -0700, Matthew Wilcox wrote:
> From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
>
> It's possible to save a few hundred bytes from the kernel text by moving
> the 'order' argument into the GFP flags. I had the idea while I was
> playing with THP pagecache (notably, I didn't want to add an 'order'
> parameter to pagecache_get_page())
>
> What I got for a -tiny config for page_alloc.o (with a tinyconfig,
> x86-32) after each step:
>
> text data bss dec hex filename
> 21462 349 44 21855 555f 1.o
> 21447 349 44 21840 5550 2.o
> 21415 349 44 21808 5530 3.o
> 21399 349 44 21792 5520 4.o
> 21399 349 44 21792 5520 5.o
> 21367 349 44 21760 5500 6.o
> 21303 349 44 21696 54c0 7.o
> 21303 349 44 21696 54c0 8.o
> 21303 349 44 21696 54c0 9.o
> 21303 349 44 21696 54c0 A.o
> 21303 349 44 21696 54c0 B.o
>
> I assure you that the callers all shrink as well. vmscan.o also
> shrinks, but I didn't keep detailed records.
>
> Anyway, this is just a quick POC due to me being on an aeroplane for
> most of today. Maybe we don't want to spend five GFP bits on this.
> Some bits of this could be pulled out and applied even if we don't want
> to go for the main objective. eg rmqueue_pcplist() doesn't use its
> gfp_flags argument.

Over all I may just be a simpleton WRT this but I'm not sure that the added
complexity justifies the gain.

But other than the 1 patch I don't see anything technically wrong. So I
guess...

Reviewed-by: Ira Weiny <ira.weiny@intel.com>

>
> Matthew Wilcox (Oracle) (11):
> fix function alignment
> mm: Pass order to __alloc_pages_nodemask in GFP flags
> mm: Pass order to __get_free_pages() in GFP flags
> mm: Pass order to prep_new_page in GFP flags
> mm: Remove gfp_flags argument from rmqueue_pcplist
> mm: Pass order to rmqueue in GFP flags
> mm: Pass order to get_page_from_freelist in GFP flags
> mm: Pass order to __alloc_pages_cpuset_fallback in GFP flags
> mm: Pass order to prepare_alloc_pages in GFP flags
> mm: Pass order to try_to_free_pages in GFP flags
> mm: Pass order to node_reclaim() in GFP flags
>
> arch/x86/Makefile_32.cpu | 2 +
> arch/x86/events/intel/ds.c | 4 +-
> arch/x86/kvm/vmx/vmx.c | 4 +-
> arch/x86/mm/init.c | 3 +-
> arch/x86/mm/pgtable.c | 7 +--
> drivers/base/devres.c | 2 +-
> include/linux/gfp.h | 57 +++++++++++---------
> include/linux/migrate.h | 2 +-
> include/linux/swap.h | 2 +-
> include/trace/events/vmscan.h | 28 +++++-----
> mm/filemap.c | 2 +-
> mm/gup.c | 4 +-
> mm/hugetlb.c | 5 +-
> mm/internal.h | 5 +-
> mm/khugepaged.c | 2 +-
> mm/mempolicy.c | 30 +++++------
> mm/migrate.c | 2 +-
> mm/mmu_gather.c | 2 +-
> mm/page_alloc.c | 97 +++++++++++++++++------------------
> mm/shmem.c | 5 +-
> mm/slub.c | 2 +-
> mm/vmscan.c | 26 +++++-----
> 22 files changed, 147 insertions(+), 146 deletions(-)
>
> --
> 2.20.1
>