9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] ANTS: an attempt to bring ideas inspired by Nemo to standard Plan 9
@ 2013-03-14 13:24 mycroftiv
  0 siblings, 0 replies; only message in thread
From: mycroftiv @ 2013-03-14 13:24 UTC (permalink / raw)
  To: 9fans

Hi 9fans,

Since I have now released what I am calling Advanced Namespace Tools,
I want to offer proper credit and citation for the primary design idea
in ANTS.  Let me clarify that Nemo and lsub did not directly advise or
contribute, but the Plan B and Octopus papers provided foundational
ideas and insights which I tried to build on in ANTS.  The ANTS paper
does not (yet) have proper citations, and because the debt to Nemo's
work is so large I want to make sure to offer proper credit to his
ideas and design work.

Two specific things should be cited - the first is the general
principle of adapting Plan 9 design to a more dynamic and changing
environment, where services may come and go without notice.  Nemo has
written on this topic very clearly, and in my paper written about
ANTS, there are several short sections which paraphrase his ideas as I
understand them.  The final ANTS paper will have appropriate
citations; since this theme of "adapting to changes in the
environment" is written about in many of Nemo's papers, I'm not sure
which one would be considered definitive.

On the design level, the central change in ANTS - booting and not
attaching to any root file descriptor - was directly inspired by
section 2.2 of the "Give me back my personal mainframe" paper
(http://lsub.org/ls/export/mainframe.pdf) about the transition from
Plan B to Octopus.  In this section, Nemo writes about recovering from
file server crashes and switching the root file system as aspects of
Plan B which he said did not work well for them, despite the attempts
of the Bns program to support these things.

It was when reading this section of the paper that a fairly famous
sentence from original Plan 9 paper jumped into my mind: "it is fair
to say that the Plan 9 kernel is primarily a 9P multiplexer."

it struck me that the core function of the Plan 9 kernel - multiplex
9P - did not imply that any given 9P stream had to be made more
important than any other, from the kernel's point of view.  The user
needs a root file system to build a userspace on; once the kernel is
booted, the job of the kernel is to multiplex 9P to clients, and it
makes the system more reliable if the kernel itself is NOT dependent
on any of the 9P streams it is multiplexing in order to continue
performing that function.

Because Plan 9 already was built around per process namespaces, the
system already has the built in capability to host processes with any
number of different roots simultaneously - couldn't this principle be
used to solve the same problem that Bns was trying to solve, but in a
different way?  Rather than trying to do extra work to protect a
particular file descriptor because the whole system depended on it,
why not remove the single point of failure (one primary root fs) and
instead have multiple independent roots.  If one of them breaks, just
switch to another one!  The kernel doesn't care, it just sits back
happily multiplexing 9P to clients.  If one fd happens to go dead, it
doesn't hurt the ability of the kernel to serve all the other 9P
connections that are still alive.

One of the best ways to understand ANTS is as another approach to the
same issues that Nemo says Plan B did not handle successfully -
problems with the root filesystem.  The ANTS approach is to say "if we
can't protect the root filesystem, let's have multiple roots so if one
breaks we have another." This means that the the ability of the kernel
to do its job of multiplexing 9P to clients - and the function of the
grid as a whole - is much less dependent on any external conditions.

Another way to express this idea is "decoupling".  The Plan 9 design
of per process namespace and kernel-as-9p-muxer allows us to easily
decouple the construction of the user's namespace from the ability of
the kernel to control the system and provide namespace to the user on
demand.  To put it in imperative form:

"The ability of the kernel to provide an environment to the users
should not depend on the userspace file descriptors."

The ANTS 9pcram kernel implements this design principle by creating
the service namespace with no non-kernel dependencies.  Understanding
this is a way to summarize the "big picture" on ANTS:

"ANTS is an attempt to bring my understanding of Nemo's designs into
standard Plan 9.  It take a different approach than the Octopus to
dealing with the issues which Nemo described in Plan B."

Also, I would like to say that Nemo and the lsub are much more skilled
programmers and their projects are much more sophisticated and
technically challenging than what I implemented for ANTS.  ANTS tries
to bring a simple subset of the "lsub concepts" to the main Plan 9
from Bell Labs distribution, to help make standard grids more reliable
and easier to administer.

Because my debt to Nemo's ideas for what I was trying to do with ANTS
is so large, I wanted to offer this statement of credit and great
thanks for his extensive work on Plan 9, and I hope the Giant ANTS are
a welcome addition to the growing menagerie of Plan 9 monsters.

Ben Kidwell "mycroftiv"
(ants tutorials http://antfarm.9gridchan.org/tutorial)
(ants VM images and links http://9gridchan.org)
(ants software and documentation http://ants.9gridchan.org)
(ants software also served via 9p and ftp at ants.9gridchan.org)




^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-03-14 13:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-14 13:24 [9fans] ANTS: an attempt to bring ideas inspired by Nemo to standard Plan 9 mycroftiv

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).