News

FOSDEM 2024 Highlights - Running Node.js in Unikernels

clock-icon

2 minutes read

writer-avatar

Andreia Ocanoaia

Feb 08, 2024

Share on:

linkedin-icon

This weekend, the Genezio team was present at FOSDEM 2024 - an amazing open-source conference held in Belgium where thousands of contributors gather every year to meet and share ideas.

Technical Talk - Running Node.js in Unikernels

During FOSDEM 2024 , we had the opportunity to present a novel cloud infrastructure that we have been working on - running cloud workloads over unikernels to improve performance, security, and cost for running web applications.

Unikernels are specialized, lightweight operating system images designed to run a single service. Unlike traditional operating systems that include a general-purpose kernel with support for various functionalities and drivers, unikernels are highly optimized and tailored for specific applications. Right now, our solution is built to run Node.js applications on OSv - a mature unikernel open-source project.

The presentation briefly states the challenges and improvements we implemented to improve boot time for both OSv and the Linux kernel. Some of them are: Creating a base snapshot after booting OSv and loading the Node.js runtime Having a pool of warmed-up instances waiting for requests Attaching the user’s source code as a second filesystem to avoid rebuilding the application image for every infrastructure patch or update.

By working within a single-spaced kernel where the process that is running is always in privileged mode, we’ve come across a bug in Node.js. Specifically, we fixed the behavior of the popf instruction that incorrectly disabled interrupts in privileged mode.

On the OSv side, we made several upstream contributions , addressing issues such as: resolving a cache bug triggered when using more filesystems and fixing a pthreads interface that was not compliant with POSIX and caused deadlocks.

The slides and recording are available for everyone to check out.

Community

FOSDEM is about getting to know contributors and projects, sharing ideas, and collaborating and we’ve had the best time getting inspired by awesome people.

Genezio has been a part of the Unikernel Alliance community since its beginnings and we had the opportunity to meet the active members face-to-face and check out their talks in the Microkernel and Component-based OS devroom .

We are very grateful for connecting and discussing with Waldemar Kozaczuk - the maintainer of OSv who presented Support Dynamically Linked Executables via Linux ld.so and Implement ENA Driver to Expand Application of OSv. If you are an operating system enthusiast, don’t hesitate to check his insightful presentation .

Next Steps

The next steps for us are to add support for more programming languages (such as Go, Kotlin, Dart, etc.) and integrate more unikernels into our solution.

If you have any questions or just want to drop us a line - don’t hesitate to contact us at contact@genezio.com or on Discord . We are happy to discuss or share ideas with you!

Subscribe to our newsletter

Genezio is a serverless platform for building full-stack web and mobile applications in a scalable and cost-efficient way.



Related articles


More from News