[9fans] NIX 64-bit kernel is available

  • Follow


We'd like to announce the availability of NIX, a 64-bit Plan 9 kernel
with some new ideas. The full set of changes will be covered at IWP9.
For now, here are some highlights.

- 2 MB PTEs. 4096 byte PTEs are not used in user programs at all.

- 64 bit address space for processes, backed by 1 Gbyte PTEs for BSS
with addresses > 1 Gbyte. Use of Gbyte PTEs does not require anything
special; it just works. It's possible to have a process with (e.g.) 64
Gib of memory in use which only needs 66 active PTEs (1 for code, 1
for date, and 64 for BSS).

- Core roles. A process can designate that it wishes to run on an
application core (AC). ACs do not run kernel code, and take no
interrupts, not even the APIC timer interrupt. They own the core and
are never pre-empted. They can run all standard system calls however.

- kernel-based Linux system call interface (work in progress)

- Optimistic semaphores, a new type of semaphore which lives half in
and half out of the kernel, and which in many cases will never run in
kernel

- Tubes, a new IPC mechanism like pipes that uses the optimistic semaphores

- A new memory management design which eliminates the huge static
array of page structs

- NUMA-aware allocation, such that a process can be co-located with
its memory. This support is transparent.

- Kernel can address all of physical memory. No more bounce buffers.
The kernel maps memory with GiB PTEs.

- And, finally, standard Plan 9 binaries run unmodified on NIX.

For now, NIX will only run on 64-bit x86 CPUs which support Gbyte
PTEs, e.g. K10.

The tree is set up to run under 9vx or on a standard Plan 9 system. We
have tested and it is possible to do a full build of amd64 binaries
and then a build in /sys/src/nix/k10 and boot the kernel. You'll be prompted
during the build for information to create an nvram file.

A new package manager is included in the tree, written by John Floren
and Nemo. It aims to be fast (downloading packages over HTTP) and
maintainable; development is ongoing, but for now pm(1) gives some
essential information.

As for the name: we were trying to express the fact that ACs do not
have a kernel,
and after much time spent with the dictionary, came up with nix.

The code is at http://code.google.com/p/nix-os/. Management
of the code base will be via the standard code review mechanisms
supported by google code; you're going to need mercurial and
the extensions. We welcome contributors.  For guidelines on how to
contribute see
http://golang.org/doc/contribute.html.

You'll need a 9vx setup to start.
Checkout the tree, and run 9vx with the tree as your root. You'll find a file
called BUILDING_AMD64 with further instructions in the root.

Thanks to Bell Labs, University Rey Juan Carlos, Vita Nuova, the
US Dept. of Energy and  Comunidad de Madrid for their support
and efforts in getting this working.

Ron

0
Reply rminnich (1317) 9/14/2011 3:44:40 PM

sounds great. now, explain the tubes in more detail, please :)

0
Reply mirtchovski (607) 9/14/2011 4:01:21 PM


--000e0cd2e72a8804a304acea2490
Content-Type: text/plain; charset=ISO-8859-1

Great set of ideas here!

On Wed, Sep 14, 2011 at 8:41 AM, ron minnich <rminnich@gmail.com> wrote:

> We'd like to announce the availability of NIX, a 64-bit Plan 9 kernel
> with some new ideas. The full set of changes will be covered at IWP9.
> For now, here are some highlights.
>
> - 2 MB PTEs. 4096 byte PTEs are not used in user programs at all.
>

PTE = Page Table Entry?  Sorry, been working in Java too long I guess :-(.


>
> - 64 bit address space for processes, backed by 1 Gbyte PTEs for BSS
> with addresses > 1 Gbyte. Use of Gbyte PTEs does not require anything
> special; it just works. It's possible to have a process with (e.g.) 64
> Gib of memory in use which only needs 66 active PTEs (1 for code, 1
> for date, and 64 for BSS).
>
> - Core roles. A process can designate that it wishes to run on an
> application core (AC). ACs do not run kernel code, and take no
> interrupts, not even the APIC timer interrupt. They own the core and
> are never pre-empted. They can run all standard system calls however.
>

That sounds amazingly great for certain servers.


>
> - kernel-based Linux system call interface (work in progress)
>

Can I run Mozilla Firefox?  :-)


>
> - Optimistic semaphores, a new type of semaphore which lives half in
> and half out of the kernel, and which in many cases will never run in
> kernel
>

How is this both like and not like a futex?


>
> - Tubes, a new IPC mechanism like pipes that uses the optimistic semaphores
>

I love the name...


>
> - A new memory management design which eliminates the huge static
> array of page structs
>
> - NUMA-aware allocation, such that a process can be co-located with
> its memory. This support is transparent.
>
> - Kernel can address all of physical memory. No more bounce buffers.
> The kernel maps memory with GiB PTEs.
>
> - And, finally, standard Plan 9 binaries run unmodified on NIX.
>
> For now, NIX will only run on 64-bit x86 CPUs which support Gbyte
> PTEs, e.g. K10.
>
> The tree is set up to run under 9vx or on a standard Plan 9 system. We
> have tested and it is possible to do a full build of amd64 binaries
> and then a build in /sys/src/nix/k10 and boot the kernel. You'll be
> prompted
> during the build for information to create an nvram file.
>
> A new package manager is included in the tree, written by John Floren
> and Nemo. It aims to be fast (downloading packages over HTTP) and
> maintainable; development is ongoing, but for now pm(1) gives some
> essential information.
>
> As for the name: we were trying to express the fact that ACs do not
> have a kernel,
> and after much time spent with the dictionary, came up with nix.
>
> The code is at http://code.google.com/p/nix-os/. Management
> of the code base will be via the standard code review mechanisms
> supported by google code; you're going to need mercurial and
> the extensions. We welcome contributors.  For guidelines on how to
> contribute see
> http://golang.org/doc/contribute.html.
>
> You'll need a 9vx setup to start.
> Checkout the tree, and run 9vx with the tree as your root. You'll find a
> file
> called BUILDING_AMD64 with further instructions in the root.
>
> Thanks to Bell Labs, University Rey Juan Carlos, Vita Nuova, the
> US Dept. of Energy and  Comunidad de Madrid for their support
> and efforts in getting this working.
>
> Ron
>

Thanks again Ron and everyone involved!

--000e0cd2e72a8804a304acea2490
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Great set of ideas here!<br><br><div class=3D"gmail_quote">On Wed, Sep 14, =
2011 at 8:41 AM, ron minnich <span dir=3D"ltr">&lt;<a href=3D"mailto:rminni=
ch@gmail.com">rminnich@gmail.com</a>&gt;</span> wrote:<br><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex;">
We&#39;d like to announce the availability of NIX, a 64-bit Plan 9 kernel<b=
r>
with some new ideas. The full set of changes will be covered at IWP9.<br>
For now, here are some highlights.<br>
<br>
- 2 MB PTEs. 4096 byte PTEs are not used in user programs at all.<br></bloc=
kquote><div><br></div><div>PTE =3D Page Table Entry? =A0Sorry, been working=
 in Java too long I guess :-(.</div><div>=A0</div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left=
:1ex;">

<br>
- 64 bit address space for processes, backed by 1 Gbyte PTEs for BSS<br>
with addresses &gt; 1 Gbyte. Use of Gbyte PTEs does not require anything<br=
>
special; it just works. It&#39;s possible to have a process with (e.g.) 64<=
br>
Gib of memory in use which only needs 66 active PTEs (1 for code, 1<br>
for date, and 64 for BSS).<br>
<br>
- Core roles. A process can designate that it wishes to run on an<br>
application core (AC). ACs do not run kernel code, and take no<br>
interrupts, not even the APIC timer interrupt. They own the core and<br>
are never pre-empted. They can run all standard system calls however.<br></=
blockquote><div><br></div><div>That sounds amazingly great for certain serv=
ers.</div><div>=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0=
 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
- kernel-based Linux system call interface (work in progress)<br></blockquo=
te><div><br></div><div>Can I run Mozilla Firefox? =A0:-)</div><div>=A0</div=
><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1=
px #ccc solid;padding-left:1ex;">

<br>
- Optimistic semaphores, a new type of semaphore which lives half in<br>
and half out of the kernel, and which in many cases will never run in<br>
kernel<br></blockquote><div><br></div><div>How is this both like and not li=
ke a futex? =A0=A0</div><div>=A0</div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
- Tubes, a new IPC mechanism like pipes that uses the optimistic semaphores=
<br></blockquote><div><br></div><div>I love the name...=A0</div><div>=A0</d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left=
:1px #ccc solid;padding-left:1ex;">

<br>
- A new memory management design which eliminates the huge static<br>
array of page structs<br>
<br>
- NUMA-aware allocation, such that a process can be co-located with<br>
its memory. This support is transparent.<br>
<br>
- Kernel can address all of physical memory. No more bounce buffers.<br>
The kernel maps memory with GiB PTEs.<br>
<br>
- And, finally, standard Plan 9 binaries run unmodified on NIX.<br>
<br>
For now, NIX will only run on 64-bit x86 CPUs which support Gbyte<br>
PTEs, e.g. K10.<br>
<br>
The tree is set up to run under 9vx or on a standard Plan 9 system. We<br>
have tested and it is possible to do a full build of amd64 binaries<br>
and then a build in /sys/src/nix/k10 and boot the kernel. You&#39;ll be pro=
mpted<br>
during the build for information to create an nvram file.<br>
<br>
A new package manager is included in the tree, written by John Floren<br>
and Nemo. It aims to be fast (downloading packages over HTTP) and<br>
maintainable; development is ongoing, but for now pm(1) gives some<br>
essential information.<br>
<br>
As for the name: we were trying to express the fact that ACs do not<br>
have a kernel,<br>
and after much time spent with the dictionary, came up with nix.<br>
<br>
The code is at <a href=3D"http://code.google.com/p/nix-os/" target=3D"_blan=
k">http://code.google.com/p/nix-os/</a>. Management<br>
of the code base will be via the standard code review mechanisms<br>
supported by google code; you&#39;re going to need mercurial and<br>
the extensions. We welcome contributors. =A0For guidelines on how to<br>
contribute see<br>
<a href=3D"http://golang.org/doc/contribute.html" target=3D"_blank">http://=
golang.org/doc/contribute.html</a>.<br>
<br>
You&#39;ll need a 9vx setup to start.<br>
Checkout the tree, and run 9vx with the tree as your root. You&#39;ll find =
a file<br>
called BUILDING_AMD64 with further instructions in the root.<br>
<br>
Thanks to Bell Labs, University Rey Juan Carlos, Vita Nuova, the<br>
US Dept. of Energy and =A0Comunidad de Madrid for their support<br>
and efforts in getting this working.<br>
<font color=3D"#888888"><br>
Ron<br></font></blockquote><div><br></div><div>Thanks again Ron and everyon=
e involved!=A0</div></div><br>

--000e0cd2e72a8804a304acea2490--

0
Reply leimy2k (972) 9/14/2011 5:34:24 PM

Excellent news!

On Wed, 14 Sep 2011 08:41:48 PDT ron minnich <rminnich@gmail.com>  wrote:
> - 2 MB PTEs. 4096 byte PTEs are not used in user programs at all.

> - 64 bit address space for processes, backed by 1 Gbyte PTEs for BSS
> with addresses > 1 Gbyte. Use of Gbyte PTEs does not require anything
> special; it just works. It's possible to have a process with (e.g.) 64

So you use both 2MB and 1GB PTEs?

> - Tubes, a new IPC mechanism like pipes that uses the optimistic semaphores

"Tubes" in memory of Sen Ted Stevens?

> You'll need a 9vx setup to start.
> Checkout the tree, and run 9vx with the tree as your root. You'll find a file
> called BUILDING_AMD64 with further instructions in the root.

No such file.

0
Reply bakul (156) 9/14/2011 7:24:33 PM

On Wed, Sep 14, 2011 at 04:38:42PM -0400, s s wrote:
> Very nice.
> 
> Are you sure you want to call it NIX, though?
> 
> A google search for "nix kernel" returns a lot of unrelated results.
> 
> http://www.google.com/#hl=en&q=nix+kernel

