2010-11-18 7 views
0

Ich muss folgende Frage beantworten:theoretische Frage über Multithreading (Skalierung)

Ein Server muss 15 ms Arbeit pro Anfrage für eine Datei zu tun. Wenn sich die Datei nicht im Cache befindet, muss auf die Festplatte zugegriffen werden, und Thread wird für 75 ms inaktiviert. Dies geschieht in 1/3 der Fälle.

a) Wie viele Anfragen kann der Server pro Sekunde mit 1 Thread verarbeiten? -> 15 ms + 1/3 * 75 ms = 40 ms pro Anfrage -> 1000/40 ms = 25 Anfrage pro Sekunde

b) Wie viele mit mehreren Threads?

Gibt es eine Formel dafür? für 2 Threads habe ich 40,625 Anfrage pro Sekunde: 25 ms im Durchschnitt Pause -> 25/40 = 0,625 -> 25 * 1,625 = 40,625 Anfragen pro Sekunde

Was etwa 3 oder mehr Fäden?

+0

HFG? Wenn ja, sind Hausaufgabenfragen auf dieser Site in Ordnung, aber Sie müssen zeigen, dass Sie etwas von der Arbeit machen. Mit welchen Teilen der Frage haben Sie Probleme? –

+0

Ist das eine Hausaufgabe? –

+0

Es gibt nichts an der Festplatte, die Anfragen seriell bearbeiten muss, also können wir davon ausgehen, dass es sehr schnell gehen kann. Der maximale Durchsatz liegt dann vor, wenn die gesamte Prozessorzeit für die 15 ms Arbeit aufgebraucht ist. –

Antwort

1

Ich weiß, ich mache deine Hausaufgaben, aber es ist interessant, weil die Problemstellung fehlerhaft ist. Es kann nicht so wie es ist beantwortet werden, da ein wichtiger Teil der Information fehlt: die Anzahl der Kerne, die die Maschine zur Verfügung hat. Das Ausführen von mehr Threads als die von Kernen verbessert den Durchsatz nicht. Unter der Annahme, J Jobs, T Gewinde und C-Kerne, die Zeit für sie ausgegeben ist

Zeit = J x 15 msec/min (T, C) + J 75 x ms/3

Lösen für J pro Sekunde:

Rate = 1000/(15/min (T, C) + 25)