ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: josh@joshtriplett.org
To: "Bird, Tim" <Tim.Bird@sonymobile.com>
Cc: "ksummit-discuss@lists.linuxfoundation.org"
	<ksummit-discuss@lists.linuxfoundation.org>
Subject: Re: [Ksummit-discuss] RFC: Kernel tinification - kernel config reduction
Date: Wed, 13 Aug 2014 12:19:07 -0700	[thread overview]
Message-ID: <20140813191907.GA14165@cloud> (raw)
In-Reply-To: <F5184659D418E34EA12B1903EE5EF5FD0130D4AC5B90@seldmbx02.corpusers.net>

On Wed, Aug 13, 2014 at 07:29:21PM +0200, Bird, Tim wrote:
> I'd like to raise an issue, ahead of the kernel summit, on the topic of reducing
> kernel config options. (Or, at least, reducing the combinatorial explosion effect
> for config options).
> 
> Earlier this year when some patches were submitted to make the network
> stack more configurable, there was some pushback, due (in part) to the
> introduction of more kernel config options.
> See http://thread.gmane.org/gmane.linux.kernel/1696910
> I think it is reasonable to be concerned over the testability of myriad config
> options.
> 
> In the past, there have been efforts to curb the number of kernel config
> options, but since we now stand at about 15,000 options throughout the
> kernel, this seems like a battle we've mostly given up on.

It'd be interesting to know how many of those options control the
building of individual drivers or entire subsystems, and how many
change kernel features in a non-trivial way.  I suspect that the latter
set grows much more slowly, and that latter set seems like the one we
care about limiting.

> I propose that we remove or hide a lot of the configuration options related
> to size, and instead focus on size profiles. When someone wants to build a
> minimal Linux system, they don't really want to manually trim down every
> Linux sub-system.  The more common development case is that they want
> a fully minimal Linux system, except for one or two areas where they want
> some flexibility in features.  I propose that we tie most of the options that
> are currently in the kernel for size reasons to a single or a few meta-options:
> e.g. CONFIG_SMALL, CONFIG_TINY, CONFIG_RIDICULOUS.  These
> different meta-config options can get better testing, and this will help curb
> the proliferation of size-related config options (and the resulting test
> combination explosion for those individual options.)
> 
> Note that this would be for sub-system related (feature or size) config options,
> and not driver-related config options.  Obviously, you have to have drivers
> for the hardware you plan to run on.
> 
> Optimally it would be nice to have the ability to configure a small system, and
> then "back off" of the tiny config in a particular area (say networking).
> I believe this would yield a much more tractable system for building small
> systems with Linux, than the current situation.
> 
> I'd like to discuss implementation ideas for this in the hallway track at KS.

I'm interested in this as well, and I planned to raise the issue of
configuration options as part of the tinification discussion.

Size-constrained systems seem likely to start from the tiniest possible
configuration, and incrementally add specific features they need.  Given
that, I do think we want the options for individual subsystems to look a
lot less combinatorial and a lot closer to linear.  Several subsystems
could likely use a major pruning of options.

However, I don't think a global set of meta-options or profiles
necessarily makes sense; either we'll end up with a large number of
meta-configurations, or we'll end up with "sample" configurations that
few can use unmodified.  We already have CONFIG_EMBEDDED for options
that only exist for size purposes.

Can you elaborate a bit on the idea of "backing off" of the tiny
configuration, and how that could work in practice?  I don't see an
obvious way to do that with today's Kconfig; what kinds of configuration
enhancements do you have in mind?

- Josh Triplett

  parent reply	other threads:[~2014-08-13 19:19 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-13 17:29 Bird, Tim
2014-08-13 18:07 ` Guenter Roeck
2014-08-13 19:53   ` Geert Uytterhoeven
2014-08-13 22:45     ` Guenter Roeck
2014-08-14  0:14       ` Mark Brown
2014-08-14  0:38         ` Guenter Roeck
2014-08-14 15:33           ` Mark Brown
2014-08-14  7:49         ` Geert Uytterhoeven
2014-08-14 16:39           ` Mark Brown
2014-08-14  7:40       ` Geert Uytterhoeven
2014-08-14  8:50         ` Guenter Roeck
2014-08-14  9:02           ` Geert Uytterhoeven
2014-08-15 11:04             ` Guenter Roeck
2014-08-14 19:57   ` Stefan Hengelein
2014-08-13 19:19 ` josh [this message]
2014-08-14 16:30   ` Tim Bird
2014-08-14 17:17     ` Josh Triplett
2014-08-14 16:03 ` Christoph Lameter
2014-08-14 18:54 ` Jan Kara

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=20140813191907.GA14165@cloud \
    --to=josh@joshtriplett.org \
    --cc=Tim.Bird@sonymobile.com \
    --cc=ksummit-discuss@lists.linuxfoundation.org \
    /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