AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?
Thema durchsuchen
Ansicht
Themen-Optionen

Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

Ein Thema von Delphi-Laie · begonnen am 22. Nov 2014 · letzter Beitrag vom 25. Nov 2014
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 23. Nov 2014, 04:45
Für genauere Infos zu den internen Abläufen dazu, siehe diesen Blog-Eintrag. Allerdings muss man auch trotz dieser berechenbaren Dinge aufpassen, da die letztendliche Anzahl stark mit davon beeinflusst wird, wie viel Speicher der Elternprozess bereits nutzt, und wie stark dieser fragmentiert ist. Wenn man also nicht 100% weiss was der Delphi MM tut, und dieses voll deterministisch auf den eigenen gesamten Code angewended quatifizieren kann, wird eine harte feste definitive theoretische Zahl mit praktischer Relevanz ziemlich unmöglich.

In einem Stackoverflow-Thread habe ich auch noch die Aussage gefunden (auf 32 Bit Prozesse bezogen):
Zig: Quasi immer möglich
Hunderte: Vermutlich meistens okay, je nach dem
Tausende: Fast nie erfolgreich

Ich denke, mit deinen 1000-1500 bist du schon recht nah an der praktisch möglichen Grenze für den allgemeinen Fall.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 23. Nov 2014, 09:22
Danke!

Ich denke, mit deinen 1000-1500 bist du schon recht nah an der praktisch möglichen Grenze für den allgemeinen Fall.
Ich weiß nicht, was genau alles auf dem Stack abgelegt wird - Variablen gewiß, aber auch Code? Gerade bei letzterem wäre der Stack viel eher gefüllt.

Für mich ein Grund mehr, den Stack nicht zu mögen, der war mir noch nie sympathisch. Jetzt tut sich sogar noch ein Zielkonflikt auf: Threadanzahl versus Rekursion.

Was schätze ich deshalb stack-, konkreter rekursionsbefreite Algorithmen, nur, in diesem Falle geht es wohl nicht ohne Stack, und diese "Stellschraube" zur Erhöhung der Threadanzahl war mir vorher auch gar nicht bekannt.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 23. Nov 2014, 13:46
Für mich ein Grund mehr, den Stack nicht zu mögen, der war mir noch nie sympathisch.
Das ist irgendwie schon eine lustige Aussage
Der Stack ist einfach eine (ziemlich effiziente) Datenstruktur zur Speicherverwaltung.

Ich weiß nicht, was genau alles auf dem Stack abgelegt wird.
Im Grunde Argumente, Rücksprungadressen und lokale Variablen (+ temporäre Zwischenergebnisse). In der Regel kein Code.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 23. Nov 2014, 15:39
Steht alles in dem verlinkten Artikel.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#5

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 24. Nov 2014, 08:54
Aussage, die früher oder später hier kommen muss: Was machst du Dir eigentlich Gedanken über die maximal mögliche Thread-Anzahl? Abseits von einem Server, gibt es keine sinnvolle (aka zeitsparende) Anwendung von mehr Threads als CPU-Kernen. Da Du sicherlich nicht der Herr über 1000+ Kerne bist (auf jeden Fall nicht, wenn Du mit Delphi entwickelst), ist das doch allenfalls eine akademische Frage, oder?

Aber falls Du einen wie auch immer gearteten Server entwickelst, solltest Du Dir überlegen eventuell ruhende Verbindungen (=Threads) auszulagern. Dafür gibts sicherlich einen coolen Pattern Namen, der mir aber gerade nicht einfallen will.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 24. Nov 2014, 09:05
Hatt ich mir auch gedacht, dann hab ich den letzten Absatz im ersten Post gelesen

Aber was in dem Kontext sicherlich auch spannend wäre: Zeige, wie sich unterschiedliche Threadanzahlen auf das Laufzeitverhalten auswirken. I.e.: Lass die Simulation mal mit 1, 10, 100, 500, 1000 etc. Threads laufen und vergleiche das Ergebnis. Der größte Trugschluss den ich in Konversationen über Parallelisierung gefunden habe ist, dass mehr Threads mehr Geschwindigkeit bedeuten.

Abseits von einem Server, gibt es keine sinnvolle (aka zeitsparende) Anwendung von mehr Threads als CPU-Kernen.
Doch. Einfachstes Beispiel: Threads brauchen teure IO-Operationen. Während ein Thread auf die Festplatte wartet, kann ein anderer den Kern einnehmen. Das geht natürlich nur, wenn du mehr Threads als Kerne hast
Natürlich, es braucht ein gesundes Maß von Threads vs Kernen.
Mike
Passion is no replacement for reason

Geändert von JasonDX (24. Nov 2014 um 09:07 Uhr) Grund: Weil ich es muss.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 24. Nov 2014, 21:42
Was machst du Dir eigentlich Gedanken über die maximal mögliche Thread-Anzahl? Abseits von einem Server, gibt es keine sinnvolle (aka zeitsparende) Anwendung von mehr Threads als CPU-Kernen.
Sherlock, dazu äußerte ich mich bereits in meinem Eröffnungsbeitrage. Nicht immer geht es nämlich um (maximale) Geschwindigkeit, sondern manchmal steht die Gleichzeitigkeit ganz oben auf der Wunschliste. In Kürze werde ich den Algorithmus (auch) hier in der Delphipraxis veröffentlichen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?

  Alt 24. Nov 2014, 21:52
Dann bin ich mal gespannt, wie du auf einem System mit CPU(kern) <<< Thread-Anzahl die "Gleichzeitigkeit" definierst. Das ist dann sowas wie die Quadratur des Kreises.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz