blog

stailaOS: A high performance Operating System

Introduction

stailaOS is a high performance application-specific operating system developed in collaboration with Native Systems Group of ETH Zurich (Swiss Federal Institute of Technology). It can be seen as an OS that hosts an application server and an in-memory database natively in its kernel space thereby providing sustained and predictable performance. stailaOS is going to give a new dimension to in-memory data management technology.

The OS is designed to be lightweight and supports only the minimal set of required devices, like SATA disks and network interfaces. The applications running on stailaOS are able to avoid overheads incurred in a general purpose operating system. As an example, there is no system call overhead in stailaOS, the applications can access low level resources without switching to kernel mode. This results in increased responsiveness of the application and it is able to deliver predictable performance.

Technology

Single process, Multithreaded System

stailaOS is a single process and multithreaded system which means all the threads share the same address space (vitrual adress space and page table is shared). This design helps in minimizing the context switch delays. Time taken by a context switch in an OS becomes even more critical in a parallel system where the number of threads exceeds the number of logical CPUs. Thus lowering this delay decreases the application’s latency.

Scalable and optimized for modern multicore architectures

The core datastructres of stailaOS are designed keeping in mind the ccNUMA properties of  modern processors. The kernel data structures are partitioned between cores taking care of various levels of CPU caches and memory interconnects. The critical OS resources are distributed in nature and are available with least contention to applications. This distributed resource model not only reduces latency but also helps in reducing overall inter-CPU traffic generated during runtime. We plan to further enhance and fine tune the kernel data structures. The thread scheduling algorithm of the OS is cache-aware too, which makes the system more efficiently scalable.

Hardware Assisted Transactional Memory System

A unique hardware assisted Transactional Memory System is integrated into stailaOS.  The  system is built around processor’s MMU and virtualization support. It aims to achieve the performance of fine grained locking with the flexiblity and ease of  traditional database transactions. It is a suitable tool for parallel data procressing.

Specialized Memory Managers

Any complex system, such as a high performance data processing application, needs different types of specialized memory managers for different types of memory usage behaviour.  stailaOS includes a set of specialized memory managers for different subsystem needs. As an example, each running transaction uses a specialized stack based memory manager where it needs to allocate memory regions of different sizes during it’s lifetime, and free them when the transaction commits.

Storage Engine

stailaOS has an inbuilt storage engine for supporting data persistence in the system. It is roughly analogous to a file system but, additionally, it is ACID complaint (the semantics are borrowed from database theory), and in contrast to a regular file system it does not need to provide the abstraction of a file-based hierarchical arrangement. The storage engine can write large number of blocks atomically yet in parallel to a raw disk. It is optimized to achieve maximum performance with modern SSDs.

Conclusion

stailaOS has the potential to solve many real world problems. It is an ideal solution for applications like real-time analytics, high frequency trading systems and many more.

 


Categorised as: staila, stailaOS, technology


Leave a Reply

Your email address will not be published. Required fields are marked *

*


five + 6 =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>