As google results depend on who searches... I "work" for a
project under the name of nix for some years:
http://nixos.org/nix/

As for one example.

Bye,
Lluis.

0
Reply viriketo (67) 9/14/2011 8:51:49 PM

Awesome! Congrats to all involved!

D

On Sep 14, 2011, at 8:41 AM, ron minnich <rminnich@gmail.com> wrote:

> We'd like to announce the availability of NIX, a 64-bit Plan 9 kernel
> with some new ideas. The full set of changes will be covered at IWP9.
> For now, here are some highlights.
>=20
> - 2 MB PTEs. 4096 byte PTEs are not used in user programs at all.
>=20
> - 64 bit address space for processes, backed by 1 Gbyte PTEs for BSS
> with addresses > 1 Gbyte. Use of Gbyte PTEs does not require anything
> special; it just works. It's possible to have a process with (e.g.) 64
> Gib of memory in use which only needs 66 active PTEs (1 for code, 1
> for date, and 64 for BSS).
>=20
> - Core roles. A process can designate that it wishes to run on an
> application core (AC). ACs do not run kernel code, and take no
> interrupts, not even the APIC timer interrupt. They own the core and
> are never pre-empted. They can run all standard system calls however.
>=20
> - kernel-based Linux system call interface (work in progress)
>=20
> - Optimistic semaphores, a new type of semaphore which lives half in
> and half out of the kernel, and which in many cases will never run in
> kernel
>=20
> - Tubes, a new IPC mechanism like pipes that uses the optimistic semaphore=
s
>=20
> - A new memory management design which eliminates the huge static
> array of page structs
>=20
> - NUMA-aware allocation, such that a process can be co-located with
> its memory. This support is transparent.
>=20
> - Kernel can address all of physical memory. No more bounce buffers.
> The kernel maps memory with GiB PTEs.
>=20
> - And, finally, standard Plan 9 binaries run unmodified on NIX.
>=20
> For now, NIX will only run on 64-bit x86 CPUs which support Gbyte
> PTEs, e.g. K10.
>=20
> The tree is set up to run under 9vx or on a standard Plan 9 system. We
> have tested and it is possible to do a full build of amd64 binaries
> and then a build in /sys/src/nix/k10 and boot the kernel. You'll be prompt=
ed
> during the build for information to create an nvram file.
>=20
> A new package manager is included in the tree, written by John Floren
> and Nemo. It aims to be fast (downloading packages over HTTP) and
> maintainable; development is ongoing, but for now pm(1) gives some
> essential information.
>=20
> As for the name: we were trying to express the fact that ACs do not
> have a kernel,
> and after much time spent with the dictionary, came up with nix.
>=20
> The code is at http://code.google.com/p/nix-os/. Management
> of the code base will be via the standard code review mechanisms
> supported by google code; you're going to need mercurial and
> the extensions. We welcome contributors.  For guidelines on how to
> contribute see
> http://golang.org/doc/contribute.html.
>=20
> You'll need a 9vx setup to start.
> Checkout the tree, and run 9vx with the tree as your root. You'll find a f=
ile
> called BUILDING_AMD64 with further instructions in the root.
>=20
> Thanks to Bell Labs, University Rey Juan Carlos, Vita Nuova, the
> US Dept. of Energy and  Comunidad de Madrid for their support
> and efforts in getting this working.
>=20
> Ron
>=20

0
Reply don.bailey (71) 9/14/2011 9:34:32 PM

rminnich@gmail.com (ron minnich) writes:

> You'll need a 9vx setup to start.
> Checkout the tree, and run 9vx with the tree as your root. You'll find a file
> called BUILDING_AMD64 with further instructions in the root.

Just for the record, one needs the 9vx from https://bitbucket.org/rminnich/vx32
The binaries from http://swtch.com/9vx/ don't work.

And that file BUILDING_AMD64 I couldn't find anywhere.

-- 
Christian Neukirchen  <chneukirchen@gmail.com>  http://chneukirchen.org
0
Reply chneukirchen (842) 9/15/2011 10:19:40 AM

6 Replies
39 Views

(page loaded in 0.311 seconds)


Reply: