From 3f7baa8e24e7e3dd6fc8d032c90b56c7c341bb0d Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 23 May 2026 19:24:30 +0200 Subject: [PATCH] Projektantrag eingereicht. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hab den Text noch etwas ausgefeilt. Auch noch einige Formulierungs-Verbesserungen gemäß ChatGPT eingearbeitet. --- FrOSCon26/Antrag.txt | 61 +++++++++++++++++++++-------------------- FrOSCon26/FrOSCon.26.mm | 10 +++++-- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/FrOSCon26/Antrag.txt b/FrOSCon26/Antrag.txt index a8c610c..f48aa9d 100644 --- a/FrOSCon26/Antrag.txt +++ b/FrOSCon26/Antrag.txt @@ -12,47 +12,50 @@ OpenSource-Projekt lösen mussten: eine große Menge Video-Daten effizient einle Vor diesem Hintergrund möchte ich das neue IO_URING Kernel-Interface erläutern und mit vereinfachten Code-Beispielen in C++ zeigen, wie es in eine Applikation eingebunden werden kann. Rudimentäre C++ Kenntnisse sollten genügen, um dem -Vortrag zu folgen. +Vortrag zu folgen, Kennnisse in Systemprogrammierung werden nicht vorrausgesetzt. Für die eigentliche Darstellung rechne ich mit 40 Minuten. Kurzfassung ~~~~~~~~~~~ -IO_URING is a fairly new IO interface in the Linux kernel. -It marks a paradigm shift in how the kernel is interacted with. -Instead of passing control thorough an interface function to enter into kernel mode, -messages are passed asynchronously. +io_uring is a fairly new I/O interface in the Linux kernel. +It represents a shift in how applications interact with the kernel. +Instead of transferring control through a system-call interface into kernel mode, +operations are submitted asynchronously through shared queues. -In this talk, patterns for dealing with asynchronous IO are discussed and a setup to handle -high volume file reading using this framework is demonstrated with code examples in C++. +This talk discusses patterns for dealing with asynchronous I/O and demonstrates a setup +for high-volume file reading using this framework, illustrated with code examples in C++. -Lumiera is a video editing application under development in C++ -- and is used here to -illustrate that asynchronous I/O can play a key role in achieving high throughput for video processing. +Lumiera is a video editing application under development in C++ and serves here +as a real-world example showing how asynchronous I/O can play a key role in achieving +adequate throughput for video processing. Langfassung ~~~~~~~~~~~ -The usual simple way of reading data from a file is to just invoke a `read()` function, directly -getting the data in response. This function is accessible as part of the programming language's -standard library, yet in the end it maps down onto a function of the OS kernel. And while this -form of reading data from a file is easy to handle, in terms of program logic, it has the downside -that the current thread is blocked, for an unknown period of time, until the data is ready. +The usual straightforward way to read data from a file is to invoke a read() +function and receive the requested data directly in response. While this function +is typically exposed through the programming language's standard library, it ultimately +maps to a system call provided by the OS-kernel. Although this approach is simple in +terms of program logic, it has the disadvantage that the calling thread is blocked, +for an unknown amount of time, until the data becomes available. -Blocking is particularly problematic in high-performance computing, as it means losing control -over the timings and leaving resources unused. Various interfaces and frameworks have been -developed over time to improve this, both for network communication and for file operations. -The Linux kernel system call interface IO_URING, adopted in kernel version 5.1 (2019) and -gradually expanded since then, takes these efforts one step further and provides an uniform -framework for various kinds of IO operations: The client code instructs the kernel to perform -some IO related task by sending it a message, and the kernel returns the completed work items -via a different queue. +Blocking behaviour is particularly problematic in high-performance applications, because it +reduces control over execution timing and may leave computational resources idle. Various +interfaces and frameworks have been developed over time to address this issue, both for +network communication and for file operations. The Linux kernel system call interface +io_uring, adopted in kernel version 5.1 (2019) and gradually expanded since then, +takes these efforts one step further by providing a uniform framework for many kinds of +I/O operations: Client code submits requests to the kernel via shared queue, while +completed work items are returned asynchronously through a second queue. -In theory, it is possible to achieve an extreme throughput or very low latency; yet in practice, -it proves quite challenging to structure the client code accordingly to achieve these goals. -In our use case, related to rendering video frames based on the arrangement made by the film -editor, expensive computations need to be chained-up behind the IO operations, all involving -a massive amount of data. The talk will discuss some common solution patterns, and the approach -taken by the Lumiera project to cope with this situation. A simplified demo level setup will -then be explained with code examples in C++ +In theory, this model allows extremely high throughput and very low latency. +In practice, however, structuring client code to achieve these goals remains challenging. +In our use case -- rendering video frames based on the timeline arrangement made by the +film editor -- expensive computations must be chained behind I/O operations, all together +involving a massive amount of data. +The talk discusses common solution patterns and presents the approach taken by the +Lumiera project to address these challenges. A simplified demonstration setup +will then be explained using code examples in C++. diff --git a/FrOSCon26/FrOSCon.26.mm b/FrOSCon26/FrOSCon.26.mm index 93c2680..bfbd70b 100644 --- a/FrOSCon26/FrOSCon.26.mm +++ b/FrOSCon26/FrOSCon.26.mm @@ -474,7 +474,7 @@ - + @@ -537,10 +537,14 @@ - - + + + + + +