Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Linux wird echtzeitfähig.
- - By Lothar Jung Date 2024-09-20 20:17 Upvotes 1
https://www.heise.de/news/Nach-20-Jahren-muehevoller-Arbeit-Linux-Kernel-jetzt-Echtzeit-tauglich-9932733.html

Also deterministisch.
Das könnte sich auch positiv auf Schachprogramme auswirken, besonders bei Multithreading.
Parent - - By Lars B. Date 2024-09-24 16:10
Lothar Jung schrieb:

Also deterministisch.

Ist das so? Bin jetzt kein Experte für Echtzeit-Betriebssysteme, aber ich dachte, es würde nur eine (allerdings sehr kurze) Reaktionszeit garantiert. Das heißt doch nicht, daß da nicht vielerlei Prozesse nebenherlaufen. Magst Du das mal erklären?

Lothar Jung schrieb:

Das könnte sich auch positiv auf Schachprogramme auswirken, besonders bei Multithreading.

Inwiefern? Das verstehe ich gar nicht.

VG
Lars
Parent - - By Lothar Jung Date 2024-09-24 17:06 Upvotes 1
Der priorisierte Prozess wird nicht durch andere Prozesse unterbrochen.
Die Latenzen sind dadurch niedriger und die Ergebnisse sind deterministisch.
Parent - By Max Siegfried Date 2024-09-24 17:38
Was Lothar dir sagen möchte ist:
Beispiel:
Du hast eine CPU mit 16 Kernen.
Du lässt Stockfish 16 Kerne benutzen.
Trotzdem erhältst du weiterhin E-Mails, kannst gleichzeitig den Browser benutzen usw.
= Die CPU macht vieles gleichzeitig und ab und zu wird bei Stockfish (unauffällig) reingegrätscht, quasi wie beim Fußball.
Ich glaube das war schon damals zu Zeiten von ChessOK möglich, dass man einen Prozess priorisieren konnte.
Windows, höchste Priorität, normale Priorität, Taskmanager, Aktivitätenanzeige...
Nun wird das reingrätschen beim priorisierten Prozess (Stockfish) verboten, bzw. ist quasi nicht mehr spürbar/wahrnehmbar. Lese dir mal in Google die Links zu dem Linux Kernel Thema durch.
Somit sind die Stockfish Ergebnisse deterministisch stürzt nicht ab.

Ich frage mich nur wie lange es bei Windows dauert, bis die Ergebnisse deterministisch sind.

Wenn die Ergebnisse unter Linux deterministisch sind, dann hätte dies auch Einfluss auf neue/andere Entwicklungsmöglichkeiten von Stockfish und Co!
Außerdem lassen sich Analysen/Ergebnisse einfacher/sinnvoller miteinander vergleichen.
Parent - - By Lars B. Date 2024-09-24 19:55 Upvotes 1
Hallo Lothar,

das ist mir als Erklärung ein bißchen mager, oder ich hab's bloß nicht verstanden. Ein priorisierter Prozeß wird nicht unterbrochen, gut. Aber das macht die Sache nur unter sehr speziellen Bedingungen deterministisch. Es bleibt ja die Frage, wie viele Prozessorkerne nutzt dieser Prozeß. Alle? Dann steht das System. Nicht alle? Was machen die anderen? Es gibt I/O, es gibt auch Grafikkarten, auf denen irgendwas passiert etc.

Oder, um das mal auf Schachprogramme zu beziehen: Benutzt das Schachprogramm mehrere Kerne? Wenn ja, können, ganz gleich, ob die Parallelisierung über Prozesse oder Threads funktioniert, nicht alle unterbrechungsfrei in "Echtzeit" laufen, oder? Darüber hinaus müssen die ja auf shared memory zugreifen, und auch das geht halt auch nicht ohne gelegentliches Warten, denn es wäre fatal, bei einem (nichtatomaren) Hashzugriff einen Eintrag zu lesen, der gerade von einem anderen Thread/Prozeß geschrieben wird.

Das alles spricht in meinen Augen ein bißchen gegen den behaupteten Determinismus, oder wo liegt hier mein Denkfehler?

VG
Lars
Parent - By Lothar Jung Date 2024-09-24 20:52 Upvotes 1
Die Echtzeit Anforderung kann für jeden Prozessorkern vorgegeben werden.
Hier ein Blog zur Programmierung von Spielen:
https://www.spieleprogrammierung.net/2010/09/multithreading-in-echtzeit-anwendungen.html
Parent - - By Jörg Oster Date 2024-09-24 20:57
Also ich verstehe auch nicht, was das eine mit dem anderen zu tun hat.
Engines sind ja schon immer mit einem Thread deterministisch.
Also mit z. B. go depth 8 bekommt man immer das gleiche Ergebnis, egal ob Windows oder Linux.

Hier mal, was ich zum Thema ergoogelt habe:
Zitat:

Was versteht man unter Echtzeitfähigkeit?
Unter der Echtzeitfähigkeit eines Betriebssystems versteht man in erster Linie dessen reale Fähigkeit, in einer gegebenen Betriebsumgebung alle anstehenden Aufgaben und Funktionen unter allen Betriebszuständen immer rechtzeitig und ohne Ausnahme erledigen zu können.


Was das jetzt aber genau bedeutet, ist mir ehrlich gesagt auch nicht wirklich klar.
Parent - By Lothar Jung Date 2024-09-24 21:22 Upvotes 1
Ja, ist ist komplizierter, deshalb hat die Umsetzung so lange gedauert:
Linux 6.12: Scheduler jetzt erweiterbar und EEVDF-Umbau komplett | heise online
Parent - - By Olaf Jenkner Date 2024-09-24 22:15 Upvotes 4
Soweit ich das verstanden habe, sagt Echtzeitfähigkeit nur, daß das System garantiert, daß ein Prozeß
nicht länger als einen Zeitraum x warten muß, bis er starten kann. Wenn dieser Prozeß immer innerhalb
einer bestimmten Zeitspanne fertig wird, kann ein korrektes Verhalten des Systems garantiert werden.
Echtzeitsysteme gibt es, seit es softwaregesteuerte Anlagen gibt.
Multithreadprogramme werden dadurch nicht deterministisch, weil auch bei Echtzeitsystemen einzelne
Threads unterschiedlich schnell sein können. Es geht da ja nur um die zugesicherte maximale Wartezeit.

Wenn Linux jetzt 100 Mikrosekunden garantiert und zwei Programme jeden Zug in maximal 95 Mikrosekunden
ausführen, können 60 Züge in 24 Millisekunden gespielt werden. Es wären also garantiert 2400 Partien
in einer Minute möglich.
Parent - By Jörg Oster Date 2024-09-24 22:44 Upvotes 2
Danke für diese verständliche Erklärung.
Parent - - By Max Siegfried Date 2024-09-24 23:46
Wie gut ist eigentlich Stockfish unter diesen Bedingungen?
Parent - By Olaf Jenkner Date 2024-09-24 23:49
Probiere es aus.
Parent - By Lothar Jung Date 2024-09-25 17:05 Upvotes 1
Echtzeitbetriebssysteme (RTOS, Real-Time Operating Systems) können Multithreading unterstützen, sind aber nicht zwangsläufig multithreadingfähig. Die Unterstützung von Multithreading hängt vom Design des jeweiligen Echtzeitbetriebssystems ab.

In vielen RTOS-Implementierungen wird Multithreading genutzt, um mehrere Tasks parallel ablaufen zu lassen. Diese Tasks werden in der Regel nach vordefinierten Prioritäten oder Zeitplänen (Slicing) ausgeführt, wobei das Betriebssystem sicherstellt, dass Echtzeitanforderungen wie deterministische Reaktionszeiten erfüllt werden. Die Unterstützung von Multithreading hilft dabei, mehrere Prozesse unabhängig voneinander laufen zu lassen, was die Effizienz des Systems verbessert.

Zusammengefasst: Viele Echtzeitbetriebssysteme sind multithreadingfähig, und das Multithreading ist ein nützliches Werkzeug zur Parallelisierung von Aufgaben in Echtzeitsystemen, wenn es korrekt implementiert und genutzt wird.
Up Topic Hauptforen / CSS-Forum / Linux wird echtzeitfähig.

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill