Operating systems occupy a critical spot in the systems we build, but are often ignored as something that is just there, providing an interface. Recently though there has been a huge amount of innovation in the area of operating systems. Rather than being an esoteric field, it has opened up to new experiments and a wider community. Performance requirements have meant that architectural changes are necessary, leading to different designs, such as eBPF, a new in kernel programming language, and high-performance userspace device drivers. Unikernels question the monolithic architecture, building an application-centric operating environment. Emulation has become a realistic way of running existing code in new environments, with Microsoft supporting Linux on Windows as a leading example. New programming languages are being used, and there is an explosion of innovation. This track explores these changes that are taking place in this exciting field.
Track: Modern Operating Systems
Location: Bayview AB
Day of week: Monday
Track Host: Justin Cormack
Justin Cormack is developer at Docker, working on unikernels.
10:35am - 11:25am
How to Make Linux Microservice-Aware With Cilium and eBPF
Container runtimes cause Linux to return to its original purpose: to serve applications interacting directly with the kernel. At the same time, the Linux kernel is traditionally difficult to change and its development process is full of myths. A new efficient in-kernel programming language called eBPF is changing this and allows everyone to extend existing kernel components or glue them together in new forms without requiring to change the kernel itself.
11:50am - 12:40pm
Caching Beyond RAM: The Case for NVMe
Caching architectures at every layer of the stack embody an implicit tradeoff between performance and cost. These tradeoffs however are constantly shifting: new inflection points can emerge alongside advances in storage technology, changes in workload patterns, or fluctuations in hardware supply and demand.
In this talk, we will explore the design ramifications of the increasing cost of RAM on caching systems. While RAM has always been expensive, DRAM prices have risen by over 50% in 2017, and high densities of RAM involve multi-socket NUMA machines, bloating power and overall costs. Concurrently, alternative storage technologies such as Flash and Optane continue to improve. They have specialized hardware interfaces, consistent performance, high density, and relatively low costs. While there is increasing economic incentive to explore offloading caching from RAM onto NVMe or NVM devices, the implications for performance are still not widely understood.
1:40pm - 2:30pm
The Operating System in 2018
Why care about the operating system any more? Linux has been around for decades aren't we just done? Actually, there is a huge set of shifts happening in the operating system, and this talk will explain these changes. The operating system space is getting interesting again!
First, performance is changing everything. The development of faster networking, now at 100Gb and above, combined with faster flash storage, means that our tools need to change in order to make all that performance available to applications and to keep tail latency under control. This led to the development of userspace drivers and a whole new high-performance programming language in the Linux kernel, eBPF.
Another major change is that emulation is back. Microsoft has Linux running natively on Windows, while Google has gVisor, which emulates Linux on Linux. Why is this happening, and what are the use cases? What new directions will emulation take us?
Two things though have not changed much yet. The programming languages used in operating systems are pretty much unchanged, with C dominating, and the use of alternatives to the traditional OS, such as unikernels, microkernels and other alternatives have been slow. We look at why this is and how it may change.
4:10pm - 5:00pm
gVisor: Building and Battle Testing a Userspace OS in Go
gVisor is a container runtime that implements the Linux kernel API in userspace using Go. This talk explains why on earth such a thing exists and covers three main areas of interest: First, architectural challenges associated with userspace kernels, such as traps, faults and memory management. Second, positive and negative experiences with Go as an implementation language -- it's not all about garbage collection. Finally, how to ensure API coverage and compatibility, along with production anecdotes whenever possible.
5:25pm - 6:15pm
Is It Time to Rewrite the Operating System in Rust?
Since its emergence in the 1970s, C has dominated operating systems development: despite surges of enthusiasm for C++, Java, and others, operating systems -- kernels, drivers, libraries and system commands -- have been and continue to be developed in C. But with the rise of Rust, that dominance is now rightfully being questioned: with its core values of robustness and blazing fast performance, could Rust reasonably replace C as the lingua franca of operating systems development? And can the advantages that Rust conveys pay the significant cost of rewriting software that already works? In this talk, we will seek to answer these questions: we will explore Rust, explain why it has captured the imagination of so many systems software engineers, and outline where it might best fit in the deep stack of operating system software.
Tracks
Monday, 5 November
-
Microservices / Serverless Patterns & Practices
Evolving, observing, persisting, and building modern microservices
-
Practices of DevOps & Lean Thinking
Practical approaches using DevOps & Lean Thinking
-
JavaScript & Web Tech
Beyond JavaScript in the Browser. Exploring WebAssembly, Electron, & Modern Frameworks
-
Modern CS in the Real World
Thoughts pushing software forward, including consensus, CRDT's, formal methods, & probabilistic programming
-
Modern Operating Systems
Applied, practical, & real-world deep-dive into industry adoption of OS, containers and virtualization, including Linux on Windows, LinuxKit, and Unikernels
-
Optimizing You: Human Skills for Individuals
Better teams start with a better self. Learn practical skills for IC
Tuesday, 6 November
-
Architectures You've Always Wondered About
Next-gen architectures from the most admired companies in software, such as Netflix, Google, Facebook, Twitter, & more
-
21st Century Languages
Lessons learned from languages like Rust, Go-lang, Swift, Kotlin, and more.
-
Emerging Trends in Data Engineering
Showcasing DataEng tech and highlighting the strengths of each in real-world applications.
-
Bare Knuckle Performance
Killing latency and getting the most out of your hardware
-
Socially Conscious Software
Building socially responsible software that protects users privacy & safety
-
Delivering on the Promise of Containers
Runtime containers, libraries, and services that power microservices
Wednesday, 7 November
-
Applied AI & Machine Learning
Applied machine learning lessons for SWEs, including tech around TensorFlow, TPUs, Keras, PyTorch, & more
-
Production Readiness: Building Resilient Systems
More than just building software, building deployable production ready software
-
Developer Experience: Level up your Engineering Effectiveness
Improving the end to end developer experience - design, dev, test, deploy, operate/understand.
-
Security: Lessons Attacking & Defending
Security from the defender's AND the attacker's point of view
-
Future of Human Computer Interaction
IoT, voice, mobile: Interfaces pushing the boundary of what we consider to be the interface
-
Enterprise Languages
Workhorse languages found in modern enterprises. Expect Java, .NET, & Node in this track