On Mon, May 06, 2019 at 09:05:58PM -0700, Matthew Wilcox wrote: > From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> > > 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@xxxxxxxxx> > > 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 >