Re: [PATCH v2 00/15] Remove 'order' argument from many mm functions

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

 



On Fri 10-05-19 06:50:23, Matthew Wilcox wrote:
> From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx>
> 
> This is a little more serious attempt than v1, since nobody seems opposed
> to the concept of using GFP flags to pass the order around.  I've split
> it up a bit better, and I've reversed the arguments of __alloc_pages_node
> to match the order of the arguments to other functions in the same family.
> alloc_pages_node() needs the same treatment, but there's about 70 callers,
> so I'm going to skip it for now.
> 
> This is against current -mm.  I'm seeing a text saving of 482 bytes from
> a tinyconfig vmlinux (1003785 reduced to 1003303).  There are more
> savings to be had by combining together order and the gfp flags, for
> example in the scan_control data structure.

So what is the primary objective here? Reduce the code size? Reduce the
registers pressure? Please tell us more why changing the core allocator
API and make it more subtle is worth it.

> I think there are also cognitive savings to be had from eliminating
> some of the function variants which exist solely to take an 'order'.
> 
> Matthew Wilcox (Oracle) (15):
>   mm: Remove gfp_flags argument from rmqueue_pcplist
>   mm: Pass order to __alloc_pages_nodemask in GFP flags
>   mm: Pass order to __alloc_pages in GFP flags
>   mm: Pass order to alloc_page_interleave in GFP flags
>   mm: Pass order to alloc_pages_current in GFP flags
>   mm: Pass order to alloc_pages_vma in GFP flags
>   mm: Pass order to __alloc_pages_node in GFP flags
>   mm: Pass order to __get_free_page in GFP flags
>   mm: Pass order to prep_new_page in GFP flags
>   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/ia64/kernel/uncached.c       |  6 +-
>  arch/ia64/sn/pci/pci_dma.c        |  4 +-
>  arch/powerpc/platforms/cell/ras.c |  5 +-
>  arch/x86/events/intel/ds.c        |  4 +-
>  arch/x86/kvm/vmx/vmx.c            |  4 +-
>  drivers/misc/sgi-xp/xpc_uv.c      |  5 +-
>  include/linux/gfp.h               | 59 +++++++++++--------
>  include/linux/migrate.h           |  2 +-
>  include/linux/swap.h              |  2 +-
>  include/trace/events/vmscan.h     | 28 ++++-----
>  kernel/profile.c                  |  2 +-
>  mm/filemap.c                      |  2 +-
>  mm/gup.c                          |  4 +-
>  mm/hugetlb.c                      |  5 +-
>  mm/internal.h                     |  5 +-
>  mm/khugepaged.c                   |  2 +-
>  mm/mempolicy.c                    | 34 +++++------
>  mm/migrate.c                      |  9 ++-
>  mm/page_alloc.c                   | 98 +++++++++++++++----------------
>  mm/shmem.c                        |  5 +-
>  mm/slab.c                         |  3 +-
>  mm/slob.c                         |  2 +-
>  mm/slub.c                         |  2 +-
>  mm/vmscan.c                       | 26 ++++----
>  24 files changed, 157 insertions(+), 161 deletions(-)
> 
> -- 
> 2.20.1

-- 
Michal Hocko
SUSE Labs




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux