From 8fd15559553bb7a912d50f4aa51147e484c709ad Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 24 Jul 2026 18:23:19 +0200 Subject: [PATCH] summary of recherche regarding synchronisation and performance aspects --- FrOSCon26/FrOSCon.26.mm | 420 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 404 insertions(+), 16 deletions(-) diff --git a/FrOSCon26/FrOSCon.26.mm b/FrOSCon26/FrOSCon.26.mm index c59ef49..26f133b 100644 --- a/FrOSCon26/FrOSCon.26.mm +++ b/FrOSCon26/FrOSCon.26.mm @@ -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

- - + @@ -357,8 +356,7 @@ Ich folge dem gleichen Ansatz, gehe aber mit der Linux-Kernelentwicklung mit...

- - +
@@ -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

- - +
@@ -414,8 +411,7 @@ ich habe zur Vorbereitung meine anfänglichen Ideen in einer Konversation mit Claude validiert....

- - + @@ -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.

- - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ Doug Lea's "JSR-133 Cookbook for Compiler Writers" +

+ + +
+ +
+ + + + + + +

+ Gilt als Quelle für Doug Lea +

+ + +
+ + + + + + + + + + + + + + + +

+ loads before must complete before loads after +

+ + +
+
+ + + + + + +

+ stores before must become visible before stores after +

+ + +
+
+ + + + + + +

+ loads before must complete before stores after +

+ + +
+
+ + + + + + +

+ stores before must become visible before loads after +

+ + +
+
+
+
+ + + + + + + + + + + + + + + + + "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 + +

+ atomic_thread_fence, not a synonym for memory_order." +

+ + +
+
+
+
+
+ + + + + + + +

+ Douglas C. Schmidt
Pattern-Oriented Software Architecture Volume 2:
Patterns for Concurrent and Networked Objects +

+ + +
+
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ ABER: gemeinsamer Speicherzugriff kostet immer +

+ + +
+ + + + + + + + + + + + +

+ ABER: der Compiler kann auch umordnen +

+ + +
+ +
+
+ + + + + + +

+ Bezug zu liburing +

+ + +
+ + + + + + + + + + + + + + + + + + + + + + +

+ weil die Benchmark-Thread(s) warm +

+

+  gehalten werden +

+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + "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." + + + + + + + + + + + + +

+ Verbindung zum Proactor +

+ + +
+ + + + + + + + + + + + + + + + + + + + + +

+ server-vacation model +

+ + +
+
+
+
+ + + + + + +

+ 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. +

+ + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1910,8 +2300,8 @@ - + @@ -2891,8 +3281,7 @@ ffplay -f rawvideo -pixel_format rgb24 -video_size 1200x675 -framerate 50 demovideo-1200.raw

- - +
@@ -2905,8 +3294,7 @@ vlc --demux rawvideo --rawvid-width=1200 --rawvid-height=675 --rawvid-fps=50 --rawvid-chroma=RV24 --vout=opengl demovideo-1200.raw

- - +