I'm working on building a lightweight, ultra-performant hypervisor for x86 and ARM architectures.
I'm also looking into unikernels, and how this technology can facilitate deployment of cloud-native apps, without sacrificing performance, isolation, and security.
Accelerating parts of an application can really boost performance. But is it something we can easily do without being too intrusive to the application code? Can we do that in the cloud? I'm working on getting (some of) these answers.
Conducting research in emerging, power-efficient micro-server architectures on scalable network and storage I/O, and energy-driven resource management in Cloud architectures. This work consists of designing and implementing low-level hypervisor and OS mechanisms to provide applications efficient, isolated, and secure access to hardware resources.
Worked on I/O Virtualization, systems software for high-performance I/O in virtualized environments, communication architectures for clusters, and scalable storage architectures based on clusters.
Efficient I/O Device Sharing in Virtualized Environments.
As HPC applications scale to a large number of VMs, providing near-native network I/O performance to each peer VM is an important challenge. In this work, we present Xen2MX, a paravirtual interconnection framework, based on the Open-MX protocol, a port of the Myrinet/MX over generic Ethernet adapters. Experimental evaluation of our prototype implementation shows that Xen2MX is able to achieve nearly the same aw performance as Open-MX running in a non-virtualized environment.
Worked on porting the company's custom FPGA boards to virtualized environments. As my task was completed quickly, I joined the hardware group working on the company's new product line (MPCX), doing performance evaluation at first as well as kernel developing for the board's interface driver and the networking stack (Infiniband)
Served as a systems engineer, deploying, administering and maintaining the company's infrastructure both on bare-metal servers (co-located) as well as cloud servers (mostly Amazon EC2).
For the purpose of my PhD thesis, I worked on scalable block-level storage systems, communication architectures for clusters, custom 10gigE interconnection frameworks and I/O Virtualization.
Design and impementation of a mechanism transfering data from storage devices to Myrinet networks bypassing the memory hierarchy.
The objective of this study is the design and implementation of a framework that transfers data from local storage devices to Myrinet networks, bypassing the memory hierarchy of the system. Data flow from the storage device to the network, without the touching the host's memory subsystem.
Set up the entire lab (25-30 workstations, 5 servers), migrated from Solaris/SunOS 4.3 to Debian GNU/Linux, and maintained the lab which featured a fully autonomous setup, able to provide the necessary software for students to work on ECE school's projects.
Served as backend support for the company's clients, mostly Solaris and some Linux-based setups.
Researcher / Systems Engineer
With over 12 years of experience in Virtualization technologies I am currently working on the lower-level parts of the stack to attack issues related to performance, scalability, power-efficiency and security in hypervisors. Previously, I was a Post-doc at CSLab, NTUA, working on bridging the gap between common HPC practices and virtualization. My research interests include I/O Virtualization, systems software for high-performance I/O in virtualized environments, systems support for heterogeneous platforms, communication architectures for clusters, and scalable storage architectures based on clusters. I have been involved in many parts of the OS software stack, including device drivers, memory management, network/block layers. I hold a Diploma in Engineering (2006) from ECE, NTUA and a PhD in Computer Engineering (2013) from NTUA. Since 2011, I serve as a co-chair of the VHPC workshop series, held in conjunction with Europar, SC, and ISC.