Fueling innovative software
July 15-18, 2019
Portland, OR

eBPF-powered distributed Kubernetes performance analysis

Lorenzo Fontana (Sysdig)
2:35pm3:15pm Wednesday, July 17, 2019
The Next Architecture
Location: D135/136
Secondary topics:  Cloud Native

Who is this presentation for?

  • Site reliability engineers, software engineers, performance engineers, Kubernetes administrators, and sysadmins

Level

Intermediate

Description

Since the Linux kernel 4.x series, a lot of enhancements have reached the mainline of the extended Berkeley Packet Filter (eBPF) ecosystem, giving you the capability to do a lot more than just network stuff. But the eBPF ecosystem can be hard to wrap your mind around.

Lorenzo Fontana offers an initial understanding of what eBPF programs are and explains how to hook them to programs running inside Kubernetes clusters in order to answer targeted questions at the cluster level about very specific, fine-grained situations: Has that function in my program been called? For a given function, which arguments have been passed to it? What it did return? Which TCP packets are being retransmitted? Which queries are running slow? What are the insights on programming language events/GC? Has that file been opened?

Imagine a programmable Kubernetes performance analysis tool that runs at cluster level without performance implications. How would that be?

Prerequisite knowledge

  • A basic understanding of the the basic components of a Kubernetes cluster

What you'll learn

  • Learn how to measure and understand your applications using the eBPF tracing framework from the Linux kernel
Photo of Lorenzo Fontana

Lorenzo Fontana

Sysdig

Lorenzo Fontana is an open source software engineer at Sysdig, where he primarily works on Falco, a Cloud Native Computing Foundation (CNCF) project that does container runtime security and anomaly detection. He’s passionate about distributed systems, software-defined networking, the Linux kernel, and performance analysis. He’s the maintainer of the IO Visors Project’s kubectl-trace.