complete the train-of-thought for the talk

...including the explanation of the Demo-Code
This commit is contained in:
Fischlurch 2026-08-05 01:14:41 +02:00
parent f46f117eda
commit af4c3778a3

View file

@ -139,6 +139,10 @@
<node CREATED="1753975282862" ID="ID_1757272422" MODIFIED="1779389374566" TEXT="Architektur: ...?">
<node CREATED="1753975296740" ID="ID_1229595667" MODIFIED="1779389390772" TEXT="IO_URING"/>
<node CREATED="1753975302291" ID="ID_1562905270" MODIFIED="1753975307006" TEXT="abstraction Framework"/>
<node CREATED="1785873471495" ID="ID_1844672094" MODIFIED="1785873481578" TEXT="Concurrency-Handling">
<node CREATED="1785873482817" ID="ID_1213566083" MODIFIED="1785873484524" TEXT="blocking"/>
<node CREATED="1785873485001" ID="ID_1375952117" MODIFIED="1785873487660" TEXT="event-driven"/>
</node>
</node>
<node CREATED="1753975557742" ID="ID_733136201" MODIFIED="1753975561997" TEXT="Praxis im Code"/>
</node>
@ -301,7 +305,7 @@
</node>
</node>
</node>
<node CREATED="1785705128951" ID="ID_53113943" MODIFIED="1785705133470" TEXT="synchronisation">
<node CREATED="1785705128951" ID="ID_53113943" MODIFIED="1785873608525" TEXT="Synchronisation">
<node CREATED="1785705215460" ID="ID_1041446652" MODIFIED="1785705218215" TEXT="two meanings">
<node CREATED="1785705219604" ID="ID_235422789" MODIFIED="1785705224583" TEXT="control-flow correlation"/>
<node CREATED="1785705225235" ID="ID_845381194" MODIFIED="1785705228894" TEXT="visibility management">
@ -338,7 +342,8 @@
<node CREATED="1785791204505" ID="ID_1519603089" MODIFIED="1785791238988" TEXT="a memory barrier in itself does not impact the control flow"/>
<node CREATED="1785791217111" ID="ID_1010220877" MODIFIED="1785791232073" TEXT="but it is the foundation to synchronise two control-flows"/>
</node>
<node CREATED="1785791243995" ID="ID_564793830" MODIFIED="1785791259240" TEXT="Example: Producer-Consumer">
<node CREATED="1785791243995" ID="ID_564793830" MODIFIED="1785884741878" TEXT="Example: Producer-Consumer">
<arrowlink COLOR="#53387c" DESTINATION="ID_1698936757" ENDARROW="Default" ENDINCLINATION="-204;-288;" ID="Arrow_ID_1007251265" STARTARROW="None" STARTINCLINATION="-119;11;"/>
<node CREATED="1785791260357" ID="ID_1065157346" MODIFIED="1785791274112" TEXT="Claude hat ein sehr gutes Code-Beispiel aufgeschrieben"/>
<node CREATED="1785791274543" ID="ID_1417066396" MODIFIED="1785791277867" TEXT="daran kann man zeigen">
<node CREATED="1785791279262" ID="ID_367637685" MODIFIED="1785791288802" TEXT="welche fences hier auftreten"/>
@ -350,19 +355,341 @@
<node CREATED="1785791353939" ID="ID_602058573" MODIFIED="1785791370380" TEXT="&quot;walk away&quot; &#x27f9; hei&#xdf;t hier &quot;Schlaf!&quot;"/>
</node>
</node>
<node CREATED="1785873983733" ID="ID_886814253" MODIFIED="1785874002870" TEXT="Architecture: async-IO">
<node CREATED="1785874005820" ID="ID_764934362" MODIFIED="1785874017772" TEXT="there must be a state-tracking somewhere">
<node CREATED="1785875062363" ID="ID_669571090" MODIFIED="1785875081624" TEXT="Implicit state, paid for in threads">
<node CREATED="1785874023228" ID="ID_997386966" MODIFIED="1785874062246" TEXT="Blocking &#x27f9; code itself is controlled state-progression"/>
<node CREATED="1785875087349" ID="ID_210857906" MODIFIED="1785875097481" TEXT="state machine is hidden in the thread&apos;s stack"/>
</node>
<node CREATED="1785875106812" ID="ID_661494362" MODIFIED="1785875108135" TEXT="Explicit state, paid for in bookkeeping">
<node CREATED="1785875127465" ID="ID_1207746212" MODIFIED="1785875136568" TEXT="hand-written state engine">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1785875137944" ID="ID_1383222377" MODIFIED="1785875142163" TEXT="continuation-passing"/>
<node CREATED="1785875143239" ID="ID_230123804" MODIFIED="1785875146651" TEXT="Coroutines">
<node CREATED="1785875179714" ID="ID_599406814" MODIFIED="1785875187341" TEXT="A coroutine is a compiler-synthesized state machine">
<node CREATED="1785875202575" ID="ID_1932767180" MODIFIED="1785875217532" TEXT="co_await points &#x2259; case labels"/>
<node CREATED="1785875237674" ID="ID_1058579559" MODIFIED="1785875253716" TEXT="locals &#x27f9; suspension &#x27f9; member fields of a generated struct"/>
</node>
</node>
</node>
</node>
<node CREATED="1785875435722" ID="ID_1802647209" MODIFIED="1785875455293">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
there must be <b>backpressure</b>&#160;/ flow-control somewhere
</p>
</body>
</html></richcontent>
<node CREATED="1785875533939" ID="ID_931251654" MODIFIED="1785875543715" TEXT="possibly distribute to N follow-up workers"/>
<node CREATED="1785875544671" ID="ID_1027936727" MODIFIED="1785875556973" TEXT="BUT pointless to task more IO than can be handled downstream">
<node CREATED="1785875560278" ID="ID_1374938498" MODIFIED="1785875566568" TEXT="it will just block buffer memory"/>
</node>
</node>
<node CREATED="1785875588128" ID="ID_1594640460" MODIFIED="1785875600648" TEXT="simple solution : a polling thread">
<node CREATED="1785875601816" ID="ID_1853399706" MODIFIED="1785875634049">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Thread polls &#187;readyness&#171; &#10233; <b>Reactor</b>&#160;Pattern
</p>
</body>
</html></richcontent>
<node CREATED="1785875660697" ID="ID_130608972" MODIFIED="1785875670178" TEXT="&#xbb;the old solution&#xab;"/>
<node CREATED="1785875701937" ID="ID_823278976" MODIFIED="1785875715769" TEXT="AIO &#x27f9; readyness signalling"/>
</node>
<node CREATED="1785875601816" ID="ID_132126899" MODIFIED="1785875657405">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Thread polls &#187;completion&#171; &#10233; <b>Proactor</b>&#160;Pattern
</p>
</body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1785875859594" ID="ID_404844187" MODIFIED="1785875865559" TEXT="Example: Video Player">
<node CREATED="1785875876826" ID="ID_256659487" MODIFIED="1785875895788" TEXT="have a fast Open-GL pipeline &#x27f9; just need hand-over"/>
<node CREATED="1785875964166" ID="ID_684645417" MODIFIED="1785875979393" TEXT="Backpressure &#x27f8; use fixed-size ring"/>
<node CREATED="1785876001689" ID="ID_169727968" MODIFIED="1785876017834" TEXT="Buffers &#x27f8; allocate array and use them as a ring">
<node CREATED="1785876027156" ID="ID_1967193354" MODIFIED="1785876045895" TEXT="buffer[frameNr % RING_SIZE]"/>
</node>
<node CREATED="1785876070465" ID="ID_581666658" MODIFIED="1785876089705" TEXT="Nondeterminism &#x27f9; one state-flag per &#xbb;Slot&#xab;">
<node CREATED="1785876099444" ID="ID_978689315" MODIFIED="1785876116674">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
tasks are not necessarily completed <i>in order</i>
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1785876138729" ID="ID_1841014403" MODIFIED="1785876144702" TEXT="we use several &#xbb;cursors&#xab;">
<node CREATED="1785876149265" ID="ID_693000407" MODIFIED="1785876153608" TEXT="a task-feed cursor">
<node CREATED="1785879093253" MODIFIED="1785879093253" TEXT="nextRead_"/>
</node>
<node CREATED="1785876154909" ID="ID_1730609281" MODIFIED="1785876165607" TEXT="a completion-reaping cursor">
<node CREATED="1785879098386" ID="ID_1898415996" MODIFIED="1785879103211" TEXT="nextShow_"/>
</node>
</node>
<node CREATED="1785876420056" ID="ID_1318957188" MODIFIED="1785877188037" TEXT="State-Engine">
<arrowlink COLOR="#3f50bf" DESTINATION="ID_972192378" ENDARROW="Default" ENDINCLINATION="116;-8;" ID="Arrow_ID_81571613" STARTARROW="None" STARTINCLINATION="-221;45;"/>
<node CREATED="1785877645815" ID="ID_1556547895" MODIFIED="1785877647130" TEXT="enum BuffState { FREE, READ, FEED, SHOW, STOP };"/>
</node>
</node>
<node CREATED="1785876541776" ID="ID_1160868029" MODIFIED="1785876548328" TEXT="Runtime Structure">
<node CREATED="1785876552050" ID="ID_76091441" MODIFIED="1785876559641" TEXT="GTK: Event-Thread">
<node CREATED="1785876577770" ID="ID_1458066381" MODIFIED="1785876586549" TEXT="owns the OpenGL-Display"/>
<node CREATED="1785876587305" ID="ID_1557659787" MODIFIED="1785876592468" TEXT="owns a Glib::Dispatcher"/>
</node>
<node CREATED="1785876560253" ID="ID_188966170" MODIFIED="1785876563735" TEXT="Proactor-Thread">
<node CREATED="1785876599046" ID="ID_278578338" MODIFIED="1785876606258" TEXT="owns the URing"/>
<node CREATED="1785876612904" ID="ID_1685141627" MODIFIED="1785876618721" TEXT="owns the Buffers and State-Engines"/>
</node>
<node CREATED="1785876723751" ID="ID_1367832220" MODIFIED="1785876726942" TEXT="Coordination">
<node CREATED="1785876729342" ID="ID_943323172" MODIFIED="1785876735633" TEXT="Glib::Dispatcher for signalling"/>
<node CREATED="1785876736101" ID="ID_1593625248" MODIFIED="1785876740856" TEXT="std::atomic&lt;Buffer*&gt; for backpressure"/>
</node>
</node>
<node CREATED="1785877039364" ID="ID_260672030" MODIFIED="1785877048254" TEXT="Demo Code">
<node CREATED="1785877049491" ID="ID_1817582813" MODIFIED="1785877053814" TEXT="Application structure">
<node CREATED="1785877055882" ID="ID_762153804" MODIFIED="1785877106316" TEXT="Scheme : Application-setup"/>
<node CREATED="1785877527898" ID="ID_74765922" MODIFIED="1785877552297" TEXT="Window owns UringVideoPlayer">
<node CREATED="1785877556574" ID="ID_622317404" MODIFIED="1785877559097" TEXT="owns Dispatcher"/>
<node CREATED="1785877563389" ID="ID_1998229176" MODIFIED="1785877567536" TEXT="owns Thread"/>
</node>
<node CREATED="1785877572491" ID="ID_869047623" MODIFIED="1785877576226" TEXT="RAII">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1785877578015" ID="ID_173000586" MODIFIED="1785877586379" TEXT="explain UringVideoPlayer object">
<node CREATED="1785878130468" ID="ID_1022336537" MODIFIED="1785878142770" TEXT="RAII &#x27f9; Constructor">
<node CREATED="1785878145077" ID="ID_452272705" MODIFIED="1785878156919" TEXT="Excourse : VideoDisplay">
<node CREATED="1785878170194" ID="ID_869030261" MODIFIED="1785878181004" TEXT="show overall structure"/>
<node CREATED="1785878181960" ID="ID_1034573776" MODIFIED="1785878349266" TEXT="show callback interface">
<arrowlink COLOR="#f9fdce" DESTINATION="ID_1293956882" ENDARROW="Default" ENDINCLINATION="99;9;" ID="Arrow_ID_516625561" STARTARROW="None" STARTINCLINATION="-7;60;"/>
</node>
</node>
</node>
<node CREATED="1785877891448" ID="ID_1293956882" MODIFIED="1785878340152" TEXT="explain Dispatcher-Interface">
<linktarget COLOR="#f9fdce" DESTINATION="ID_1293956882" ENDARROW="Default" ENDINCLINATION="99;9;" ID="Arrow_ID_516625561" SOURCE="ID_1034573776" STARTARROW="None" STARTINCLINATION="-7;60;"/>
</node>
<node CREATED="1785877902926" ID="ID_381643349" MODIFIED="1785877906779" TEXT="explain Members">
<node CREATED="1785877915140" ID="ID_1367836738" MODIFIED="1785877916913" TEXT="Allocations"/>
<node CREATED="1785877917752" ID="ID_1684639661" MODIFIED="1785877920920" TEXT="Thread-start"/>
</node>
</node>
<node CREATED="1785879260302" ID="ID_893404143" MODIFIED="1785879266253" TEXT="explain Proactor-Thread">
<node CREATED="1785879267416" ID="ID_1147715489" MODIFIED="1785879270840" TEXT="Init">
<node CREATED="1785879274164" ID="ID_395273571" MODIFIED="1785879276799" TEXT="open file"/>
<node CREATED="1785879277257" ID="ID_1072119806" MODIFIED="1785879278823" TEXT="open ring"/>
<node CREATED="1785879279667" ID="ID_951455059" MODIFIED="1785879284030" TEXT="allocate Buffers"/>
<node CREATED="1785879285319" ID="ID_742964426" MODIFIED="1785879287377" TEXT="setup timer"/>
<node CREATED="1785879288232" ID="ID_35444246" MODIFIED="1785879295660" TEXT="fill ring with tasks">
<node CREATED="1785879309008" ID="ID_1035852796" MODIFIED="1785879313250" TEXT="explain addNextReadSubmissions()">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1785879447457" ID="ID_1547935405" LINK="#ID_1348254697" MODIFIED="1785879469714" TEXT="(Bugfix)">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node CREATED="1785879476757" ID="ID_1829286292" MODIFIED="1785879488962" TEXT="io_uring_submit (&amp;uRing);"/>
</node>
<node CREATED="1785879492510" ID="ID_875029439" MODIFIED="1785879498025" TEXT="Proactor-Loop">
<node CREATED="1785879523660" ID="ID_1806184956" MODIFIED="1785879525333" TEXT="io_uring_wait_cqe()"/>
<node CREATED="1785879534520" ID="ID_1021478767" MODIFIED="1785879547786" TEXT="recall: FrameNr as user-data"/>
<node CREATED="1785879581508" ID="ID_1437520203" MODIFIED="1785879585488" TEXT="case-distinction">
<node CREATED="1785879586290" ID="ID_1741423948" MODIFIED="1785879588198" TEXT="Timer-Tick">
<node CREATED="1785879591928" ID="ID_888175966" MODIFIED="1785879781628" TEXT="maybeDisplayFrame()">
<arrowlink COLOR="#fdfabe" DESTINATION="ID_60590105" ENDARROW="Default" ENDINCLINATION="11;-54;" ID="Arrow_ID_250326530" STARTARROW="None" STARTINCLINATION="-240;0;"/>
</node>
<node CREATED="1785879597571" ID="ID_1157025992" MODIFIED="1785879604589" TEXT="addNextReadSubmissions()"/>
<node CREATED="1785879609678" ID="ID_668590143" MODIFIED="1785879614344" TEXT="submit ring"/>
</node>
<node CREATED="1785879615877" ID="ID_1882237275" MODIFIED="1785879621032" TEXT="else: reap completions">
<node CREATED="1785879632695" ID="ID_566495440" MODIFIED="1785879634526" TEXT="handleCompletedRead()"/>
<node CREATED="1785879694433" ID="ID_17628635" MODIFIED="1785879696926" TEXT="check error"/>
<node CREATED="1785879697450" ID="ID_1664017972" MODIFIED="1785879703017" TEXT="retrieve FrameNr">
<node CREATED="1785879706025" ID="ID_1545713668" MODIFIED="1785879710690" TEXT="note: its in the user data"/>
<node CREATED="1785879712883" ID="ID_1302537967" MODIFIED="1785879719511" TEXT="gets us blindly to the correct slot"/>
</node>
<node CREATED="1785879722743" ID="ID_1094537253" MODIFIED="1785879728714" TEXT="advance state-engine"/>
</node>
</node>
</node>
<node CREATED="1785879754243" ID="ID_60590105" MODIFIED="1785879781628" TEXT="maybeDisplayFrame()">
<linktarget COLOR="#fdfabe" DESTINATION="ID_60590105" ENDARROW="Default" ENDINCLINATION="11;-54;" ID="Arrow_ID_250326530" SOURCE="ID_888175966" STARTARROW="None" STARTINCLINATION="-240;0;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1785879840827" ID="ID_1269710501" MODIFIED="1785879858112" TEXT="this is likely the most dense piece of code">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1785880026115" ID="ID_1784510664" MODIFIED="1785880098786" TEXT="nochmal die States einblenden">
<arrowlink COLOR="#587cdf" DESTINATION="ID_336488542" ENDARROW="Default" ENDINCLINATION="415;41;" ID="Arrow_ID_725606969" STARTARROW="None" STARTINCLINATION="18;106;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1785880137606" ID="ID_109849950" MODIFIED="1785880147941" TEXT="Bedeutung der F&#xe4;lle">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1785879789774" ID="ID_1290834311" MODIFIED="1785879797005" TEXT="Switch-statement for the state-engine">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1785880154979" ID="ID_48334205" MODIFIED="1785880164341" TEXT="indicate memory-barrier">
<node CREATED="1785880254526" HGAP="258" ID="ID_1225058666" MODIFIED="1785880282855" TEXT="show the two BufferDispatcher-Callbacks" VSHIFT="13"/>
</node>
<node CREATED="1785880171289" ID="ID_1108720868" MODIFIED="1785880175830" TEXT="dispatchFrame_()">
<node CREATED="1785880176864" HGAP="328" ID="ID_1397180000" MODIFIED="1785880211088" TEXT="show EglDisplay&lt;PIX,WIDTH,HEIGHT&gt;::displayFrame()" VSHIFT="54"/>
</node>
</node>
</node>
<node CREATED="1785882390272" ID="ID_1170512289" MODIFIED="1785882402415" TEXT="run a RAW-Video">
<node CREATED="1785882864616" ID="ID_1586819962" MODIFIED="1785882897473" TEXT="Demo-Code compilieren" VSHIFT="10"/>
<node CREATED="1785882843708" ID="ID_1344531437" MODIFIED="1785882912395" TEXT="HD-Zugriffszeiten zeigen"/>
<node CREATED="1784304949037" ID="ID_373290565" MODIFIED="1785882906616" TEXT="demovideo-1200.raw">
<arrowlink COLOR="#7df3c4" DESTINATION="ID_1648226456" ENDARROW="Default" ENDINCLINATION="-217;0;" ID="Arrow_ID_618400356" STARTARROW="None" STARTINCLINATION="-2269;256;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1784302618850" ID="ID_1541304976" MODIFIED="1785882716977" TEXT="Frame: 1200 x 675 &#x27fc; 2.3MiB/Frame in RGB888"/>
<node CREATED="1784303736468" ID="ID_921357649" MODIFIED="1785882766464">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
50fps &#10233; bitrate=972000.0kbits/s video:2373047KiB&#160;&#160;&#8793; <b><font color="#890707">2.3</font></b><font color="#890707">&#160; GiB</font>
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1785883473898" ID="ID_1822434518" MODIFIED="1785883480820" TEXT="Reflection: where we are...?">
<node BACKGROUND_COLOR="#c3c0dd" COLOR="#34245c" CREATED="1785883484417" ID="ID_1233434338" MODIFIED="1785884889237" TEXT="io_uring resolved the bottleneck in the Kernel">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1785883495942" ID="ID_751806456" MODIFIED="1785883539495" TEXT="it does not &#x2014; in itself &#x2014; &#x201e;resolve async&#x201c;">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1785883581639" ID="ID_1693723520" MODIFIED="1785885069705" TEXT="still need to dispatch the work &#x27f9; synchronisation issues"/>
<node CREATED="1785883555083" ID="ID_1264739380" MODIFIED="1785883566238" TEXT="the Linux Kernel is still inherently synchronous"/>
<node CREATED="1785884986511" ID="ID_514549682" MODIFIED="1785885016851" TEXT="the &#xbb;function colouration problem&#xab; remains to be solved / mitigated">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1785885022722" ID="ID_1162960165" MODIFIED="1785885170219" TEXT="Danger: have to rebuild a large part of the Kernel machinery">
<arrowlink COLOR="#d24b5c" DESTINATION="ID_1614921963" ENDARROW="Default" ENDINCLINATION="327;0;" ID="Arrow_ID_690010765" STARTARROW="None" STARTINCLINATION="130;29;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1785885039824" ID="ID_709775774" MODIFIED="1785885058707" TEXT="that made the previous AIO-attempts fail"/>
<node CREATED="1785885177293" ID="ID_295548794" MODIFIED="1785885186130" TEXT="io_uring has a better architecture">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1785885206897" ID="ID_1262823473" MODIFIED="1785885219625" TEXT="Irony: its interface is rather &#xbb;MIT style&#xab;"/>
</node>
</node>
<node CREATED="1785883615491" ID="ID_1939965989" MODIFIED="1785883747574">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
the introduction of io_uring was a <i>security nightmare</i>
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#fd43b9" DESTINATION="ID_1761641831" ENDARROW="Default" ENDINCLINATION="-889;102;" ID="Arrow_ID_733801359" STARTARROW="None" STARTINCLINATION="-710;35;"/>
<node CREATED="1785461304909" ID="ID_1410947805" MODIFIED="1785884911853" TEXT="&quot;we can&apos;t filter out syscalls we never make....&quot;"/>
<node CREATED="1785883858415" ID="ID_1547155531" MODIFIED="1785883912450" TEXT="au&#xdf;erdem: neues zustandsbehaftetes und komplexes Subsystem">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
eine Fundgrube f&#252;r Logikfehler, double-free und use-after-free
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1785883813724" ID="ID_931901334" MODIFIED="1785883833433" TEXT="Google hat es f&#xfc;r eignen Code deaktiviert (&#x27f6; Android)"/>
<node CREATED="1785461411934" ID="ID_1826454557" MODIFIED="1785883930006" TEXT="Docker deaktiviert es im Default seccomp profile">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1785885085762" ID="ID_1614921963" MODIFIED="1785885170219" TEXT="&#x27f9; cBPF for security / call filtering in the Ring">
<linktarget COLOR="#d24b5c" DESTINATION="ID_1614921963" ENDARROW="Default" ENDINCLINATION="327;0;" ID="Arrow_ID_690010765" SOURCE="ID_1162960165" STARTARROW="None" STARTINCLINATION="130;29;"/>
</node>
</node>
<node CREATED="1785883956116" ID="ID_1397444798" MODIFIED="1785883974580" TEXT="wie geschaffen f&#xfc;r high-performance-Computing">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1785883976317" ID="ID_1541401046" MODIFIED="1785885271445" TEXT="Continuations">
<arrowlink COLOR="#fef6be" DESTINATION="ID_1430769471" ENDARROW="Default" ENDINCLINATION="-773;77;" ID="Arrow_ID_1412764443" STARTARROW="None" STARTINCLINATION="-1223;237;"/>
<node CREATED="1785883993967" ID="ID_568608207" MODIFIED="1785884002513" TEXT="&#xbb;Channel-Programs reloaded&#xab;"/>
<node CREATED="1785884006645" ID="ID_505951782" MODIFIED="1785884016584" TEXT="eBPF im URing">
<node CREATED="1785884019498" ID="ID_750251084" MODIFIED="1785884043780" TEXT="die event-loop programmiert sich selbst"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#580f69" CREATED="1785884219144" ID="ID_276372251" MODIFIED="1785884235355" TEXT="Lumiera">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1785884255187" ID="ID_1080036337" MODIFIED="1785884259478" TEXT="for Video....">
<node CREATED="1785884261651" ID="ID_1085318634" MODIFIED="1785884272899" TEXT="it is not the syscall cost and batching that matters"/>
<node CREATED="1785884273529" ID="ID_516182631" MODIFIED="1785884290564" TEXT="it makes IO schedulable"/>
</node>
<node COLOR="#5b280f" CREATED="1785884308892" ID="ID_699168970" MODIFIED="1785884323496" TEXT="Proactor is not the proper solution">
<icon BUILTIN="stop-sign"/>
<node CREATED="1785884333488" ID="ID_284141560" MODIFIED="1785884353120" TEXT="we have significant compute-Load chained behind each IO"/>
<node CREATED="1785884354382" ID="ID_1494672465" MODIFIED="1785884394563" TEXT="need a secondary dispatch &#x27f9; resource coordination is problematic"/>
</node>
<node CREATED="1785884399745" ID="ID_1522905322" MODIFIED="1785884454421" TEXT="Lumiera takes the &#xbb;pull&#xab; principle to the extreme">
<icon BUILTIN="forward"/>
<node CREATED="1785884471837" ID="ID_271409928" MODIFIED="1785884479534" TEXT="we dont even use &#xbb;work stealing&#xab;"/>
<node CREATED="1785884480076" ID="ID_1986807250" MODIFIED="1785884489990" TEXT="rather, we have active workers and a passive Scheduler-Service"/>
<node CREATED="1785884491523" ID="ID_96138270" MODIFIED="1785884514211" TEXT="we use probabilistic capacity distribution (&#x27f9; avoid contention)"/>
<node CREATED="1785884524278" ID="ID_1108773815" MODIFIED="1785884530715" TEXT="io_uring fits in perfectly">
<node CREATED="1785884538700" ID="ID_812132615" MODIFIED="1785884624675" TEXT="a free worker...."/>
<node CREATED="1785884541992" ID="ID_1914638744" MODIFIED="1785884641107" TEXT="pulls the Scheduler to find the next task"/>
<node CREATED="1785884551251" ID="ID_1136680561" MODIFIED="1785884563494" TEXT="which includes looking into the URing"/>
<node CREATED="1785884564497" ID="ID_665772159" MODIFIED="1785884585026" TEXT="it then drops the Scheduler-Lock and follows the continuation"/>
</node>
<node CREATED="1785884677273" ID="ID_139999848" MODIFIED="1785884706249" TEXT="Plan: build Capacity-Management to control the Schedule"/>
<node CREATED="1785884762521" ID="ID_984815476" MODIFIED="1785884790866" TEXT="io_uring can handle a massive SSD-backed Frame Cache"/>
</node>
</node>
</node>
</node>
<node CREATED="1753974736690" ID="ID_1278736313" MODIFIED="1753974741987" TEXT="Outline / bullet points"/>
<node CREATED="1753974715683" ID="ID_921567772" MODIFIED="1753974718853" TEXT="Schemabilder"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1753975388927" ID="ID_844470552" MODIFIED="1784566211237" TEXT="Code-Beispiele">
<icon BUILTIN="help"/>
<node CREATED="1753974715683" ID="ID_921567772" MODIFIED="1753974718853" TEXT="Schemabilder">
<node CREATED="1785876446945" ID="ID_1499863943" MODIFIED="1785876456471" TEXT="Diagramm &quot;Time Scales&quot;"/>
<node CREATED="1785876459083" ID="ID_972192378" MODIFIED="1785877188037" TEXT="Diagramm &quot;State-Ring&quot;">
<linktarget COLOR="#3f50bf" DESTINATION="ID_972192378" ENDARROW="Default" ENDINCLINATION="116;-8;" ID="Arrow_ID_81571613" SOURCE="ID_1318957188" STARTARROW="None" STARTINCLINATION="-221;45;"/>
</node>
<node CREATED="1785880050158" ID="ID_336488542" MODIFIED="1785880064221" TEXT="Diagramm &quot;State-Engine&quot;">
<linktarget COLOR="#587cdf" DESTINATION="ID_336488542" ENDARROW="Default" ENDINCLINATION="415;41;" ID="Arrow_ID_725606969" SOURCE="ID_1784510664" STARTARROW="None" STARTINCLINATION="18;106;"/>
</node>
<node CREATED="1785877094220" ID="ID_1651644833" MODIFIED="1785877434241" TEXT="Diagramm &quot;Application setup&quot;"/>
</node>
<node CREATED="1753975388927" ID="ID_844470552" MODIFIED="1785876443685" TEXT="Code-Beispiele">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785873575052" ID="ID_1698936757" MODIFIED="1785884741878" TEXT="Producer-Consumer">
<linktarget COLOR="#53387c" DESTINATION="ID_1698936757" ENDARROW="Default" ENDINCLINATION="-204;-288;" ID="Arrow_ID_1007251265" SOURCE="ID_564793830" STARTARROW="None" STARTINCLINATION="-119;11;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1753974744448" ID="ID_233051154" MODIFIED="1753974749608" TEXT="Demo code"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1754271487261" ID="ID_1152628369" MODIFIED="1779389322292" TEXT="Inhalte aufbereiten">
<icon BUILTIN="flag-pink"/>
<node CREATED="1754271622745" ID="ID_1711166940" MODIFIED="1754271624175" TEXT="Texte"/>
<node CREATED="1754271622745" ID="ID_1711166940" MODIFIED="1754271624175" TEXT="Texte">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1785877458584" ID="ID_71299743" MODIFIED="1785877509550" TEXT="Dokumentation">
<icon BUILTIN="bell"/>
<node CREATED="1785877462095" ID="ID_1358012782" MODIFIED="1785877463998" TEXT="Einleitung"/>
<node CREATED="1785877465202" ID="ID_1869125696" MODIFIED="1785877467765" TEXT="Resources"/>
<node CREATED="1785877469017" ID="ID_1235467057" MODIFIED="1785877471197" TEXT="Erl&#xe4;uterungen"/>
<node CREATED="1785877471672" ID="ID_1101748658" MODIFIED="1785877474628" TEXT="Time-Scales"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785877497102" ID="ID_1538801789" MODIFIED="1785877511773" TEXT="Slides / Bullets formulieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1754271624646" ID="ID_52826289" MODIFIED="1754271626857" TEXT="Grafik">
<node CREATED="1785817833206" ID="ID_327257827" MODIFIED="1785817840819" TEXT="Diagramm &quot;Time Scales&quot;">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1785817833206" ID="ID_327257827" MODIFIED="1785877136327" TEXT="Diagramm &quot;Time Scales&quot;">
<icon BUILTIN="pencil"/>
<node CREATED="1785817842583" ID="ID_306380330" MODIFIED="1785817861311" TEXT="Idee: m&#xf6;chte die gewaltigen Zeitspannen visualisieren">
<icon BUILTIN="idea"/>
<node CREATED="1785817863252" ID="ID_299103430" MODIFIED="1785817884168" TEXT="m&#xf6;chte klarmachen, warum wir es mit &#xbb;Stockwerken&#xab; zu tun haben"/>
@ -455,6 +782,27 @@
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1785877291601" ID="ID_517600933" MODIFIED="1785877301089" TEXT="Diagramm &quot;State-Ring&quot;">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1785877302464" ID="ID_1725774104" MODIFIED="1785880120631" STYLE="fork" TEXT="Ein Schema ist nebenbei im Chat mit Claude &quot;angefallen&quot;">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<arrowlink COLOR="#339dbd" DESTINATION="ID_1806019726" ENDARROW="Default" ENDINCLINATION="121;0;" ID="Arrow_ID_938057656" STARTARROW="None" STARTINCLINATION="-30;41;"/>
<icon BUILTIN="wizard"/>
<node CREATED="1785877324133" ID="ID_578045214" MODIFIED="1785877342463" TEXT="hatte ihn das in Graphviz definieren und nach SVG rendern lassen">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1785877343638" ID="ID_801220717" MODIFIED="1785877347896" TEXT="brauchbar?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785880050158" ID="ID_1806019726" MODIFIED="1785880116038" TEXT="Diagramm &quot;State-Engine&quot;">
<linktarget COLOR="#339dbd" DESTINATION="ID_1806019726" ENDARROW="Default" ENDINCLINATION="121;0;" ID="Arrow_ID_938057656" SOURCE="ID_1725774104" STARTARROW="None" STARTINCLINATION="-30;41;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785877094220" ID="ID_404598432" MODIFIED="1785877438593" TEXT="Diagramm &quot;Application setup&quot;">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1754874947759" ID="ID_920995429" MODIFIED="1754874949169" TEXT="Code">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1754875923722" FOLDED="true" ID="ID_1802306052" MODIFIED="1779389626734" TEXT="Hau-zu">
@ -475,6 +823,15 @@
<icon BUILTIN="full-5"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785876360880" ID="ID_1803475906" MODIFIED="1785876380352" TEXT="Animation: Producer &#x27f6; Consumer | Fences">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785877864405" ID="ID_400522389" MODIFIED="1785877870203" TEXT="Animation: State-Ring">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785877113392" ID="ID_23421813" MODIFIED="1785877124875" TEXT="Animation: Application-Setup">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1527792581594" ID="ID_790723996" MODIFIED="1784563161118" TEXT="Einteilung">
@ -1913,7 +2270,8 @@
</node>
</node>
</node>
<node CREATED="1785461190277" ID="ID_1761641831" MODIFIED="1785461195283" TEXT="das Sicherheits-Problem">
<node CREATED="1785461190277" ID="ID_1761641831" MODIFIED="1785883741927" TEXT="das Sicherheits-Problem">
<linktarget COLOR="#fd43b9" DESTINATION="ID_1761641831" ENDARROW="Default" ENDINCLINATION="-889;102;" ID="Arrow_ID_733801359" SOURCE="ID_1939965989" STARTARROW="None" STARTINCLINATION="-710;35;"/>
<node CREATED="1785461196832" ID="ID_1824131652" MODIFIED="1785461203022" TEXT="hat zwei Aspekte">
<node CREATED="1785461203739" ID="ID_1580053924" MODIFIED="1785461216640" TEXT="es ist ein neues sehr komplexes und zustandsbehaftetes System">
<node CREATED="1785461315436" ID="ID_1482123737" MODIFIED="1785461334765" TEXT="das ist eine Fundgrube f&#xfc;r double-free und use-after-free"/>
@ -1949,7 +2307,8 @@
<node CREATED="1785461411934" ID="ID_1121458948" MODIFIED="1785466338044" TEXT="Docker deaktiviert es im Default seccomp profile"/>
<node CREATED="1785461426652" ID="ID_66609589" MODIFIED="1785461439375" TEXT="ABER: kein Cloud-Provider deaktiviert es pauschal / per se"/>
</node>
<node CREATED="1785466394820" ID="ID_836481520" MODIFIED="1785466401035" TEXT="aktueller Stand (2026)">
<node CREATED="1785466394820" ID="ID_836481520" MODIFIED="1785883797488" TEXT="aktueller Stand (2026)">
<arrowlink COLOR="#f4f1b2" DESTINATION="ID_1807082301" ENDARROW="Default" ENDINCLINATION="-429;-32;" ID="Arrow_ID_1681597248" STARTARROW="None" STARTINCLINATION="-102;204;"/>
<node CREATED="1785466404044" ID="ID_562222456" MODIFIED="1785466426860" TEXT="der Hauptautor (Axboe) entwickelt ein neues Sicherheitsframework"/>
<node CREATED="1785466427380" ID="ID_841041241" MODIFIED="1785466459628" TEXT="es beruht auf classic BPF (nicht eBPF)">
<richcontent TYPE="NOTE"><html>
@ -2073,10 +2432,12 @@
</node>
</node>
</node>
<node CREATED="1785805707014" ID="ID_1430769471" MODIFIED="1785805735016" TEXT="Channel Progams &#x27f6; IO-Logik">
<node CREATED="1785805707014" ID="ID_1430769471" MODIFIED="1785885271445" TEXT="Channel Progams &#x27f6; IO-Logik">
<linktarget COLOR="#fef6be" DESTINATION="ID_1430769471" ENDARROW="Default" ENDINCLINATION="-773;77;" ID="Arrow_ID_1412764443" SOURCE="ID_1541401046" STARTARROW="None" STARTINCLINATION="-1223;237;"/>
<node CREATED="1785805739128" ID="ID_307384766" MODIFIED="1785805756035" TEXT="auf dem Mainframe laufen die Channel-Programs separat vom Kern"/>
<node CREATED="1785805760204" ID="ID_166287783" MODIFIED="1785805767042" TEXT="io_uring und BPF">
<node BACKGROUND_COLOR="#f2e1ba" COLOR="#2f2577" CREATED="1785805768996" ID="ID_1807082301" MODIFIED="1785805802984" TEXT="das sind Neuerungen in 2026">
<node BACKGROUND_COLOR="#f2e1ba" COLOR="#2f2577" CREATED="1785805768996" ID="ID_1807082301" MODIFIED="1785805768996" TEXT="das sind Neuerungen in 2026">
<linktarget COLOR="#f4f1b2" DESTINATION="ID_1807082301" ENDARROW="Default" ENDINCLINATION="-429;-32;" ID="Arrow_ID_1681597248" SOURCE="ID_836481520" STARTARROW="None" STARTINCLINATION="-102;204;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1785805808990" ID="ID_1350573167" MODIFIED="1785805815881" TEXT="zwei verschiedene Entwicklungen">
@ -3993,7 +4354,7 @@
<node CREATED="1784301781426" ID="ID_167806190" MODIFIED="1784301793830" TEXT="extrahieren: 1:18 - 1:38">
<node CREATED="1784301815838" ID="ID_919961155" MODIFIED="1784302154962" TEXT="20sec &#xe0; 50fps &#x2259; 1000 Frames"/>
<node CREATED="1784302490121" ID="ID_278799818" MODIFIED="1784302496324" TEXT="ffmpeg -r 50 -i ~/Platz/Lumix/vidzzz/00444.mts -ss 0:1:18 -vframes 1000 -vcodec copy -an test.mkv"/>
<node CREATED="1784302618850" ID="ID_72123433" MODIFIED="1784302721968" TEXT="Originalgr&#xf6;&#xdf;e: 1920 x 1080 &#x27fc; 675 RAW in RGB24"/>
<node CREATED="1784302618850" ID="ID_72123433" MODIFIED="1785882623797" TEXT="Originalgr&#xf6;&#xdf;e: 1920 x 1080 &#x27fc; 5.9 MiB/frame RAW in RGB24"/>
<node CREATED="1784302728769" ID="ID_46873234" MODIFIED="1784303613645" TEXT="ffmpeg -r 50 -i ~/Platz/Lumix/vidzzz/00444.mts -ss 0:1:18 -vframes 1000 -an -vf &quot;scale=1200:675,format=rgb24&quot; -f rawvideo -pix_fmt rgb24 demovideo-1200.raw"/>
<node CREATED="1784303736468" ID="ID_1648226456" MODIFIED="1784306990152">
<richcontent TYPE="NODE"><html>
@ -4005,6 +4366,7 @@
</body>
</html></richcontent>
<linktarget COLOR="#5bfe3a" DESTINATION="ID_1648226456" ENDARROW="Default" ENDINCLINATION="-269;14;" ID="Arrow_ID_1321145390" SOURCE="ID_1577242171" STARTARROW="None" STARTINCLINATION="238;17;"/>
<linktarget COLOR="#7df3c4" DESTINATION="ID_1648226456" ENDARROW="Default" ENDINCLINATION="-217;0;" ID="Arrow_ID_618400356" SOURCE="ID_373290565" STARTARROW="None" STARTINCLINATION="-2269;256;"/>
</node>
<node CREATED="1784304034683" ID="ID_428549034" MODIFIED="1784304887052" TEXT="anzeigen mit...">
<icon BUILTIN="idea"/>
@ -4277,6 +4639,12 @@
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1785879338699" ID="ID_1348254697" MODIFIED="1785879419721" TEXT="Bugfix: addNextReadSubmissions() braucht NULL-Check">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1785879362992" ID="ID_854540412" LINK="https://man7.org/linux/man-pages/man3/io_uring_get_sqe.3.html" MODIFIED="1785879417798" TEXT="io_uring_get_sqe (&amp;uRing) k&#xf6;nnte scheitern">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node CREATED="1784423169337" ID="ID_1181187272" MODIFIED="1784423187567" TEXT="Beschreibung in ProcSpec.txt">
<icon BUILTIN="edit"/>
<node CREATED="1784423189039" ID="ID_221455189" MODIFIED="1784423195187" TEXT="entwerfe eine Gliederung"/>