Re: [PATCH v14 000/138] Memory folios

Mike Rapoport
2021-07-20T15:46:59Z

On Tue, Jul 20, 2021 at 01:41:15PM +0100, Matthew Wilcox wrote:
> On Tue, Jul 20, 2021 at 01:54:38PM +0300, Mike Rapoport wrote:
> > Most of the changelogs (at least at the first patches) mention reduction of
> > the kernel size for your configuration on x86. I wonder, what happens if
> > you build the kernel with "non-distro" configuration, e.g. defconfig or
> > tiny.config?
>
> I did an allnoconfig build and that reduced in size by ~2KiB.
>
> > Also, what is the difference on !x86 builds?
>
> I don't generally do non-x86 builds ... feel free to compare for
> yourself!

I did allnoconfig and defconfig for arm64 and powerpc.

All execpt arm64::defconfig show decrease by ~1KiB, while arm64::defconfig
was actually increased by ~500 bytes.

I didn't dig into objdumps yet.

I also tried to build arm but it failed with:

CC fs/remap_range.o
fs/remap_range.c: In function 'vfs_dedupe_file_range_compare':
fs/remap_range.c:250:3: error: implicit declaration of function 'flush_dcache_folio'; did you mean 'flush_cache_louis'? [-Werror=implicit-function-declaration]
250 | flush_dcache_folio(src_folio);
| ^~~~~~~~~~~~~~~~~~
| flush_cache_louis
cc1: some warnings being treated as errors

> I imagine it'll be 2-4 instructions per call to
> compound_head(). ie something like:
>
> load page into reg S
> load reg S + 8 into reg T
> test bottom bit of reg T
> cond-move reg T - 1 to reg S
> becomes
> load folio into reg S
>
> the exact spelling of those instructions will vary from architecture to
> architecture; some will take more instructions than others. Possibly it
> means we end up using one fewer register and so reducing the number of
> registers spilled to the stack. Probably not, though.

--
Sincerely yours,
Mike.