linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@intel.com>
To: Max Kellermann <max.kellermann@ionos.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 00/35] Fast kernel headers: reduce header dependencies
Date: Mon, 25 Mar 2024 15:05:22 +0200	[thread overview]
Message-ID: <ZgF2khndC_QTu5Bw@smile.fi.intel.com> (raw)
In-Reply-To: <20240209164027.2582906-1-max.kellermann@ionos.com>

On Fri, Feb 09, 2024 at 05:39:52PM +0100, Max Kellermann wrote:
> This patch set aims to reduce the dependencies between headers, in
> order to have cleaner code and speed up the build.  It continues
> previous efforts by other developers.
> 
> As a preparation, the first patch adds "#include" directives to source
> files that were missing previously, but due to indirect includes, this
> was never noticed.  After the cleanup, many missing directives would
> result in a compiler failure.
> 
> The second patch removes superfluous "#include" directives, some of
> which may be a leftover from refactoring patches.
> 
> The third patch replaces existing "#include" directives with narrower
> ones, e.g. use "spinlock_types.h" instead of "spinlock.h".  This
> continues the work others have done over the years.
> 
> The remaining patches add new "XXX_types.h" headers with lighter
> dependencies.  They have only basic struct/enum/const/macro
> definitions and maybe a few trivial inline functions, but no "extern"
> functions and no complex header dependencies.
> 
> Just like the other attempts to reduce header dependencies in the
> past, this is just the beginning.  There are still too many
> dependencies, and the speedup gained by this large patch set is not
> yet impressive.
> 
> Prior to this patch set:
> 
>  real	0m34.677s
>  user	23m13.045s
>  sys	2m26.007s
> 
> With this patch set:
> 
>  real	0m34.464s
>  user	22m19.073s
>  sys	2m15.246s
> 
> (Building the directories kernel,lib,mm on ARM64 "allyesconfig".)
> 
> I have tested this patch set with:
> 
> - ARCH=arm allyesconfig
> - ARCH=arm defconfig
> - ARCH=arm64 allyesconfig
> - ARCH=arm64 defconfig
> - ARCH=mips defconfig
> - ARCH=riscv defconfig
> - ARCH=x86_64 allyesconfig
> - ARCH=xtensa defconfig
> 
> Pretty sure, other architectures may fail to build, but before I test
> all of them, I'd like to get some feedback on whether my approach
> would be accepted.
> 
> For more gains, huge headers like "linux/mm.h", "linux/fs.h" and
> "linux/sched.h" would need to be optimized.  Nearly everybody includes
> them, and they include nearly everything.

Are you going to pursue this (with probably refined kernel.h approach
as we have Ingo's patches and an additional split that is already in
the upstream)?

-- 
With Best Regards,
Andy Shevchenko



  parent reply	other threads:[~2024-03-25 13:05 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-09 16:39 [PATCH v2 00/35] Fast kernel headers: reduce header dependencies Max Kellermann
2024-02-09 16:39 ` [PATCH v2 01/35] include: add missing includes Max Kellermann
2024-02-09 16:39 ` [PATCH v2 02/35] include: remove unnecessary #include directives Max Kellermann
2024-02-10 12:36   ` kernel test robot
2024-02-10 12:58   ` kernel test robot
2024-02-09 16:39 ` [PATCH v2 03/35] include: reduce header dependencies by using "*_types.h" Max Kellermann
2024-02-09 16:39 ` [PATCH v2 04/35] workqueue.h: move struct delayed_work to workqueue_types.h Max Kellermann
2024-02-09 16:39 ` [PATCH v2 05/35] kref.h: move declarations to kref_types.h Max Kellermann
2024-02-09 16:39 ` [PATCH v2 06/35] kobject.h: move declarations to kobject_types.h Max Kellermann
2024-02-09 16:39 ` [PATCH v2 07/35] sysfs.h: move declarations to sysfs_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 08/35] maple_tree.h: move declarations to maple_tree_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 09/35] rwsem.h: move declarations to rwsem_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 10/35] uprobes.h: move declarations to uprobes_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 11/35] percpu_counter.h: move declarations to percpu_counter_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 12/35] bvec.h: move declarations to bvec_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 13/35] wait.h: move declarations to wait_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 14/35] swait.h: move declarations to swait_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 15/35] completion.h: move declarations to completion_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 16/35] device.h: move declarations to device_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 17/35] xarray.h: move declarations to xarray_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 18/35] blkdev.h: move blk_op_is_passthrough() to blk_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 19/35] bio.h: move bio_has_data() and bio_no_advance_iter() " Max Kellermann
2024-02-09 16:40 ` [PATCH v2 20/35] bio.h: move declarations to bio_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 21/35] percpu-refcount.h: move declarations to percpu-refcount_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 22/35] blkdev.h: move declarations to blkdev_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 23/35] sbitmap.h: move declarations to sbitmap_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 24/35] list_lru.h: move declarations to list_lru_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 25/35] list_bl.h: move declarations to list_bl_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 26/35] percpu-rwsem.h: move declarations to percpu-rwsem_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 27/35] quota.h: move declarations to quota_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 28/35] radix-tree.h: move declarations to radix-tree_types.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 29/35] linux/random.h: reduce dependencies on linux/kernel.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 30/35] linux/kernel.h: move might_sleep(), ... to sched/debug_atomic_sleep.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 31/35] linux/kernel.h: move READ and WRITE to direction.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 32/35] linux/kernel.h: move VERIFY_OCTAL_PERMISSIONS() to octal_permissions.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 33/35] linux/kernel.h: move upper/lower_*_bits macros to wordpart.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 34/35] linux/kernel.h: move PTR_IF() to ptr_util.h Max Kellermann
2024-02-09 16:40 ` [PATCH v2 35/35] include: remove lots of unnecessary <linux/kernel.h> includes Max Kellermann
2024-02-10 12:26   ` kernel test robot
2024-03-25 13:05 ` Andy Shevchenko [this message]
2024-03-29 13:31   ` [PATCH v2 00/35] Fast kernel headers: reduce header dependencies Max Kellermann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZgF2khndC_QTu5Bw@smile.fi.intel.com \
    --to=andriy.shevchenko@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=max.kellermann@ionos.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).