From: Rob Landley <rob@landley.net>
To: user-mode-linux-devel@lists.sourceforge.net
Cc: Jan Engelhardt <jengelh@linux01.gwdg.de>,
Jeff Dike <jdike@addtoit.com>,
akpm@osdl.org, linux-kernel@vger.kernel.org
Subject: Re: [uml-devel] Re: [PATCH 4/9] UML - Better diagnostics for broken configs
Date: Fri, 6 Jan 2006 18:01:13 -0600 [thread overview]
Message-ID: <200601061801.17497.rob@landley.net> (raw)
In-Reply-To: <Pine.LNX.4.61.0601052258350.27662@yvahk01.tjqt.qr>
On Thursday 05 January 2006 15:59, Jan Engelhardt wrote:
> config MODE_TT
> bool "Tracing thread support"
> default y
> help
> This option controls whether tracing thread support is compiled
> into UML. Normally, this should be set to Y. If you intend to
> use only skas mode (and the host has the skas patch applied to it),
> then it is OK to say N here.
>
> Then I unfortunately do not quite understand what this is for.
User Mode Linux works a bit like gdb: it uses ptrace to intercept the system
calls a process makes and handles them itself instead of allowing the
underlying OS to do so.
Unfortunately, stock kernels don't let you just discard a system call, so you
have to pass _something_ on to the underlying OS before you can resume from
the ptrace. But you can change all the information both on the way in and on
the way out, so what UML did was it turned all system calls into "getpid",
which it then ignored the return value of in favor of doing its own system
call handling. Stock kernels also don't allow one process to remap another
process's memory, which is kind of important in context switching and meant
that each process being traced had to be a separate PID on the host, because
the UML kernel couldn't remap that process's page tables.
Doing both of these things (a seperate host process for each UML process, and
calling getpid() for all system calls), is what "Tracing Thread" mode did.
The UML kernel was one thread among several, and it was kinda slow.
Then the UML guys started patching the kernel, adding the ability to not pass
on a system call (to eliminate the pointless calls to getpid() that just
served to throw in a lot of context switches and slow everything down a
suprising amount), and adding /proc/mm to let one process remap another's
memory. This was "SKAS" mode (Single Kernel Address Space), and was much
faster but required a modified host kernel. They went through a few
iterations of this (different host patches) until they came up with the
current version, "SKAS3". (Of course if you're going to run a modified host
kernel, you might as well just use XEN.)
Then somebody got drunk and came up with something extremely clever that I'm
_still_ trying to get a clear explanation of, but they found out a way to run
SKAS mode on an unmodified kernel by sacrificing a chicken or something, and
this became known as "SKAS0" mode. It's not as fast as SKAS3 mode
(sacrificing chickens takes time), but it's faster than TT mode and a lot
less cluttered because you don't need a separate process on the host for each
process running under User Mode Linux kernel.
Both TT and SKAS0 run on unmodified kernels. I ignore SKAS3 entirely, because
it doesn't.
SKAS0 works pretty well now, it's faster and less complicated than TT mode,
and thus TT mode is mostly obsolete now. If you compile UML and run SKAS,
it'll auto-detect if your host kernel has the weird patches to support the
extensions for SKAS3, and if not it'll run SKAS0. TT mode is mostly an
anachronism, except that they haven't made SKAS0 support SMP yet, so if you
want to emulate SMP via UML you have no choice but to use TT mode (not that
it necessarily works all that great there, since TT mode doesn't get much
testing anymore).
> Jan Engelhardt
Rob
--
Steve Ballmer: Innovation! Inigo Montoya: You keep using that word.
I do not think it means what you think it means.
next prev parent reply other threads:[~2006-01-07 0:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-04 21:51 [PATCH 4/9] UML - Better diagnostics for broken configs Jeff Dike
2006-01-04 23:24 ` Andrew Morton
2006-01-05 2:21 ` Jeff Dike
2006-01-06 12:44 ` [2.6 patch] UML - Prevent MODE_SKAS=n and MODE_TT=n Adrian Bunk
2006-01-06 16:39 ` Jeff Dike
2006-01-06 16:18 ` Adrian Bunk
2006-01-07 5:22 ` Jeff Dike
2006-01-07 5:23 ` Jeff Dike
2006-01-05 7:45 ` [PATCH 4/9] UML - Better diagnostics for broken configs Jan Engelhardt
2006-01-05 16:14 ` Jeff Dike
2006-01-05 21:59 ` Jan Engelhardt
2006-01-06 0:53 ` Jeff Dike
2006-01-07 0:01 ` Rob Landley [this message]
2006-01-07 2:37 ` [uml-devel] " Jeff Dike
2006-01-07 15:12 ` Jan Engelhardt
2006-01-07 23:17 ` Jeff Dike
2006-01-08 3:50 ` Rob Landley
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=200601061801.17497.rob@landley.net \
--to=rob@landley.net \
--cc=akpm@osdl.org \
--cc=jdike@addtoit.com \
--cc=jengelh@linux01.gwdg.de \
--cc=linux-kernel@vger.kernel.org \
--cc=user-mode-linux-devel@lists.sourceforge.net \
/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