summary of recherche regarding history of io_uring
This commit is contained in:
parent
3e67eeac5d
commit
4c1ece977d
1 changed files with 152 additions and 14 deletions
|
|
@ -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ür adr. stehen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -1424,8 +1420,7 @@
|
|||
beachte: der <i>uncontended-case</i> 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ä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ä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 »geschlafen«">
|
||||
<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, „Syscalls asynchron zu machen“"/>
|
||||
<node CREATED="1785460833117" ID="ID_335280595" MODIFIED="1785460858629" TEXT="das scheitert daran, daß man dann sukzessive viele Kernel-Strukturen aufdoppeln müßte"/>
|
||||
<node CREATED="1785460866904" ID="ID_1886883732" MODIFIED="1785460932865" TEXT="oder (wie bei libaio) daß jedes einzelne Subsystem eine "non-blocking"-Variante bieten müß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älle begrenzt (und noch schlimmer, kann jederzeit auf blocking waits zurückfallen)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1785460802793" ID="ID_1282819861" MODIFIED="1785460820914" TEXT="IO_Uring dagegen umgeht das Thema »Syscalls«"/>
|
||||
</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ändert, als das Problem brennend wurde"/>
|
||||
<node CREATED="1785460990807" ID="ID_1675938710" MODIFIED="1785461010393" TEXT="d.h. als SSDs dafür gesorgt haben, daß Linux zum Bottleneck wird"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1785461018940" ID="ID_1539303083" MODIFIED="1785461038542" STYLE="fork" TEXT="Claude fü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 (⟶ 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> wird erzwingen, daß 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ü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 Überwachen / filtern gefährlicher syscalls"/>
|
||||
<node CREATED="1785461304909" ID="ID_1670791378" MODIFIED="1785461307313" TEXT=""we can't filter out syscalls we never make.""/>
|
||||
</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ü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ö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 — 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 — 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> That rhymes precisely with why fibrils were rejected in 2007 — Molná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>  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"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue