ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: ksummit-discuss@lists.linuxfoundation.org
Subject: Re: [Ksummit-discuss] [TOPIC] userspace infrastructure services
Date: Wed, 12 Aug 2015 11:38:01 -0700	[thread overview]
Message-ID: <1439404681.2825.67.camel@HansenPartnership.com> (raw)
In-Reply-To: <20150812182103.GA20106@infradead.org>

On Wed, 2015-08-12 at 11:21 -0700, Christoph Hellwig wrote:
> On Wed, Aug 12, 2015 at 11:15:52AM -0700, Stephen Hemminger wrote:
> > I expected someone else to bring this topic up...
> > 
> > One thing that is happening is that there is lots of activity in moving core features
> > of the kernel into userspace (networking, storage, security). I don't want to get into
> > an argument over whether that is good or bad;
> 
> Which I think is the most important question of them all.  From all
> the pain caused and the little gains I'm a believer it's mostly bad,
> especially for cases like:
> 
> > The area I am most familiar with is the DPDK which has to have its own UIO drivers
> > to work in all environments (get device into userspace). And then has to have its
> > own drivers to simulate network device (put device back into kernel).  This leads
> > to unmanageable ABI and development technical debt.
> 
> Which interacts on both sides.  In that case "let them suffer for their
> stupidity" is the only valid answer.
> 
> For a case where it's more reasonable there might be a different answer.

What about something like CRIU:

http://www.criu.org/Main_Page

?

in-kernel checkpoint/restore had been proposed many times before and
always rejected as being hugely complex (most publicly at the Kernel
Summit in Cambridge, where Oren Laadan proposed it).  CRIU took a
completely different approach where we broke the problem down into
sections and extended kernel interfaces to export state where it wasn't
available.  The net result is that we now have checkpoint/restore (and
thus process migration) for Linux at a significant reduction in the
complexity over the original code and realistically not a huge technical
debt.

What I like to think CRIU shows us is that if we look hard enough, there
is a way to separate the problem up so that a userspace becomes workable
without a massive increase in the kernel ABI surface.

The big problem is finding the way to do the split.  You can tell if you
get it wrong because the userspace component has a huge amount of state
shared with the kernel and the ABI balloons to cope with this (cough,
DPDK, cough)... however, what's not clear is how to get it right in the
first place.

Perhaps we should look first at how CRIU got it right and then discuss
how we might use those same principles to fix other projects, like DPDK.

James

  reply	other threads:[~2015-08-12 18:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-12 18:15 Stephen Hemminger
2015-08-12 18:21 ` Christoph Hellwig
2015-08-12 18:38   ` James Bottomley [this message]
2015-08-13 15:40     ` Christoph Lameter
2015-08-12 18:46   ` Stephen Hemminger

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=1439404681.2825.67.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=hch@infradead.org \
    --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