{"guid":"d1635d41-1fac-4a43-909b-b8f07672c541","title":"Reading Video data with IO_URING","subtitle":"putting a new kernel framework into practical use","slug":"froscon2026-3635-reading_video_data_with_io_uring","link":"https://programm.froscon.org/2026/events/3635.html","description":"\u003cb\u003eio_uring\u003c/b\u003e is a fairly new I/O interface in the Linux kernel.\nIt represents a shift in how applications interact with the kernel.\nInstead of transferring control through a system-call interface into kernel mode,\noperations are submitted asynchronously through shared queues.\n\nThis talk discusses patterns for dealing with asynchronous I/O and demonstrates a setup\nfor high-volume file reading using this framework, illustrated with code examples in C++.\n\n\u003ci\u003eLumiera\u003c/i\u003e is a video editing application under development in C++ and serves here\nas a real-world example showing how asynchronous I/O can play a key role in achieving\nadequate throughput for video processing.\n\nThe usual straightforward way to read data from a file is to invoke a \u003ctt\u003eread()\u003c/tt\u003e\nfunction and receive the requested data directly in response. While this function\nis typically exposed through the programming language's standard library, it ultimately\nmaps to a system call provided by the OS-kernel. Although this approach is simple in\nterms of program logic, it has the disadvantage that the calling thread is blocked,\nfor an unknown amount of time, until the data becomes available.\n\nBlocking behaviour is particularly problematic in high-performance applications, because it\nreduces control over execution timing and may leave computational resources idle. Various\ninterfaces and frameworks have been developed over time to address this issue, both for\nnetwork communication and for file operations. The Linux kernel system call interface\n\u003cb\u003eio_uring\u003c/b\u003e, adopted in kernel version 5.1 (2019) and gradually expanded since then,\ntakes these efforts one step further by providing a uniform framework for many kinds of\nI/O operations: Client code submits requests to the kernel via shared queue, while\ncompleted work items are returned asynchronously through a second queue.\n\nIn theory, this model allows extremely high throughput and very low latency.\nIn practice, however, structuring client code to achieve these goals remains challenging.\nIn our use case -- rendering video frames based on the timeline arrangement made by the\nfilm editor -- expensive computations must be chained behind I/O operations, all together\ninvolving a massive amount of data.\n\nThe talk discusses common solution patterns and presents the approach taken by the\n\u003ci\u003eLumiera\u003c/i\u003e project to address these challenges. A simplified demonstration setup\nwill then be explained using code examples in C++.\n\nLicensed to the public under http://creativecommons.org/licenses/by/4.0","original_language":"eng","persons":["Hermann Voßeler"],"view_count":16,"promoted":false,"date":"2026-08-15T15:00:00.000+02:00","release_date":"2026-08-15T00:00:00.000+02:00","updated_at":"2026-08-16T19:15:07.502+02:00","tags":["3635","2026","froscon2026","Development","HS 6","froscon2026-eng","Day 1"],"length":3655,"duration":3655,"thumb_url":"https://static.media.ccc.de/media/events/froscon/2026/3635-d1635d41-1fac-4a43-909b-b8f07672c541.jpg","poster_url":"https://static.media.ccc.de/media/events/froscon/2026/3635-d1635d41-1fac-4a43-909b-b8f07672c541_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/froscon/2026/3635-d1635d41-1fac-4a43-909b-b8f07672c541.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/froscon/2026/3635-d1635d41-1fac-4a43-909b-b8f07672c541.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/froscon2026-3635-reading_video_data_with_io_uring","url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_title":"FrOSCon 2026","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026","related":[],"recordings":[{"length":3655,"mime_type":"video/mp4","language":"eng","filename":"froscon2026-3635-eng-Reading_Video_data_with_IO_URING_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-08-15T17:57:55.919+02:00","label":"eng 1080p","size":537,"recording_url":"https://cdn.media.ccc.de/events/froscon/2026/h264-hd/froscon2026-3635-eng-Reading_Video_data_with_IO_URING_hd.mp4","url":"https://api.media.ccc.de/public/recordings/103629","event_url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026"},{"length":3655,"mime_type":"audio/mpeg","language":"eng","filename":"froscon2026-3635-eng-Reading_Video_data_with_IO_URING_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2026-08-15T18:01:50.466+02:00","label":"eng","size":56,"recording_url":"https://cdn.media.ccc.de/events/froscon/2026/mp3/froscon2026-3635-eng-Reading_Video_data_with_IO_URING_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/103635","event_url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026"},{"length":3655,"mime_type":"audio/opus","language":"eng","filename":"froscon2026-3635-eng-Reading_Video_data_with_IO_URING_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2026-08-15T18:03:03.030+02:00","label":"eng","size":33,"recording_url":"https://cdn.media.ccc.de/events/froscon/2026/opus/froscon2026-3635-eng-Reading_Video_data_with_IO_URING_opus.opus","url":"https://api.media.ccc.de/public/recordings/103636","event_url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026"},{"length":3655,"mime_type":"video/mp4","language":"eng","filename":"froscon2026-3635-eng-Reading_Video_data_with_IO_URING_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2026-08-15T18:05:44.936+02:00","label":"eng 576p","size":154,"recording_url":"https://cdn.media.ccc.de/events/froscon/2026/h264-sd/froscon2026-3635-eng-Reading_Video_data_with_IO_URING_sd.mp4","url":"https://api.media.ccc.de/public/recordings/103639","event_url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026"},{"length":3655,"mime_type":"video/webm","language":"eng","filename":"froscon2026-3635-eng-Reading_Video_data_with_IO_URING_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2026-08-15T18:29:34.172+02:00","label":"eng 576p","size":141,"recording_url":"https://cdn.media.ccc.de/events/froscon/2026/webm-sd/froscon2026-3635-eng-Reading_Video_data_with_IO_URING_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/103650","event_url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026"},{"length":3655,"mime_type":"video/webm","language":"eng","filename":"froscon2026-3635-eng-Reading_Video_data_with_IO_URING_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-08-15T18:30:46.440+02:00","label":"eng 1080p","size":441,"recording_url":"https://cdn.media.ccc.de/events/froscon/2026/webm-hd/froscon2026-3635-eng-Reading_Video_data_with_IO_URING_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/103651","event_url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026"},{"length":3655,"mime_type":"video/webm;codecs=av01","language":"eng","filename":"froscon2026-3635-eng-Reading_Video_data_with_IO_URING_av1-hd.webm","state":"new","folder":"av1-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-08-15T19:17:57.641+02:00","label":"eng 1080p","size":369,"recording_url":"https://cdn.media.ccc.de/events/froscon/2026/av1-hd/froscon2026-3635-eng-Reading_Video_data_with_IO_URING_av1-hd.webm","url":"https://api.media.ccc.de/public/recordings/103668","event_url":"https://api.media.ccc.de/public/events/d1635d41-1fac-4a43-909b-b8f07672c541","conference_url":"https://api.media.ccc.de/public/conferences/froscon2026"}]}