summary of recherche regarding synchronisation and performance aspects
This commit is contained in:
parent
506cca77c9
commit
8fd1555955
1 changed files with 404 additions and 16 deletions
|
|
@ -57,8 +57,7 @@
|
||||||
hab dafür zwar keinen Beleg (jenseits von ein paar Videos), aber ich nehme hier den Namen »Alexandrescu« in Gebrauch, um etwas — für sich selbst plausibles — auch mit Autorität sagen zu können
|
hab dafür zwar keinen Beleg (jenseits von ein paar Videos), aber ich nehme hier den Namen »Alexandrescu« in Gebrauch, um etwas — für sich selbst plausibles — auch mit Autorität sagen zu können
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<node CREATED="1784566823896" ID="ID_1457616626" MODIFIED="1784566828803" TEXT="Unterscheidung in...">
|
<node CREATED="1784566823896" ID="ID_1457616626" MODIFIED="1784566828803" TEXT="Unterscheidung in...">
|
||||||
<node CREATED="1784566829625" ID="ID_283682996" MODIFIED="1784566831091" TEXT="Skills"/>
|
<node CREATED="1784566829625" ID="ID_283682996" MODIFIED="1784566831091" TEXT="Skills"/>
|
||||||
<node CREATED="1784566831655" ID="ID_1320868791" MODIFIED="1784566834042" TEXT="Judgement"/>
|
<node CREATED="1784566831655" ID="ID_1320868791" MODIFIED="1784566834042" TEXT="Judgement"/>
|
||||||
|
|
@ -357,8 +356,7 @@
|
||||||
Ich folge dem gleichen Ansatz, gehe aber mit der Linux-Kernelentwicklung mit...
|
Ich folge dem gleichen Ansatz, gehe aber mit der Linux-Kernelentwicklung mit...
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1753133430386" ID="ID_1664746007" MODIFIED="1753133453392" TEXT="Eine Know-how-Sektion auf der Lumiera-Website aufbauen"/>
|
<node CREATED="1753133430386" ID="ID_1664746007" MODIFIED="1753133453392" TEXT="Eine Know-how-Sektion auf der Lumiera-Website aufbauen"/>
|
||||||
<node CREATED="1784566437312" ID="ID_695370992" MODIFIED="1784566442736" TEXT="nebenbei: Umgang mit KI"/>
|
<node CREATED="1784566437312" ID="ID_695370992" MODIFIED="1784566442736" TEXT="nebenbei: Umgang mit KI"/>
|
||||||
|
|
@ -395,8 +393,7 @@
|
||||||
Damit meine ich, ob der Ansatz mit symbolisch repräsentierten externen Fähigkeiten überhaupt aufgeht, und ob es tatsächlich gelingt, ein Werkzeug-Paradigma auf der Basis von Placements zu schaffen. Und, last but not least, ob ich Leute finden, die mich unterstützen und sich diese Vision aneignen
|
Damit meine ich, ob der Ansatz mit symbolisch repräsentierten externen Fähigkeiten überhaupt aufgeht, und ob es tatsächlich gelingt, ein Werkzeug-Paradigma auf der Basis von Placements zu schaffen. Und, last but not least, ob ich Leute finden, die mich unterstützen und sich diese Vision aneignen
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -414,8 +411,7 @@
|
||||||
ich habe zur Vorbereitung meine anfänglichen Ideen in einer Konversation mit Claude validiert....
|
ich habe zur Vorbereitung meine anfänglichen Ideen in einer Konversation mit Claude validiert....
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<arrowlink COLOR="#708a96" DESTINATION="ID_1393441883" ENDARROW="Default" ENDINCLINATION="-431;-21;" ID="Arrow_ID_986847518" STARTARROW="None" STARTINCLINATION="-642;52;"/>
|
<arrowlink COLOR="#708a96" DESTINATION="ID_1393441883" ENDARROW="Default" ENDINCLINATION="-431;-21;" ID="Arrow_ID_986847518" STARTARROW="None" STARTINCLINATION="-642;52;"/>
|
||||||
<node CREATED="1784562590322" ID="ID_1398084830" MODIFIED="1784562600328" TEXT="demnach liegt das eigentliche Thema beim Compositor"/>
|
<node CREATED="1784562590322" ID="ID_1398084830" MODIFIED="1784562600328" TEXT="demnach liegt das eigentliche Thema beim Compositor"/>
|
||||||
<node CREATED="1784562603832" ID="ID_648874975" MODIFIED="1784562621419" TEXT="man hat die Wahl, ob das buffer-flip blockend / nichtblockend ist"/>
|
<node CREATED="1784562603832" ID="ID_648874975" MODIFIED="1784562621419" TEXT="man hat die Wahl, ob das buffer-flip blockend / nichtblockend ist"/>
|
||||||
|
|
@ -962,13 +958,407 @@
|
||||||
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.
|
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>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node CREATED="1784562287819" ID="ID_1068288733" MODIFIED="1784562292010" TEXT="Kontext-Switches"/>
|
<node CREATED="1784562287819" ID="ID_1068288733" MODIFIED="1784562292010" TEXT="Kontext-Switches"/>
|
||||||
<node CREATED="1784562292542" ID="ID_1603052289" MODIFIED="1784562294752" TEXT="Kernel-Calls"/>
|
<node CREATED="1784562292542" ID="ID_1603052289" MODIFIED="1784562294752" TEXT="Kernel-Calls"/>
|
||||||
<node CREATED="1784562295882" ID="ID_1400086239" MODIFIED="1784562305846" TEXT="Cache/Pipeline"/>
|
<node CREATED="1784562295882" ID="ID_1400086239" MODIFIED="1784562305846" TEXT="Cache/Pipeline"/>
|
||||||
<node CREATED="1784562308304" ID="ID_1632264826" MODIFIED="1784562316059" TEXT="Locking/Barriers"/>
|
<node CREATED="1784562308304" ID="ID_1632264826" MODIFIED="1784562316059" TEXT="Locking/Barriers">
|
||||||
|
<node CREATED="1784597020131" ID="ID_246135215" MODIFIED="1784597022117" TEXT="Begriffe">
|
||||||
|
<node CREATED="1784597025507" ID="ID_1545286772" MODIFIED="1784597032928" TEXT="Barrier vs. Memory Barrier vs Fence">
|
||||||
|
<node CREATED="1784599247555" ID="ID_1445290198" MODIFIED="1784599258517" TEXT="Fence und Barrier ist im allgemeinen synonym"/>
|
||||||
|
<node CREATED="1784599259921" ID="ID_592274590" MODIFIED="1784599269499" TEXT="kann auf verschiedenen Ebenen sitzen">
|
||||||
|
<node CREATED="1784599271052" ID="ID_1057609140" MODIFIED="1784599273771" TEXT="Hardware"/>
|
||||||
|
<node CREATED="1784599274465" ID="ID_1950423301" MODIFIED="1784599279400" TEXT="Compiler instruction reordering"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784599287789" ID="ID_756195091" MODIFIED="1784599304567" TEXT="machmal wird auch unterschieden zwischen synchronisation barrier und memory barrier"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784600731066" ID="ID_1114913802" MODIFIED="1784600735725" TEXT="Ursprung der Begriffe">
|
||||||
|
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1784903431103" ID="ID_1723854173" MODIFIED="1784905020234" STYLE="fork" TEXT="Claude sieht drei Ursprünge">
|
||||||
|
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
||||||
|
<icon BUILTIN="wizard"/>
|
||||||
|
<node CREATED="1784903450919" ID="ID_657261671" MODIFIED="1784905020228" TEXT="1. Hardware/ISA level">
|
||||||
|
<node CREATED="1784903498677" ID="ID_1041458587" LINK="https://de.wikipedia.org/wiki/Industry_Standard_Architecture" MODIFIED="1784905020228" TEXT="Industry Standard Architecture (ISA)"/>
|
||||||
|
<node CREATED="1784903604215" ID="ID_1994086427" MODIFIED="1784905020228" TEXT="ARM Manuals use the term "barrier""/>
|
||||||
|
<node CREATED="1784903616247" ID="ID_821194885" MODIFIED="1784905020228" TEXT="Intel/AMD uses "fences" and has fence-Instructions"/>
|
||||||
|
<node CREATED="1784903638786" ID="ID_499701429" MODIFIED="1784905020228" TEXT="Power hat sync-Instruktionen (werden im Handbuch als synchronisation barriers) beschrieben"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903476009" ID="ID_688864045" MODIFIED="1784905020228" TEXT="2. The four-way taxonomy">
|
||||||
|
<node CREATED="1784903693418" ID="ID_1045852271" MODIFIED="1784905020228" TEXT="stammt aus dem SPARC-Umfeld">
|
||||||
|
<node CREATED="1784903717049" ID="ID_1030627846" MODIFIED="1784905020228" TEXT="Sparc hat instruktionen mit einer Barrier-Bitmask"/>
|
||||||
|
<node CREATED="1784903736845" ID="ID_1408029632" MODIFIED="1784905020228" TEXT="LoadLoad, StoreStore, LoadStore, StoreLoad."/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903749579" ID="ID_114135406" MODIFIED="1784905020228" TEXT="aufgegriffen für Java-5">
|
||||||
|
<node CREATED="1784903760129" ID="ID_1989117356" MODIFIED="1784905020228" TEXT="das war die erste Mainstream-Sprache mit einem Memory-Model"/>
|
||||||
|
<node CREATED="1784903786078" ID="ID_1216686049" LINK="https://gee.cs.oswego.edu/dl/jmm/cookbook.html" MODIFIED="1784905020228">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Doug Lea's "<b>JSR-133 Cookbook for Compiler Writers</b>"
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903807771" ID="ID_904190729" MODIFIED="1784905020229" TEXT="Adve & Gharachorloo, "Shared Memory Consistency Models: A Tutorial" (1996)">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Gilt als Quelle für Doug Lea
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<node CREATED="1784904506202" ID="ID_511399832" LINK="https://www.cs.cmu.edu/afs/cs/academic/class/15740-f18/www/papers/ieeemicro96-adve-consistency.pdf" MODIFIED="1784905020229" TEXT="Scan einer Publikation 1996">
|
||||||
|
<node CREATED="1784904643053" ID="ID_1228994940" LINK="https://web.archive.org/web/20260121164830/https://www.cs.cmu.edu/afs/cs/academic/class/15740-f18/www/papers/ieeemicro96-adve-consistency.pdf" MODIFIED="1784905020229" TEXT="A"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784904536322" ID="ID_1489665899" LINK="Rice University ECE Technical Report 9512" MODIFIED="1784905020229" TEXT="PDF (kopierbar) • Rice University ECE Technical Report 9512 • September 1995">
|
||||||
|
<node CREATED="1784904767253" ID="ID_402738850" LINK="https://web.archive.org/web/20250125204437/https://www.cs.unc.edu/~prins/Classes/633/Readings/MemoryConsistencyModelsTutorial.pdf" MODIFIED="1784905020229" TEXT="A"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903888398" ID="ID_863086016" MODIFIED="1784905020229" TEXT="Common names">
|
||||||
|
<node CREATED="1784903888399" ID="ID_12480073" MODIFIED="1784905020229" TEXT="LoadLoad read-read fence">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
loads before must complete before loads after
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903888399" ID="ID_296525436" MODIFIED="1784905020229" TEXT="StoreStore write-write fence">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
stores before must become visible before stores after
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903888399" ID="ID_655305278" MODIFIED="1784905020229" TEXT="LoadStore read-write fence">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
loads before must complete before stores after
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903888400" ID="ID_636786121" MODIFIED="1784905020229" TEXT="StoreLoad write-read fence">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
stores before must become visible before loads after
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784903486937" ID="ID_689347133" MODIFIED="1784905020229" TEXT="3. C++ standard">
|
||||||
|
<node CREATED="1784905049390" ID="ID_1252554036" LINK="https://en.cppreference.com/cpp/atomic/memory_order" MODIFIED="1784905137346" TEXT="std::memory_order">
|
||||||
|
<node CREATED="1784905152608" ID="ID_566957216" MODIFIED="1784905162786" TEXT="ist eine hardware-unabhängige Abstraktion"/>
|
||||||
|
<node CREATED="1784905163542" ID="ID_295092916" MODIFIED="1784905176027" TEXT="wird vom Compiler für jede Plattform passend umgesetzt"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784905073150" ID="ID_524344347" LINK="https://en.cppreference.com/cpp/atomic/atomic_thread_fence" MODIFIED="1784905144999" TEXT="std::atomic_thread_fence"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1784904925694" ID="ID_1668338633" MODIFIED="1784905006895" STYLE="fork" TEXT="Fromulierungs-Vorschlag von Claude">
|
||||||
|
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
||||||
|
<icon BUILTIN="wizard"/>
|
||||||
|
<node CREATED="1784904935445" ID="ID_1352377610" MODIFIED="1784905006877">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
"barrier/fence is hardware vocabulary for a specific machine instruction; memory_order is C++'s hardware-independent vocabulary for a guarantee; the compiler's job is to translate one into the other — and 'fence' in the standard specifically means the standalone
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<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]">atomic_thread_fence</code>, not a synonym for <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]">memory_order</code>."
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784908320566" ID="ID_1732195522" MODIFIED="1784908327105" TEXT="Reactor / Proactor">
|
||||||
|
<node CREATED="1784908328417" ID="ID_1472819180" LINK="https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture" MODIFIED="1784908462711">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
<a rel="mw:WikiLink" href="https://en.wikipedia.org/wiki/Douglas_C._Schmidt" title="Douglas C. Schmidt">Douglas C. Schmidt</a><br /><u>Pattern-Oriented Software Architecture Volume 2</u>:<br />Patterns for Concurrent and Networked Objects
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784908524543" ID="ID_1085065643" LINK="https://www.researchgate.net/publication/215835789_Pattern-Oriented_Software_Architecture_Patterns_for_Concurrent_and_Networked_Objects_Volume_2" MODIFIED="1784908532546" TEXT="online auf ResearchGate.net">
|
||||||
|
<node CREATED="1784908575496" ID="ID_981331086" MODIFIED="1784908579812" TEXT="Proactor: S.181"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784905507376" ID="ID_1003026788" MODIFIED="1784905516883" TEXT="Unterscheidung: Synchronisation / Memory barrier">
|
||||||
|
<node CREATED="1784905550523" ID="ID_46753921" MODIFIED="1784905564533" TEXT="synchronisation: a rendevous point"/>
|
||||||
|
<node CREATED="1784905569032" ID="ID_601678647" MODIFIED="1784905583378" TEXT="memory barrer: not blocking on itself">
|
||||||
|
<node CREATED="1784905602745" ID="ID_1645902351" MODIFIED="1784905612758" TEXT="visibility regime"/>
|
||||||
|
<node CREATED="1784905587190" ID="ID_1714821702" MODIFIED="1784905602160" TEXT="ordering guarantee always holds"/>
|
||||||
|
<node CREATED="1784905613970" ID="ID_616950822" MODIFIED="1784905800237" TEXT="but is only useful when paired with a (edge) observation"/>
|
||||||
|
<node CREATED="1784905714197" ID="ID_1563515485" MODIFIED="1784905719560" TEXT="man bindet an eine Flag">
|
||||||
|
<node CREATED="1784905720466" ID="ID_1613902659" MODIFIED="1784905720943" TEXT="Release = StoreStore + LoadStore, placed before the flag store"/>
|
||||||
|
<node CREATED="1784905728611" ID="ID_201116957" MODIFIED="1784905729215" TEXT="Acquire = LoadLoad + LoadStore, placed after the flag load"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784905763758" ID="ID_515518167" MODIFIED="1784905772088" TEXT="C++ Standard: synchronizes-with"/>
|
||||||
|
<node CREATED="1784905829373" ID="ID_1029060555" MODIFIED="1784905832642" TEXT="usage pattern">
|
||||||
|
<node CREATED="1784905836661" ID="ID_1106405339" MODIFIED="1784905840592" TEXT="spin loop"/>
|
||||||
|
<node CREATED="1784905840892" ID="ID_351410280" MODIFIED="1784905844349" TEXT="CAS retry loop"/>
|
||||||
|
<node CREATED="1784905865424" ID="ID_1584320750" MODIFIED="1784905872076" TEXT="pattern match trail"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784905913607" ID="ID_760903381" MODIFIED="1784905925301" TEXT="x86 memory model : TSO (Total Store Order)">
|
||||||
|
<node CREATED="1784906050870" ID="ID_1735111195" MODIFIED="1784906102565" TEXT="StoreStore, LoadLoad, LoadStore : automatically guaranteed"/>
|
||||||
|
<node CREATED="1784906107472" ID="ID_311784766" MODIFIED="1784906116199" TEXT="StoreLoad must be enforced">
|
||||||
|
<node CREATED="1784906130273" ID="ID_1293987900" MODIFIED="1784906139736" TEXT="Store can sit in the Store buffer"/>
|
||||||
|
<node CREATED="1784906140344" ID="ID_151207131" MODIFIED="1784906152185" TEXT="another Load is satisfied from Cache"/>
|
||||||
|
<node CREATED="1784906168264" ID="ID_641921488" MODIFIED="1784906181563" TEXT="only relevant for sequentially_consistent"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784906198381" ID="ID_1790908983" MODIFIED="1784906267764">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
ABER: gemeinsamer Speicherzugriff <b>kostet immer</b>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
|
<node CREATED="1784906659191" ID="ID_59883588" MODIFIED="1784906668665" TEXT="»cache coherence protocol traffic«"/>
|
||||||
|
<node CREATED="1784906746716" ID="ID_1799583572" MODIFIED="1784906767217" TEXT="typischerweise mehr als der Store-Buffer-flush für seq_cst">
|
||||||
|
<icon BUILTIN="clanbomber"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784906268926" ID="ID_66218233" MODIFIED="1784906290776">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
ABER: der Compiler kann auch <b>umordnen</b>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1784906855164" ID="ID_301489633" MODIFIED="1784906865587">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Bezug zu <b>liburing</b>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
|
<node CREATED="1784906876690" ID="ID_698949310" MODIFIED="1784906877398" TEXT="io_uring_smp_store_release() / io_uring_smp_load_acquire()"/>
|
||||||
|
<node CREATED="1784906878482" ID="ID_786453150" MODIFIED="1784906887132" TEXT="verwendet acquire / release-Semantik"/>
|
||||||
|
<node CREATED="1784906895393" ID="ID_388911767" MODIFIED="1784906905154" TEXT="braucht keine sequentielle Konsistenz"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784907052250" ID="ID_1271354149" MODIFIED="1784907068596" TEXT="Operationskosten vs. tatsächliche Kosten">
|
||||||
|
<node CREATED="1784907070048" ID="ID_1700979751" MODIFIED="1784907080731" TEXT="drei Situation / Regimes zu unterscheiden">
|
||||||
|
<node CREATED="1784907081695" ID="ID_8314744" MODIFIED="1784907094681" TEXT="Microbenchmark: heiß und unter Druck">
|
||||||
|
<node CREATED="1784907141593" ID="ID_267156252" MODIFIED="1784907149370" TEXT="Zugriffe 3-5 x langsamer"/>
|
||||||
|
<node CREATED="1784907149877" ID="ID_248586022" MODIFIED="1784907156913" TEXT="niedrige 2-stellige Nanosekunden">
|
||||||
|
<node CREATED="1784907159045" ID="ID_1638111160" MODIFIED="1784907161960" TEXT="meine Beobachtung"/>
|
||||||
|
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1784907162385" ID="ID_1402937823" MODIFIED="1784907178100" STYLE="fork" TEXT="Claude hat im Netz gesucht und die Größenordnung bestätigt">
|
||||||
|
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
||||||
|
<icon BUILTIN="wizard"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784907202617" ID="ID_673513114" MODIFIED="1784907235721" TEXT="Kosten hängen praktisch nicht von anderen Threads ab">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
weil die Benchmark-Thread(s) warm
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
 gehalten werden
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784907095381" ID="ID_1358858974" MODIFIED="1784907104877" TEXT="real call-chain yet hot cache">
|
||||||
|
<node CREATED="1784907242553" ID="ID_854501852" MODIFIED="1784907254508" TEXT="man sieht Cache-Miss-Kosten"/>
|
||||||
|
<node CREATED="1784907255224" ID="ID_191201973" MODIFIED="1784907288063" TEXT="LLC (low-levelCache) hit: mitlere 2-stellige ns"/>
|
||||||
|
<node CREATED="1784907289483" ID="ID_30976624" MODIFIED="1784907303133" TEXT="Cache-to-DRAM : 100ns"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784907105569" ID="ID_498759870" MODIFIED="1784907119046" TEXT="real call-chain with cold or even sleeping partner">
|
||||||
|
<node CREATED="1784907337701" ID="ID_1773112651" MODIFIED="1784907348168" TEXT="kann bis in den µs-Bereich kosten"/>
|
||||||
|
<node CREATED="1784907386622" ID="ID_55157951" MODIFIED="1784907408951" TEXT="Kontext-Switches via OS kosten 1.5 - 4µs"/>
|
||||||
|
<node CREATED="1784907434040" ID="ID_1806367904" MODIFIED="1784907439211" TEXT="sleep-state wakeup latency">
|
||||||
|
<node CREATED="1784907446230" ID="ID_125187055" MODIFIED="1784907456006" TEXT="C1E state (leicht) : 10µs latency"/>
|
||||||
|
<node CREATED="1784907459037" ID="ID_1079013280" MODIFIED="1784907468760" TEXT="C6 state (deper) : 130 µs"/>
|
||||||
|
<node CREATED="1784907496160" ID="ID_1152415054" MODIFIED="1784907503846" TEXT="Rekonfiguration einer Core: ~10µs"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1784907639420" ID="ID_421389218" MODIFIED="1784907652689" STYLE="fork">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
"A synchronization primitive's instruction-level cost is what a hot microbenchmark measures; its systemic cost — coherence traffic under contention, and blocking/wake latency when it isn't contended — is what your production tail latency measures, and the two can differ by two to four orders of magnitude."
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
||||||
|
<icon BUILTIN="wizard"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784908696776" ID="ID_1195619223" MODIFIED="1784908716530">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Verbindung zum <b>Proactor</b>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="back"/>
|
||||||
|
<node CREATED="1784908718133" ID="ID_161622462" MODIFIED="1784908739198" TEXT="IO-dominiert ⟹ heiß">
|
||||||
|
<node CREATED="1784908742591" ID="ID_1531538522" MODIFIED="1784908749941" TEXT="der Proactor schläft nie"/>
|
||||||
|
<node CREATED="1784908768511" ID="ID_962776798" MODIFIED="1784908783059" TEXT="man zahlt nur acquire/release-Kosten und Cache-traffic"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784908784724" ID="ID_1308278739" MODIFIED="1784908793543" TEXT="CPU-dominiert ⟹ kalt">
|
||||||
|
<node CREATED="1784908801017" ID="ID_298423761" MODIFIED="1784908804553" TEXT="Proactor blockt"/>
|
||||||
|
<node CREATED="1784908805122" ID="ID_736379164" MODIFIED="1784908815372" TEXT="man zahlt zumindest Kontext-Switch"/>
|
||||||
|
<node CREATED="1784908815936" ID="ID_254573875" MODIFIED="1784908824651" TEXT="u.U sogar wakeup einer Idle-Core"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1784909009687" ID="ID_388537598" MODIFIED="1784909032689" STYLE="fork" TEXT="Frage an Claude: Verhältnis zur Backpressure">
|
||||||
|
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
||||||
|
<icon BUILTIN="wizard"/>
|
||||||
|
<icon BUILTIN="help"/>
|
||||||
|
<node CREATED="1784909034361" ID="ID_1332104626" MODIFIED="1784909049037" TEXT="Claude ordnet das ehr als »Duty-cycle« ein"/>
|
||||||
|
<node CREATED="1784909107922" ID="ID_901244335" MODIFIED="1784909111887">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
<strong http-equiv="content-type" content="text/html; charset=utf-8">server-vacation</strong> model
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784908878383" ID="ID_1154107045" MODIFIED="1784909008360" TEXT="Hinweis auf Submission SQPOLL">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
man kann einen Kernel-Thread konfiguieren, der die Submission-Queue pollt. Dort konfiguriert man eine Einschlafe-Periode. Wenn der Poller schläft, setzt er ein Bit und muß von der Applikation explizit wieder reaktiviert werden.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784909413276" ID="ID_249945275" MODIFIED="1784909418755" TEXT="alte / andere IO-Modelle">
|
||||||
|
<node CREATED="1784909419840" ID="ID_468319825" MODIFIED="1784909424853" TEXT="poll/epoll">
|
||||||
|
<node CREATED="1784909439497" ID="ID_1084860008" MODIFIED="1784909467251" TEXT="alle beantworten: "welchen von diesen N Sockets kann ich jetzt lesen?""/>
|
||||||
|
<node CREATED="1784909430431" ID="ID_1550519100" MODIFIED="1784909431498" TEXT="select">
|
||||||
|
<node CREATED="1784909493440" ID="ID_1776306601" MODIFIED="1784909501801" TEXT="die älteste Lösung"/>
|
||||||
|
<node CREATED="1784909502349" ID="ID_2286932" MODIFIED="1784909521102" TEXT="man gibt dem Kernel eine Bitmask die interessante FildDescriptors markiert"/>
|
||||||
|
<node CREATED="1784909521832" ID="ID_1755337748" MODIFIED="1784909530992" TEXT="der Kernel setzt dort Bit"/>
|
||||||
|
<node CREATED="1784909532281" ID="ID_1850235470" MODIFIED="1784909544907" TEXT="man sieht dann selber welche FD-Nummer man anschauen sollte"/>
|
||||||
|
<node CREATED="1784909546095" ID="ID_242092869" MODIFIED="1784909559545" TEXT="limitiert durch die feste Bitmask-Größe (1024)"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784909581226" ID="ID_486293840" MODIFIED="1784909582678" TEXT="poll">
|
||||||
|
<node CREATED="1784909583578" ID="ID_50149205" MODIFIED="1784909592869" TEXT="gleiches Prinzip, aber API mit einer flexiblen Liste"/>
|
||||||
|
<node CREATED="1784909594154" ID="ID_1802655092" MODIFIED="1784909599505" TEXT="jeder Call ist O(n)"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784909637914" ID="ID_92373023" MODIFIED="1784909639511" TEXT="epoll">
|
||||||
|
<node CREATED="1784909640259" ID="ID_507142615" MODIFIED="1784909645150" TEXT="Linux-spezifische Lösung"/>
|
||||||
|
<node CREATED="1784909650811" ID="ID_1531049274" MODIFIED="1784909659550" TEXT="man registriert Interesse an bestimmten FDs"/>
|
||||||
|
<node CREATED="1784909660072" ID="ID_882314156" MODIFIED="1784909688207" TEXT="man bekommt per Kernel-Aufruf eine Liste der lesebereiten FDs"/>
|
||||||
|
<node CREATED="1784909688716" ID="ID_1964702359" MODIFIED="1784909707021" TEXT="ist O(1) da push vom Network-Stack"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784909736198" ID="ID_1140561950" MODIFIED="1784909738753" TEXT="im Detail">
|
||||||
|
<node CREATED="1784909739501" ID="ID_1315873664" MODIFIED="1784909745423" TEXT="das sind alles blockende Kernel-Calls"/>
|
||||||
|
<node CREATED="1784909751964" ID="ID_1277219779" MODIFIED="1784909761846" TEXT="nur werden die Daten intern bereits vorbereitet"/>
|
||||||
|
<node CREATED="1784909776690" ID="ID_988789751" MODIFIED="1784909785052" TEXT="Jeder Socket hat einen receive-Buffer"/>
|
||||||
|
<node CREATED="1784909814875" ID="ID_1511520490" MODIFIED="1784909824021" TEXT="dort kann man sich in eine wait-queue registrieren"/>
|
||||||
|
<node CREATED="1784909824946" ID="ID_943421877" MODIFIED="1784909849298" TEXT="beim Eintreffen von Daten wird der aktuelle Thread auf "aktiv" markiert"/>
|
||||||
|
<node CREATED="1784909851798" ID="ID_890255483" MODIFIED="1784909865847" TEXT="beim nächsten Scheduler-Turn wird er auf eine core gemapped"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784909882722" ID="ID_898978088" MODIFIED="1784909894254" TEXT="es gibt eine Unix-Signal-basierte Variante">
|
||||||
|
<node CREATED="1784909895312" ID="ID_1380240825" MODIFIED="1784909906371" TEXT="die wird aber extrem selten genutzt"/>
|
||||||
|
<node CREATED="1784909920762" ID="ID_409154508" MODIFIED="1784909936575" TEXT="ist kniffelig: man weiß nicht für welchen FD man signalisiert wurde"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1784909970894" ID="ID_467441062" MODIFIED="1784910002009" TEXT="Achtung: lokale Files nicht für poll/epoll geeignet">
|
||||||
|
<node CREATED="1784910003130" ID="ID_1349981115" MODIFIED="1784910020372" TEXT="sie implementieren nicht den "readiness-contract" des VFS-Layers"/>
|
||||||
|
<node CREATED="1784910020816" ID="ID_1067149107" MODIFIED="1784910030490" TEXT="sie haben keinnen Buffer-leer-Status"/>
|
||||||
|
<node CREATED="1784910033854" ID="ID_245837866" MODIFIED="1784910044737" TEXT="insofern »erscheinen« sie immer "ready""/>
|
||||||
|
<node CREATED="1784910045236" ID="ID_1620698915" MODIFIED="1784910058118" TEXT="aber der Lese-Aufruf blockt dann u.U. doch"/>
|
||||||
|
<node CREATED="1784910062689" ID="ID_637014950" MODIFIED="1784910077818" TEXT="Abhilfe: asio und File-Handles im DIRECT-Modus"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1784910098946" ID="ID_1349516830" MODIFIED="1784910117028" TEXT="selbst das Reactor-Modell braucht stets einen Kernel-Call">
|
||||||
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
|
<node CREATED="1784910118219" ID="ID_560621411" MODIFIED="1784910129209" TEXT="das ist der wichtigste Vorteil von IO_URING"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519001955679" ID="ID_65625223" MODIFIED="1779386731937" TEXT="Demo-Inhalte">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519001955679" ID="ID_65625223" MODIFIED="1779386731937" TEXT="Demo-Inhalte">
|
||||||
|
|
@ -1910,8 +2300,8 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1783902798597" ID="ID_599725786" MODIFIED="1783902800007" TEXT="eglSwapInterval">
|
<node CREATED="1783902798597" ID="ID_599725786" MODIFIED="1783902800007" TEXT="eglSwapInterval">
|
||||||
<node CREATED="1783902800007" ID="ID_1393441883" MODIFIED="1784562583608" TEXT="damit kann man wohl das Verhlätnis zu VSync steuern">
|
<node CREATED="1783902800007" ID="ID_1393441883" MODIFIED="1784562583608" TEXT="damit kann man wohl das Verhlätnis zu VSync steuern">
|
||||||
<linktarget COLOR="#347acc" DESTINATION="ID_1393441883" ENDARROW="Default" ENDINCLINATION="288;0;" ID="Arrow_ID_707364611" SOURCE="ID_1990712475" STARTARROW="None" STARTINCLINATION="140;12;"/>
|
|
||||||
<linktarget COLOR="#708a96" DESTINATION="ID_1393441883" ENDARROW="Default" ENDINCLINATION="-431;-21;" ID="Arrow_ID_986847518" SOURCE="ID_1448869178" STARTARROW="None" STARTINCLINATION="-642;52;"/>
|
<linktarget COLOR="#708a96" DESTINATION="ID_1393441883" ENDARROW="Default" ENDINCLINATION="-431;-21;" ID="Arrow_ID_986847518" SOURCE="ID_1448869178" STARTARROW="None" STARTINCLINATION="-642;52;"/>
|
||||||
|
<linktarget COLOR="#347acc" DESTINATION="ID_1393441883" ENDARROW="Default" ENDINCLINATION="288;0;" ID="Arrow_ID_707364611" SOURCE="ID_1990712475" STARTARROW="None" STARTINCLINATION="140;12;"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1783904509744" ID="ID_1126395932" MODIFIED="1783904513706" TEXT="X11 / Wayland">
|
<node CREATED="1783904509744" ID="ID_1126395932" MODIFIED="1783904513706" TEXT="X11 / Wayland">
|
||||||
|
|
@ -2891,8 +3281,7 @@
|
||||||
ffplay -f rawvideo -pixel_format rgb24 -video_size 1200x675 -framerate 50 demovideo-1200.raw
|
ffplay -f rawvideo -pixel_format rgb24 -video_size 1200x675 -framerate 50 demovideo-1200.raw
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<icon BUILTIN="wizard"/>
|
<icon BUILTIN="wizard"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1784226921919" ID="ID_1975886749" MODIFIED="1784562062109" TEXT="vlc">
|
<node CREATED="1784226921919" ID="ID_1975886749" MODIFIED="1784562062109" TEXT="vlc">
|
||||||
|
|
@ -2905,8 +3294,7 @@
|
||||||
vlc --demux rawvideo --rawvid-width=1200 --rawvid-height=675 --rawvid-fps=50 --rawvid-chroma=RV24 --vout=opengl demovideo-1200.raw
|
vlc --demux rawvideo --rawvid-width=1200 --rawvid-height=675 --rawvid-fps=50 --rawvid-chroma=RV24 --vout=opengl demovideo-1200.raw
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<icon BUILTIN="wizard"/>
|
<icon BUILTIN="wizard"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue