mm: Support compiling out madvise and fadvise
Subsystems (2)
PATCH 1/1 mm: Support compiling out madvise and fadvise
Many embedded systems will not need these syscalls, and omitting them saves space. Add a new EXPERT config option CONFIG_ADVISE_SYSCALLS (default y) to support compiling them out.
bloat-o-meter:
add/remove: 0/3 grow/shrink: 0/0 up/down: 0/-2250 (-2250)
function old new delta
sys_fadvise64 57 - -57 sys_fadvise64_64 691 - -691 sys_madvise 1502 - -1502
---
Posting this for review. I can upstream this directly through my new tiny tree.
init/Kconfig | 10 ++++++++++ kernel/sys_ni.c | 3 +++ mm/Makefile | 7 +++++-- 3 files changed, 18 insertions(+), 2 deletions(-)
init/Kconfig +10 -0
@@ -1537,6 +1537,16 @@ config AIO by some high performance threaded applications. Disabling this option saves about 7k. +config ADVISE_SYSCALLS + bool "Enable madvise/fadvise syscalls" if EXPERT + default y + help + This option enables the madvise and fadvise syscalls, used by + applications to advise the kernel about their future memory or file + usage, improving performance. If building an embedded system where no + applications use these syscalls, you can disable this option to save + space. + config PCI_QUIRKS default y bool "Enable PCI quirk workarounds" if EXPERT
kernel/sys_ni.c +3 -0
@@ -156,6 +156,9 @@ cond_syscall(sys_process_vm_writev);cond_syscall (compat_sys_process_vm_readv);cond_syscall (compat_sys_process_vm_writev);cond_syscall (sys_uselib); +cond_syscall (sys_fadvise64); +cond_syscall (sys_fadvise64_64); +cond_syscall (sys_madvise);/* arch-specific weak syscall entries */ cond_syscall (sys_pciconfig_read);
mm/Makefile +5 -2
@@ -3,7 +3,7 @@ # mmu-y := nommu.o -mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o madvise.o memory.o mincore.o \ +mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o memory.o mincore.o \ mlock.o mmap.o mprotect.o mremap.o msync.o rmap.o \ vmalloc.o pagewalk.o pgtable-generic.o
@@ -11,7 +11,7 @@ ifdef CONFIG_CROSS_MEMORY_ATTACH mmu-$(CONFIG_MMU) += process_vm_access.o endif -obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ +obj-y := filemap.o mempool.o oom_kill.o \ maccess.o page_alloc.o page-writeback.o \ readahead.o swap.o truncate.o vmscan.o shmem.o \ util.o mmzone.o vmstat.o backing-dev.o \
@@ -28,6 +28,9 @@ else obj-y += bootmem.o endif +ifdef CONFIG_MMU + obj-$(CONFIG_ADVISE_SYSCALLS) += fadvise.o madvise.o +endif obj-$(CONFIG_HAVE_MEMBLOCK) += memblock.o obj-$(CONFIG_SWAP) += page_io.o swap_state.o swapfile.o
Signature · 1 line
2.1.0
Quoted 3 lines · Josh Triplett
Many embedded systems will not need these syscalls, and omitting them saves space. Add a new EXPERT config option
CONFIG_ADVISE_SYSCALLS(default y) to support compiling them out.
general question: if a user chooses CONFIG_ADVISE_SYSCALLS=n (or any config option related to tinyfication) and breaks the system/workload... will that be acceptable for a kernel pov? In other words, what's the degree of responsibility the user will have when choosing such builds?
Thanks,
Davidlohr
Quoted 9 lines · Davidlohr Bueso
Quoted 3 lines · Josh Triplett
Many embedded systems will not need these syscalls, and omitting them saves space. Add a new EXPERT config option
CONFIG_ADVISE_SYSCALLS(default y) to support compiling them out.general question: if a user chooses
CONFIG_ADVISE_SYSCALLS=n(or any config option related to tinyfication) and breaks the system/workload... will that be acceptable for a kernel pov? In other words, what's the degree of responsibility the user will have when choosing such builds?
It's hidden behind EXPERT for exactly that reason: if you turn it off, and your userspace needs it and can't cope with ENOSYS, you get to keep all the pieces. Only turn it off if you know your userspace doesn't use it.
The same thing goes for several other such options, such as UID16, SYSCTL_SYSCALL, SGETMASK_SYSCALL, and USELIB.
- Josh Triplett
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 19 lines · Josh Triplett
mm/Makefile +2
-2@@ -3,7 +3,7 @@ # mmu-y := nommu.o -mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o madvise.o memory.o mincore.o \ +mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o memory.o mincore.o \ mlock.o mmap.o mprotect.o mremap.o msync.o rmap.o \ vmalloc.o pagewalk.o pgtable-generic.o@@ -11,7 +11,7 @@ ifdef CONFIG_CROSS_MEMORY_ATTACH mmu-$(CONFIG_MMU) += process_vm_access.o endif -obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ +obj-y := filemap.o mempool.o oom_kill.o \ maccess.o page_alloc.o page-writeback.o \ readahead.o swap.o truncate.o vmscan.o shmem.o \ util.o mmzone.o vmstat.o backing-dev.o \
mm/Makefile else · line 33
Quoted 6 lines
mm/Makefile +3
-0@@ -28,6 +28,9 @@ else obj-y += bootmem.o endif +ifdef CONFIG_MMU + obj-$(CONFIG_ADVISE_SYSCALLS) += fadvise.o madvise.o +endif
That makes fadvise MMU-only, but I don't see why it should be.
Was that intentional?
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 23 lines · Johannes Weiner
Quoted 22 lines · Josh Triplett
mm/Makefile +2
-2@@ -3,7 +3,7 @@ # mmu-y := nommu.o -mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o madvise.o memory.o mincore.o \ +mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o memory.o mincore.o \ mlock.o mmap.o mprotect.o mremap.o msync.o rmap.o \ vmalloc.o pagewalk.o pgtable-generic.o@@ -11,7 +11,7 @@ ifdef CONFIG_CROSS_MEMORY_ATTACH mmu-$(CONFIG_MMU) += process_vm_access.o endif -obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ +obj-y := filemap.o mempool.o oom_kill.o \ maccess.o page_alloc.o page-writeback.o \ readahead.o swap.o truncate.o vmscan.o shmem.o \ util.o mmzone.o vmstat.o backing-dev.o \@@ -28,6 +28,9 @@ else obj-y += bootmem.o endif
Quoted 7 lines
mm/Makefile else · line 33
Quoted 3 lines
mm/Makefile +3
-0+ifdef CONFIG_MMU + obj-$(CONFIG_ADVISE_SYSCALLS) += fadvise.o madvise.o +endifThat makes fadvise MMU-only, but I don't see why it should be.
Was that intentional?
No. Fixed in v2; will send out momentarily. Thanks!
- Josh Triplett
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH v2 1/1 mm: Support compiling out madvise and fadvise
In reply to Josh TriplettMany embedded systems will not need these syscalls, and omitting them saves space. Add a new EXPERT config option CONFIG_ADVISE_SYSCALLS (default y) to support compiling them out.
bloat-o-meter:
add/remove: 0/3 grow/shrink: 0/0 up/down: 0/-2250 (-2250)
function old new delta
sys_fadvise64 57 - -57 sys_fadvise64_64 691 - -691 sys_madvise 1502 - -1502
---
v2: Don't make fadvise depend on CONFIG_MMU.
init/Kconfig | 10 ++++++++++ kernel/sys_ni.c | 3 +++ mm/Makefile | 8 ++++++-- 3 files changed, 19 insertions(+), 2 deletions(-)
init/Kconfig +10 -0
@@ -1537,6 +1537,16 @@ config AIO by some high performance threaded applications. Disabling this option saves about 7k. +config ADVISE_SYSCALLS + bool "Enable madvise/fadvise syscalls" if EXPERT + default y + help + This option enables the madvise and fadvise syscalls, used by + applications to advise the kernel about their future memory or file + usage, improving performance. If building an embedded system where no + applications use these syscalls, you can disable this option to save + space. + config PCI_QUIRKS default y bool "Enable PCI quirk workarounds" if EXPERT
kernel/sys_ni.c +3 -0
@@ -156,6 +156,9 @@ cond_syscall(sys_process_vm_writev);cond_syscall (compat_sys_process_vm_readv);cond_syscall (compat_sys_process_vm_writev);cond_syscall (sys_uselib); +cond_syscall (sys_fadvise64); +cond_syscall (sys_fadvise64_64); +cond_syscall (sys_madvise);/* arch-specific weak syscall entries */ cond_syscall (sys_pciconfig_read);
mm/Makefile +6 -2
@@ -3,7 +3,7 @@ # mmu-y := nommu.o -mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o madvise.o memory.o mincore.o \ +mmu-$(CONFIG_MMU) := fremap.o gup.o highmem.o memory.o mincore.o \ mlock.o mmap.o mprotect.o mremap.o msync.o rmap.o \ vmalloc.o pagewalk.o pgtable-generic.o
@@ -11,7 +11,7 @@ ifdef CONFIG_CROSS_MEMORY_ATTACH mmu-$(CONFIG_MMU) += process_vm_access.o endif -obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ +obj-y := filemap.o mempool.o oom_kill.o \ maccess.o page_alloc.o page-writeback.o \ readahead.o swap.o truncate.o vmscan.o shmem.o \ util.o mmzone.o vmstat.o backing-dev.o \
@@ -28,6 +28,10 @@ else obj-y += bootmem.o endif +obj-$(CONFIG_ADVISE_SYSCALLS) += fadvise.o +ifdef CONFIG_MMU + obj-$(CONFIG_ADVISE_SYSCALLS) += madvise.o +endif obj-$(CONFIG_HAVE_MEMBLOCK) += memblock.o obj-$(CONFIG_SWAP) += page_io.o swap_state.o swapfile.o
Signature · 1 line
2.1.1