WinFuture-Forum.de: Wieviele Threads Möglich? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Wieviele Threads Möglich?


#1 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1

geschrieben 26. Oktober 2006 - 16:54

Nabend

ich habe mal eine generelle Frage, wieviele Threads kann man gleichzeitig ausführen?
Hängt das vom Prozessor/Arbeitsspeicher , der Programmiersprache oder dem Betriebsystem ab?

Angenommen ich wollte 12000 Threads gleichzeitig starten, wäre dies möglich?

Dieser Beitrag wurde von Flo bearbeitet: 26. Oktober 2006 - 16:57

0

Anzeige



#2 Mitglied ist offline   Kenny 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.427
  • Beigetreten: 22. September 03
  • Reputation: 13

geschrieben 26. Oktober 2006 - 17:03

wir haben auf ner lan damals bei einem mit top-system (450mhz p3, 128mb ram!) einfach mal nach *.* gesucht, alles in den autostart kopiert und rebootet. der hat dann 8min zum starten gebraucht und kam dann so weit, bis der virtuelle speicher voll war.

ich denke mal möglich sind 12000 thread aber das ganze sys wird langsam werden. wie die zyklus-zeit bei ner SPS z.b.
"Irgendwat is ja immer."
0

#3 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1

geschrieben 26. Oktober 2006 - 17:05

Konkret ginge es darum 12000 Pings gleichzeitig durchzuführen, und ich suche nach Argumenten mit denen ich begründen kann das das keine gute Idee ist.

Ist für eine Projektdokumentation, und da muss ich halt genau begründen warum nicht.
0

#4 Mitglied ist offline   G.I.Joe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 978
  • Beigetreten: 19. September 04
  • Reputation: 0

geschrieben 26. Oktober 2006 - 17:12

12000 Pings auf einmal dürfe wahrscheinlich langsamer sein als hintereinander, da quasi die Netzwerkverbindung "verstopft" wird.
Was eine bessere Möglichkeit ist, ist die Threads in einer Queue zu sammeln und dann immer eine gewisse Anzahl gleichzeitig auszuführen, muss man halt ein bisschen testen wie viele parallel optimal sind.

Was es auch noch gibt ist das Phänomen des "Thread Thrashing".

Zitat

Thread Thrashing
Thrashing occurs when a program makes little-to-no progress because threads perform excessive context switching. This may leave little or no time for the application (or applet) code to execute.
Aber das dürfte wenn es lediglich um kurze Sachen wie Pings geht, nicht auftreten. Thread Thrashing gibt es z.B. wenn ein Server sagen wir mal 12000 Clients bedient und man für jeden Client einen neuen Thread startet.

Dieser Beitrag wurde von deglerj bearbeitet: 26. Oktober 2006 - 17:15

Eingefügtes Bild Eingefügtes Bild
0

#5 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1

geschrieben 26. Oktober 2006 - 17:16

Beitrag anzeigenZitat (deglerj: 26.10.2006, 18:12)

12000 Pings auf einmal dürfe wahrscheinlich langsamer sein als hintereinander, da quasi die Netzwerkverbindung "verstopft" wird.
Was eine bessere Möglichkeit ist, ist die Threads in einer Queue zu sammeln und dann immer eine gewisse Anzahl gleichzeitig auszuführen, muss man halt ein bisschen testen wie viele parallel optimal sind.

Was es auch noch gibt ist das Phänomen des "Thread Thrashing". Aber das dürfte wenn es lediglich um kurze Sachen wie Pings geht, nicht auftreten.



Hm also da sehe ich nicht wirklich ein Problem...

Und die Möglichkeit mit den Queue fällt flach , da sie alle gleichzeitig durchgeführt werden müssten.

Ich will das ja auch gar nicht machen, nur währe es eine Theoretische Möglichkeit und ich muss begründen warum nicht.

Deswegen wäre es ganz gut wenn ich wüsste wieviele Threads man ohne große Probleme ausführen könnte.

Es reicht ja schon wenn ich weiß ob das Betriebsystem oder der Prozessor/Arbeitsspeicher da außschlaggebend ist
0

#6 Mitglied ist offline   G.I.Joe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 978
  • Beigetreten: 19. September 04
  • Reputation: 0

geschrieben 26. Oktober 2006 - 17:55

Es gibt in Windows kein Thread-Limit, aber offensichtlich ein Problem ab ca. 2000 Threads: http://blogs.msdn.com/oldnewthing/archive/.../29/444912.aspx

Trotzdem fällt es mir schwer mir ein Szenario vorzustellen in dem Unmengen von Pings exakt gleichzeitig ausgeführt werden müssen. Und ich bezweifle auch immer noch, dass das ab einer best. Menge noch gut geht, wahrscheinlich dürfte eher ein Teil der Pings dann wegen Überlastung der Verbindung fehlschlagen.
Eingefügtes Bild Eingefügtes Bild
0

#7 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1

geschrieben 26. Oktober 2006 - 18:44

Danke, der Link ist perfekt, reicht vollkommen aus.

Zitat

Trotzdem fällt es mir schwer mir ein Szenario vorzustellen in dem Unmengen von Pings exakt gleichzeitig ausgeführt werden müssen


Das Szenario ist eine Topologierkennung :blush: und damit man alle IP Adressen eines Klasse A Netzwerkes anpingen kann, und das in annehmbarer Zeit müsste man 12000 Pings gleichzeitig starten. Broadcastping fällt Flach, wird geblockt.

Und es soll ja auch nicht gemacht werden, es muss aber gut begründet werden warum....und da ist die Speicher sache perfekt

Dieser Beitrag wurde von Flo bearbeitet: 26. Oktober 2006 - 18:47

0

#8 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2

geschrieben 26. Oktober 2006 - 18:50

Ist es eigentlich so schwer, einfach entsprechene Pakete zu generieren und sequentiell auf die Leitung zu legen? Wenn die alle parallel generiert werden, dann muss eh ein Scheduler das alles serialisieren und nach unten durchreichen.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#9 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1

geschrieben 26. Oktober 2006 - 18:52

Zitat

Ist es eigentlich so schwer, einfach entsprechene Pakete zu generieren und sequentiell auf die Leitung zu legen?


Ja für mich schon... und da nmap die sache viel besser erledigt brauche ich das zum glück auch nicht machen. Ich muss halt nur richtig begründen warum ich was nicht nehme.
0

#10 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0

geschrieben 26. Oktober 2006 - 20:40

Flo, begründung: multithreading macht keinen sinn, da es im kern sowieso nacheinander abgearbeitet wird. solang der netzwerkstack nicht voll ist, kannst du die pings einfach rausjagen und dann (wenn alle raus sind) auf sie warten. das größte problem ist denk ich, dass du die ping-request-pakete alle innerhalb so kurzer zeit rausjagst, dass das erste reply nicht empfangen wird, bevor das letzte request rausgeht, da du sonst dein ergebnis verfälscht. und wenn das doch passiert, die buffer im netzwerkstack groß genug sein müssen, dass keine pakete verloren gehen.
aber ich bin kein icmp experte :blush: vllt. geht es ja schöner?

grüsse,
mo
I'm mó. mo's good twin.
0

#11 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1

geschrieben 26. Oktober 2006 - 23:38

Danke für eure Antworten, sie haben mir sehr weitergeholfen
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0