# Mittlere Wartezeit Frage



## ven000m (20. Sep 2007)

Hallo,

ich habe einmal zwei Fragen:

1. Angenommen es warten 20 Clients darauf, dass jeder insg. 1 Std. auf einem multiplexenden Server rechnen darf, wie lange muss jeder Client warten (mittlere Wartezeit) bis er dran kommt? (Grundsätzliches: Der multiplexende Server gewährt jedem Client immer einen kurzen Time-Slot um auf der CPU zu rechnen, er springt sozusagen von Client zu Client hin und her.)

2. Wie lange dauert der gesamte Prozess insg.?

Meine Theorie wäre wie folgt:

Zu 1.)

20 Clients wollen jeweils 1 Std. rechnen, dies geschieht jeweils nur mit Unterbrechung. So nehme ich dann, dass die faire Wartezeit sich nach der Rechenzeit (1Std.) richtet: 60 / 20 = 3 Min * Clients (20) =  60min mittlere Wartezeit bis man wieder dran ist. 



Zu 2.)
- Insg. dauert es wie bei einem seriellen Server 20 Std. hinzu kommt aber die Verwaltungszeit für die Threads, sagen wir also 20 Std. + x Minuten. 20 Threads verzwanzigfachen ja nicht die die Geschwindigkeit, anders wäre es bei 20 CPU Kernen.

Stimmt ihr dem zu?

Vielen Dank


----------



## SlaterB (20. Sep 2007)

deinen letzten Thread vergessen?
http://www.java-forum.org/de/viewtopic.php?t=55546

auch wenn die Frage vielleicht eine andere ist, wäre ein Link doch nicht schlecht,
oder gleich dort weiterfragen


----------



## ven000m (20. Sep 2007)

Die Frage bezieht sich aber nicht auf einen seriellen Server und die Gesamtabarbeitung. Sondern fragt nach der Zeit bis man etwas auf der CPU ausführen darf.


----------



## tuxedo (20. Sep 2007)

ven000m hat gesagt.:
			
		

> Sondern fragt nach der Zeit bis man etwas auf der CPU ausführen darf.



Lässt sich sowas überhaupt verallgemeinern? Ich mein: Das kommt doch auf den Server und die Skalierung bzw. die Art und weise wie der Dispatcher realisiert ist an.

Ich meine: 20 Clients sind nicht viel. Aber lass es mal 2000 sein?  oder 20.000? 

- Alex


----------



## ven000m (20. Sep 2007)

Das wurde ich zumindest in der Prüfung so gefragt. Was meinste denn zu meinen Thesen?


----------



## tuxedo (20. Sep 2007)

Ich sehe bei deiner Fragestellung keinen großen unterschied zu hier: http://www.java-forum.org/de/viewtopic.php?t=55546

Denn damals hattest du auch schon etwas von einem mutiplexenden server (threads? mehrere prozesse?) gesprochen.

Wenn ich einen 1-Kern Prozessor habe und 20 Clients die jeweils 1Std rechnen wollen, dann ist es fast schnuppe ob ich das nacheinander mache oder quasi-paralell (zeitschlitzverfahren).

20 Clients * je 1Std Rechenzeit = 20h gesamt.

Bei einer seriellen verarbeitung stehen die Clients ja in einer Schlange: Der erste muss nicht warten, der zweite muss 1std warten, der zweite 2h, der dritte 3h etc...
Zählt man hier die Wartezeiten zusammen kommt man auf folgendes Mittel:

(0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19) / 20 = 9,5h

Lässt man sie quasi-paralell rechnen, geschieht das immernoch sozusagen "seriell". 
Sagen wir im Zeitschlitzverfahren kriegt jeder 5min bevor der nächste dran kommt, dann kommt jeder 12 mal dran:

60min gesamt / 5min pro Schlitz = 12 Rechenschritte

Wir haben 20 Clients, also

20Clients * 12 Rechenschritte = 240 Rechenschritte 
240 Rechenschritte * 5min = 20h 

Hinzu kommt die Zeit für das wechseln der Clients. 
Wie lange jeder Client zum Rechnen bekommt kann man denke ich nicht verallgemeinern oder mit den wenigen bekannten Daten ausrechnen. Man kann nur mutmaßen. Letztendlich liegts am Betriebssystem wie es die parallelität managed. 

Sollte ich krass daneben liegen lasst es mich wissen...

- Alex


----------

