| Speaker Name | Lennart Poettering |
|
| Organization | Red Hat | |
| Type | Talk | |
| Scope | Technical | |
| Slides | Click to download | |
Introduction into practical real-time programming in userspace on Linux |
||
| Abstract | In this talk I will try to give an introduction into the real-time userspace APIs of Linux and their practical usage. Today's vanilla Linux kernel provides very good low-latency processing, especially when compared to other mainstream operating systems. Real-time in the kernel is an often discussed topic on various conferences. However, how to make use of the real-time functionality pratically in userspace is seldomly discussed. In my talk I will shed some light on this aspect of Real-time programming and give it the attention it deserves. Time permitting I will try to touch the following topics: - Synchronisation (Semaphores, Mutexes, futexes) - Real-time scheduling - Atomic operations - Memory barriers - Zero-copy memory management/reference counting - Lock-free/wait-free algorithms and techniques to avoid locking - High-resolution timers - Memory locking - Priority Inheritance - Robustness and security - UNIX signals and POSIX real-time signals - Sleeping for events in real-time threads - Memory allocation, free lists - eventfd() Primary focus is the practical usage of the Real-time techniques. Special focus is laid on the selection of APIs to use and their practical performance on Linux, their limitations and their resource cost. The techniques discussed are being used in the new PulseAudio audio server core, which is coded almost entirely lock-free for optimal usage of the real-time functionality. Hopefully, attendees will take home an insight into the broad range of Real-time techniques on Linux, learn which tool to use for which problem, and generally open up their mind for scalable, performant real-time programming. |
|
| Pre-requisites | Attendees should bring a basic idea of programming with multiple threads, preferably in C. A general idea what this "real-time programming thing" is all about would be a boon, too -- although I will introduce its basics roughly during the first minutes of my talk. | |
| Speaker Profile | Born in Ciudad de Guatemala (Guatemala), grown up in Rio de Janeiro (Brazil) Lennart Poettering now lives in Hamburg (Germany), developing software as part of the Red Hat Desktop Group. He earned a "Diplom" degree in Informatics/Computer Science from Hamburg University. He wrote his diploma thesis about scalable service discovery protocol design for large mesh networks, for usage in the "One Laptop Per Child" project. His work mostly focusses on the various aspects of desktop audio, and cleaning up the big mess audio on Linux currently is. Lennart is the maintainer of and wrote most of the PulseAudio sound system, which is a powerful low-latency replacement for the venerable ESOUND sound server on Linux. He also coded most of the popular Avahi mDNS/DNS-SD Zeroconf network service discovery suite. Both PulseAudio and Avahi are integral part of modern Linux distributions. When Lennart is not busy hacking Linux software, he spends his time with photography, sorting his extensive music collection and skiing. Affiliations: Red Hat, Avahi, PulseAudio Past speaker experience: GUADEC 2006, 2007; Foundations of Open Media Software (FOMS) 2007; Linux.conf.au 2007; LinuxTag 2007; Ottawa Linux Symposium (OLS) 2007; LugRadio Live (LRL) 2007. Conference committees: FOMS 2008. | |



















