What is nnsched?

nnsched is a kernel patch and accompanying userland tools which allow you to schedule processes under NetBSD using a neural network scheduler. It should be considered highly experimental, so play with it at your own risk.

How do I install it?

To build it, get the files below and do the following, assuming `make' refers to a BSD Make implementation. If it doesn't, substitute make with bmake, nbmake or pmake depending on the system:

$ tar xzf nnsched-1.1.tar.gz
$ cd nnsched-1.1
$ make
$ make PREFIX=/usr install

Now the userland tools are built and installed (note that the installation step is optional and the PREFIX is set to /usr/local by default). To get kernel support, first obtain a copy of the NetBSD kernel sources. Version 1.1 of the scheduler has been developed for NetBSD 4.0 (these sources can be downloaded from one of the official NetBSD mirrors). It will probably not work on newer versions without major modifications, because the scheduler has been changed quite a bit.

Copy the NetBSD kernel sources into nnsched's sys directory (or copy nnsched's sys dir into the NetBSD sys dir). Then apply the kernel patches:

$ cd sys
$ patch < nnsched-1.1-netbsd-4.0.patch

Now, add options to include the neural network pseudo devices in the kernel to your config file (currently building a patched kernel without these options is not supported and will fail):

pseudo-device	nnfmon			# NN feature monitor
pseudo-device	nnconf			# NN configuration device

Now, config and build a new kernel (don't forget to make clean; make depend if you're using a previously config'ed kernel!), install the kernel, reboot and enjoy. If you do not know how to build and configure a kernel, read this.

Finally, you will need to create the pseudo-devices:

NetBSD-2.0 (needs version 1.0 of nnsched)

# cd /dev
# mknod nnfmon c 165 0
# mknod nnconf c 166 0

NetBSD-4.0 (needs version 1.1 of nnsched)

# cd /dev
# mknod nnfmon c 188 0
# mknod nnconf c 189 0

That's it. Now you can start using the new scheduler.

Where can I get it?

The latest version is 1.1. Get the code here:

How do I use it?

There is no real documentation or manual (yet), but you can read the master's thesis that introduced the system. It contains a chapter ("Implementation") that talks about how it can be used.

The presentation I gave on 12 June 2008 at Radboud University is now available in several formats, too:

  • the magicpoint sources (as tarball)
  • pdf
  • html
  • Who made this? (aka Contact)

    nnsched was designed and implemented by Peter Bex
    Blah. Copyright 2005-2007 and all that.