woensdag 9 december 2009

Rekenen en doorlooptijd van threads

Vandaag aan het rekenen geslagen met de uitkomsten...en een beetje brainstormen...
We hebben :
  • een desktop met 2 CPU's, welke ons 50 actieve threads geeft. (standaard geeft .Net ons 25 Threads per CPU)
  • Een performance gemiddelde van 10K Request/s te halen.
Hoe lang mag een thread duren voordat we in de knel komen het aantal actieve threads ?

10000 Request/s = 10 Request/ms

Als we dus 50 threads hebben, mag elke thread maximaal 5 milliseconde actieve doorlooptijd hebben.... *ouch*

Genoeg voor file IO en geheugen acties, maar als er Databases bij komen kijken is dat toch wel lastig, want dan gaat het allemaal wat langzamer. En in dit geval denk ik niet dat het zal helpen om de DB actie asynchroon uit te voeren, want ergens zal er een thread moeten wachten op een antwoord, en we hebben een tekort aan threads....

De ThreadPool zou een thread vrij moeten geven als hij ergens op wacht, een kijken wat de impact is bij kortlopende DB acties. Maar daar moet ik eerst even een aparte DB server voor neerzetten.

To Be Continued...

Geen opmerkingen:

Een reactie posten