Speaker
Description
Flux is a framework for writing multicore schedulers, written in eBPF, that runs on top of Google's Ghost kernel scheduling class (analogous to sched_ext). Although the Flux framework is interesting in its own right, this talk will cover the data structures and trickery involved with making Flux work in BPF. Particularly, we heavily utilize array maps as a quasi memory allocator, and have data structures such as linked lists and AVL trees within those maps. Additionally, Flux is lightly "object oriented", and we have strategies for function dispatch in a world where there are no function pointers and all objects are the same type. Hopefully our techniques and data structures will be useful to other BPF users as people make increasingly complicated programs.