Anastassios Nanos

Virtualization

GNU/Hurd Links

Diploma Thesis

Xen and the art of Virtualization

Nowadays, Virtulization is a great trend that helps enterprises, research centers etc. consolidate services. This is achieved by software layers which multiplex hardware resources and provide Virtual Machines an isolated environment. However, current implementations do not support execution of High Performance Computing applications due to overheads imposed by these layers (the hypervisor, the Driver Domain Model), that mainly affect I/O performance. One solution to overcome the limitations imposed could be the integration of Virtulization semantics in almost all aspects of code running in the system. We try to implement mechanisms that off-load context-switch overhead to hardware devices present in the system and provide hints to I/O devices about the source or destination of data transfers, while maintaining security and isolation.


GNU/Hurd

Lately, I have been trying to install the GNU/Hurd. It was about 2002 that I read about the GNU/Hurd and decided to try it out. Back then, there was no way I could get GNU/Hurd installed. Today, the distribution and my knowledge around systems software is more advanced, so check my nice well-running apache (link broken ;-() on GNU/hurd!!! My goal is to be able to understand thoroughly the GNU/Hurd principles and to contribute (why not?) something to the GNU community myself.


Myrinet Networks and my diploma thesis

I graduated from the school of Electrical and Computer Engineering in September 2006 and my diploma thesis is entitled "Design and implementation of a mechanism transferring data from storage devices to Myrinet networks bypassing the memory hierarchy". During the elaboration of my thesis I studied the modular concept of the Linux Kernel, the Block Layer, the Virtual Memory System and other bits and pieces of the Linux Kernel. I also dug in the Myrinet Driver Interface for Myrinet-2000 network cards. You can grab a copy of my diploma thesis in pdf format (greek) from the Artemis digital library system or read the abstract (english).

My first experience with Myrinet networks was in 2004 when I started working on my diploma thesis. In the bosom of CSlab, I was given the opportunity to experiment on myrinet NICs installed in a testbed of two PCs. My first programs were (of course) the example programs to send and receive a small message via GM a low-level message passing system for Myrinet Networks. Later, I tried implementing a small block device driver module that used GM to send small chunks of data to a client system. With time, I managed to create a small read-only network block device that was supposed to simulate a local block device framework which emmits block requests over the myrinet network and sends data requested back to the client. So at last, a block device sharing mechanism was introduced to serve the purpose of my diploma thesis.


Diploma thesis abstract

The objective of this study is the design and implementation of a model transfering data from storage devices to Myrinet networks bypassing the memory hierarchy of the system, which hosts the storage device locally. This model deals with the implementation of a virtual read-only block device (client) and a userspace application, which serves the device (server); however, in order to achieve the optimized data path, several modifications in the Linux Kernel and the Myrinet device driver were introduced. The initial objective has been accomplished: the optimized data path drives data through PCI to the Myrinet NIC from any block device. First, we study the fundamental theoretical concepts required to design the model. We present methods to access storage devices in the host Operating System (Linux) and methods to install and use a Myrinet link to send and receive messages. Moreover, the design of the model is analyzed and confronted with existing devices, like nbd over TCP/IP or an nbd over Myrinet. Specifically, the userspace application reads data from the storage device directly through the PCI bus, bypassing the host CPU and the host main memory. This is achieved by mapping the SRAM (Static RAM) of the LANai proccessor (Myrinet NIC) to virtual memory addresses. With the introduction of a memory zone in the Linux Kernel, the physical bus addresses (PCI) are incorporated in the memory management policy of the Linux Kernel. Finally, we present the implementation of the applications (client - server), as well as the modifications required to achieve the optimized data path (Linux kernel / Myrinet driver).