MyThOS is a micro-kernel for many-core processors with cache-coherent shared memory. Its design aims for high-throughput operation for highly-dynamic workloads. Examples are task-based high-performance computing frameworks and service clouds with very fine-grained application tasks.
Scalability to a high degree of parallelism is achieved as follows: All kernel objects are allocated explicitly by the application from freely partitioned memory pools in order to eliminate hidden synchronisation. Any kernel object can be accessed concurrently from any core in order to enable parallel system management. Concurrent operations on kernel objects are serialised through delegation-based object monitors. Granting and revoking access rights (object capabilities) affects just a small set of rights in order to minimise synchronisation.
pthread_create
, pthread_join
, pthread_mutex
are workingQemu is using X11 to display the virtual display. Thus we need to activate X11 output for docker. Install and start XQuartz. In the XQuartz settings under security enable "Allow connections from network clients" and reboot the laptop, not just restart XQuartz neither just log out and in again.
git clone https://github.com/ManyThreads/mythos.git
cd mythos
git submodule update --init --recursive
docker build -f Dockerfile -t mythos --progress=plain .
xhost +localhost
XAUTH=$HOME/.Xauthority
docker run --rm -it \
-e DISPLAY=host.docker.internal:0 \
-e XAUTHORITY=$XAUTH \
-v $XAUTH:$XAUTH \
mythos
git submodule update --init --recursive
to pull the needed projects3rdparty/mcconf/install-python-libs.sh
in order to install the build configuration tool. This requires python and pip (a widespread package installer for python).3rdparty/install-libcxx.sh
to compile the musl libc and llvm/clang libstdc++make
in the root folder. This will assemble the source code into the subfolders kernel-amd64
, kernel-knc
and host-knc
.kernel-amd64
folder and run make qemu
. This will compile the init application, the kernel, and finally boot the kernel image inside the qemu emulator. The debug and application output will be written to the console.mcconf.module
files in the kernel
folder), rerun make
in the root folder and then make clean
in the target-specific folder.In order to run MyThOS on an Intel XeonPhi Knights Corner processor, a recent version of Intel's MPSS software stack is needed. In addition a not too old C++ compiler is needed for the host tools. After loading the respective environment variables:
git submodule update --init --recursive
to pull the needed projects3rdparty/mcconf/install-python-libs.sh
in order to install the build configuration tool. This requires python and pip (a widespread package installer for python).3rdparty/install-libcxx.sh
to compile the musl libc and llvm/clang libstdc++make
in the root folder. This will assemble the source code into the subfolders kernel-amd64
, kernel-knc
and host-knc
.host-knc
folder and run make
in order to compile the xmicterm
application. This is used to receive the debugging and log messages from the MyThOS kernel and applications.kernel-knc
folder and run make
in order to compile the init application and the kernel.make micrun
in order to stop any running coprocessor OS and boot MyThOS. If everything goes well, the script will start the xmicterm
and you see the debug output. Stop it with CTRL-c and use make micstop
to shut down the coprocessor. You can enable more detailed debug messages by editing Makefile.user
and recompiling the kernel.git submodule update --init --recursive
to pull the needed projects3rdparty/mcconf/install-python-libs.sh
in order to install the build configuration tool. This requires python and pip (a widespread package installer for python).3rdparty/install-libcxx.sh
to compile the musl libc and llvm/clang libstdc++vim /etc/selinux/config
and change the file to SELINUX=disabledsudo reboot
sudo yum install cmake kernel-devel binutils-devel systemd-devel numactl-devel
sudo chmod a+r /boot/System.map-`uname -r`
3rdparty/install-ihk.sh
make
in the root folder. This will assemble the source code into the subfolders kernel-amd64
, kernel-ihk
, kernel-knc
and host-knc
.cd kernel-ihk
make run
sudo apt install python python-pip python-virtualenv curl cmake
git submodule update --init --recursive
to pull the needed projects.3rdparty/mcconf/install-python-libs.sh
in order to install the build configuration tool.3rdparty/install-libcxx.sh
sudo apt install linux-headers-$(uname -r) binutils-dev libsystemd-dev libnuma-dev libiberty-dev libudev-dev
sudo systemctl stop apparmor.service
and sudo update-rc.d -f apparmor remove
sudo chmod a+r /boot/System.map-`uname -r`
3rdparty/install-ihk.sh
make
in the root folder. This will assemble the source code into the subfolders kernel-amd64
, kernel-ihk
, kernel-knc
and host-knc
.cd kernel-ihk
make run
make qemu
fails with qemu: could not load PC BIOS 'bios-256k.bin'
on CentOS 7. Fix: yum install seabios-bin
.make qemu
fails with qemu-system-x86_64: Unable to find CPU definition: max
, try to change "-cpu max" into "-cpu SandyBridge" in /mythos/kernel/build/emu-qemu-amd64/mcconf.moduleThe MyThOS project was funded by the Federal Ministry of Education and Research (BMBF) under Grant No. 01IH13003 from October 2013 to September 2016. The grant was part of the 3rd HPC-Call of the Gauss Allianz.
The high-level kernel design is inspired by the many good ideas from seL4, Nova, Fiasco, and L4. The delegation-based monitors are inspired by delegation locks.