Adhoc: a virtual event to explore systems engineering
When?
Our first virtual event will be this April 23rd at 4PM ET / 8PM UTC (gcal).
Where?
The event will be live streamed on Zoom and YouTube. Questions will accepted and moderated
through twitter, with #adhoctalks. Be on the lookout for the link!
Who?
We have 4 great speakers lined up. See below.
Who is organizing this?
This is a personal project of Paul Khuong, Samy Al Bahra and
Jessica Natoli.
I would be interested in presenting at a later event, maybe under a different theme.
Send an email to pvk@pvk.ca with your topic, abstract, and list of references to pre-read.
Sponsors
Thanks to Backtrace for sponsoring the event.
1. Why mmap is faster than system calls
Speaker
Alexandra (Sasha) Fedorova
Summary
Sasha will share with us her experiences optimizing the MongoDB storage engine
for modern fast storage devices. Sasha brings with her a wealth of experience
with significant contributions to NUMA, memory allocators,
databases and more.
Sasha is a professor at the University of British Columbia and a consultant at MongoDB.
Recommended reading before attending
- Getting storage engines ready for fast storage devices
- Why mmap is faster than system calls
2. Making safe memory reclamation a feature of your memory allocator
Speaker
Jeff Roberson
Summary
Jeff Roberson will share with us his experiences in the design and implementation
of a novel safe memory reclamation mechanism that integrates directly into the FreeBSD
kernel memory allocator. This is an alternative to RCU and epoch reclamation for many
use-cases and is able to achieve 2X-6X better performance!
Jeff has made significant contributions to open-source and is the author of the FreeBSD ULE scheduler.
Recommended reading before attending
- Making Lockless Synchronization Fast: Performance Implications of Memory Reclamation (Hard, McKenney, and Brown, 2006)
- The Slab Allocator: An Object-Caching Kernel Memory Allocator (Bonwick, 1994)
- Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources (Bonwick, 2001)
- subr_smr.c
- smr.h
3. A 15-minute history of task isolation on Linux
Speaker
Matt Fleming
Summary
Many high-performance and real-time scenarios need to run
tasks without interruption from either other tasks or the underlying
kernel, and task isolation has been a common feature in RTOSes for
years. Linux has improved its support for this use case for a long
time and each improvement has brought the goal of running userspace
tasks without interruption closer to reality. This talk will briskly
cover the last 18 years of Linux kernel development relating to task
isolation, finishing with the state of the art today and the latest
version of the "task_isolation mode" patches on the Linux kernel
mailing list. Expect some Linux kernel development history and
explanation of kernel internals.
Matt is a senior performance engineer at SuSE and has made several significant contributions including improving Linux kernel scheduler performance by up to 20% for AMD EPYC.
Recommended reading before attending
- https://lore.kernel.org/linux-api/07c25c246c55012981ec0296eee23e68c719333a.camel@marvell.com/">
- LWN: A full task-isolation mode for the kernel
- LWN: Dropping the timer tick — for real this time
- SUSE Linux's Shielding Linux Resources
4. jitmap, an execution engine for bitmap expressions
Speaker
Francois Saint-Jacques
Summary
jitmap is a small library providing an execution engine for logical binary
expressions on bitmaps. Some examples where this is relevant:
* In search engines, posting lists (sorted sequences of integers) are encoded
with bitmaps. Evaluating a search query (logical expression on
keywords) can be implemented with logical expression on bitmaps.
* In columnar databases, selection vectors (index masks) are encoded with
bitmaps, the results of predicate on column expressions. The bitmaps are then
combined in a final bitmap.
* In stream processing systems with rule engines, e.g. adtech bid requests
filtering with campaign rules, bitmaps are used as a first-pass optimization
to lower the number of (costly) rules to evaluate on each incoming event.
jitmap compiles logical expressions into native functions with signature
void fn(const char**, char*). The functions are optimized to minimize memory
transfers via operator fusion and uses the fastest vector instruction
set provided by the host.
Francois works full time on R Studio on Apache Arrow and otherwise has worked on columnar database internals for several years now.
Recommended reading before attending
- Bitmap Index Design and Evaluation (Chan and Ioannidis, 1998)
- The "Jamming" section (pp. 8-11) of A catalogue of optimizing transformations (Allen and Cocke, 1971)
- The code itself
- Faster Population Counts Using AVX2 Instructions
- LLVM Tree-Height-Reduction optimization pass