summary of recherche regarding history of io_uring

This commit is contained in:
Fischlurch 2026-07-31 04:55:22 +02:00
parent 3e67eeac5d
commit 4c1ece977d

View file

@ -1007,8 +1007,7 @@
Ich verfüge über vertieftes Wissen und einiges an Erfahrung in diesen Bereichen, sollte aber meine Kenntnisse überprüfen und festigen, um auch auf Fragen eingehen zu können. Im Besonderen zu Kernel-nahen Themen weiß ich ehr wenig.
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1784562295882" ID="ID_1400086239" MODIFIED="1785373434667" TEXT="Cache/Pipeline">
<arrowlink DESTINATION="ID_1358858974" ENDARROW="Default" ENDINCLINATION="486;-286;" ID="Arrow_ID_713987634" STARTARROW="None" STARTINCLINATION="1350;0;"/>
@ -1372,8 +1371,7 @@
Windows has <code http-equiv="content-type" content="text/html; charset=utf-8" class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"><font face="Monospaced" color="#733a3a">WaitOnAddress</font></code><font face="Monospaced" color="#733a3a">/<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">WakeByAddressSingle</code>/<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">WakeByAddressAll</code></font>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1785373716197" ID="ID_1245015075" MODIFIED="1785373788200">
<richcontent TYPE="NODE"><html>
@ -1385,8 +1383,7 @@
FreeBSD has <code http-equiv="content-type" content="text/html; charset=utf-8" class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"><font face="Monospaced" color="#7a5454">_umtx_op</font></code>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
</node>
@ -1409,8 +1406,7 @@
die in der wait-queue f&#252;r adr. stehen
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
</node>
@ -1424,8 +1420,7 @@
beachte: der <i>uncontended-case</i>&#160;bleibt <b>komplett im userspace</b>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<node CREATED="1785373966875" ID="ID_1767743436" MODIFIED="1785373975865" TEXT="d.h. der ist so schnell wie eine atomic-barrier"/>
<node CREATED="1785373976469" ID="ID_155107098" MODIFIED="1785373986417" TEXT="nur wenn wir eh blocken, machen wir einen syscall"/>
</node>
@ -1483,8 +1478,7 @@
man kann nur aufrufen, was der Kernel an Einsprungspunkten bietet; eigentlicher Kernel-Code ist nicht vom Userpace zug&#228;nglich
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
</node>
@ -1499,8 +1493,7 @@
...um Ausspionieren des Kernel via speculative execution zu verhindern
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1785377263697" ID="ID_1250788650" MODIFIED="1785377268936" TEXT="Stichwort: KPTI page-table swap">
<icon BUILTIN="help"/>
</node>
@ -1551,6 +1544,151 @@
</node>
</node>
</node>
<node CREATED="1785460636982" ID="ID_1471899646" MODIFIED="1785460646186" TEXT="Historie und Kernel-Architektur">
<node CREATED="1785460654246" ID="ID_1541397265" MODIFIED="1785460672884" TEXT="Linux beruht immer noch im Kern auf einem synchronen Modell"/>
<node CREATED="1785460673714" ID="ID_1722879183" MODIFIED="1785460694557" TEXT="Windows(NT) und BSD haben schon l&#xe4;nger eine essentiell asynchrone Struktur"/>
<node CREATED="1785460704814" ID="ID_431321839" MODIFIED="1785460714572" TEXT="warum hat Linux so lange gebraucht?">
<node CREATED="1785460715693" ID="ID_1245470107" MODIFIED="1785460751768" TEXT="man hat nicht &#xbb;geschlafen&#xab;">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
man hat die Herausforderung durch die SSDs zeitnah erkannt und mit tiefgreifenden internen Umbauten begonnen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1785460755305" ID="ID_1752698985" MODIFIED="1785460765988" TEXT="aber man hat mehrfach einen Ansatz versucht, der gescheitert ist">
<node CREATED="1785460770789" ID="ID_971932172" MODIFIED="1785460801851" TEXT="man hat versucht, &#x201e;Syscalls asynchron zu machen&#x201c;"/>
<node CREATED="1785460833117" ID="ID_335280595" MODIFIED="1785460858629" TEXT="das scheitert daran, da&#xdf; man dann sukzessive viele Kernel-Strukturen aufdoppeln m&#xfc;&#xdf;te"/>
<node CREATED="1785460866904" ID="ID_1886883732" MODIFIED="1785460932865" TEXT="oder (wie bei libaio) da&#xdf; jedes einzelne Subsystem eine &quot;non-blocking&quot;-Variante bieten m&#xfc;&#xdf;te">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
...was nicht realisierbar ist, und deshalb ist der Ansatz von libaio stecken geblieben und bleibt auf einige Randf&#228;lle begrenzt (und noch schlimmer, kann jederzeit auf blocking waits zur&#252;ckfallen)
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1785460802793" ID="ID_1282819861" MODIFIED="1785460820914" TEXT="IO_Uring dagegen umgeht das Thema &#xbb;Syscalls&#xab;"/>
</node>
<node CREATED="1785460957172" ID="ID_1847144170" MODIFIED="1785460964913" TEXT="aber: die Unix-Kultur war schon ein Problem">
<node CREATED="1785460973671" ID="ID_334979690" MODIFIED="1785460990352" TEXT="das hat sich erst ge&#xe4;ndert, als das Problem brennend wurde"/>
<node CREATED="1785460990807" ID="ID_1675938710" MODIFIED="1785461010393" TEXT="d.h. als SSDs daf&#xfc;r gesorgt haben, da&#xdf; Linux zum Bottleneck wird"/>
</node>
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1785461018940" ID="ID_1539303083" MODIFIED="1785461038542" STYLE="fork" TEXT="Claude f&#xfc;hrt BSD* als einen interessanten Zwischenfall auf">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<icon BUILTIN="wizard"/>
<node CREATED="1785461042173" ID="ID_667957116" MODIFIED="1785461061694" TEXT="BSD hat seit 2000 ein asynchrones Notifikations-System (kqueue)"/>
<node CREATED="1785461064042" ID="ID_1779599299" MODIFIED="1785461071883" TEXT="deshalb kann es echtes AIO bieten"/>
<node CREATED="1785461073404" ID="ID_877504311" MODIFIED="1785461093981" TEXT="das ist und bleibt aber fragmentiert (&#x27f6; die ganze Unix-Legacy)"/>
<node CREATED="1785461094856" ID="ID_521796255" MODIFIED="1785461114055" TEXT="deshalb hatte BSD bisher noch keine brennende Notwendigkeit, etwas zu tun"/>
<node CREATED="1785461139724" ID="ID_997488870" MODIFIED="1785461163800">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
FreeBSD: <b>linuxulator</b>&#160;wird erzwingen, da&#223; man io_uring einfach nachbaut
</p>
</body>
</html>
</richcontent>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1785461164784" ID="ID_292095460" MODIFIED="1785461169884" TEXT="TODO: linuxlator">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node CREATED="1785461190277" ID="ID_1761641831" MODIFIED="1785461195283" TEXT="das Sicherheits-Problem">
<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"/>
<node CREATED="1785461335273" ID="ID_798212307" MODIFIED="1785461354799" TEXT="viele Attacken gehen diesen Weg"/>
<node CREATED="1785461355415" ID="ID_44782768" MODIFIED="1785461363465" TEXT="insofern ein Problem fehlender Reife"/>
</node>
<node CREATED="1785461219863" ID="ID_537546788" MODIFIED="1785461231348" TEXT="der Paradigmenwechsel: es verwendet keinen Syscall">
<node CREATED="1785461254333" ID="ID_334883335" MODIFIED="1785461261299">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
Stichwort: <b>seccomp</b>
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1785461262768" ID="ID_1205947275" MODIFIED="1785461273541" TEXT="beruht auf &#xdc;berwachen / filtern gef&#xe4;hrlicher syscalls"/>
<node CREATED="1785461304909" ID="ID_1670791378" MODIFIED="1785461307313" TEXT="&quot;we can&apos;t filter out syscalls we never make.&quot;"/>
</node>
</node>
<node CREATED="1785461370936" ID="ID_1804212027" MODIFIED="1785461389925" TEXT="was machen die Cloud-Provider?">
<node CREATED="1785461391129" ID="ID_1602564687" MODIFIED="1785461409560" TEXT="Google deaktiviert es f&#xfc;r seinen eigenen Code">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
u.a. auf Android
</p>
</body>
</html>
</richcontent>
</node>
<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="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>
<head>
</head>
<body>
<p>
Grund ist: eBPF erfordert h&#246;here Privilegien
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1785466487794" ID="ID_13728980" MODIFIED="1785466521731" STYLE="fork" TEXT="Claude findet das bemerkenswert">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<h3 http-equiv="content-type" content="text/html; charset=utf-8" dir="ltr" class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">
Where it stands now &#8212; and a lovely structural irony
</h3>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">
As of January 2026, Axboe is actively fixing this: a rapidly evolving patch series adds a restriction mechanism to io_uring itself, since io_uring's operations are analogous to system calls and one might well want to restrict them the same way. Notably, it uses classic BPF rather than eBPF &#8212; because cBPF can be used by unprivileged processes while eBPF requires CAP_BPF, and unprivileged accessibility matters for the container-sandboxing use case; Axboe acknowledged this costs usability, since filters must now be written in cBPF bytecode.
</p>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">
And here's the irony I'd actually enjoy putting in front of an audience: <strong>io_uring is now reinventing seccomp inside itself.</strong>&#160;That rhymes precisely with why fibrils were rejected in 2007 &#8212; Moln&#225;r's objection that a parallel simplified scheduler would inevitably grow into a copy of the real scheduler. Same law, different subsystem: <strong>create a parallel mechanism, and you eventually have to regrow every feature the original had.</strong>&#160; io_uring escaped the syscall interface and is now rebuilding the syscall interface's security machinery from scratch. That's a genuinely good closing thought for a talk about paradigm shifts.
</p>
</body>
</html>
</richcontent>
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<icon BUILTIN="wizard"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519001955679" ID="ID_65625223" MODIFIED="1779386731937" TEXT="Demo-Inhalte">
<icon BUILTIN="flag-yellow"/>