[so] Tema 5, Windows, thread pooling

Cosmin Ratiu cosminratiu at gmail.com
Tue Jun 9 17:52:11 EEST 2009


2009/6/9 Mihai Carnu <mihaicarnu at yahoo.com>

> Buna,
>
> In enuntul temei se precizeaza ca trebuie sa folosim mecanismele cele mai
> scalabile oferite de sistemul de operare. In cazul Windows 2003, asta
> inseamna ca tre sa folosim thread pool-ul oferit de sistem
> (BindIoCompletionCallback()) ?
>

O privire rapida pe MSDN pare sa confirme ca BindIoCompletionCallback e
aceeasi Marie cu alta palarie, adica seamana foarte mult cu mecanismul de
completion ports, cu diferenta ca pool-ul de threaduri pare sa fie
manage-uit automat si nu mai exista un obiect explicit de completion port
vizibil user-ului.

In acelasi timp, se pare ca pool-ul de threaduri de care se vorbeste poate
creste pana la 500 de threaduri si asta nu e foarte bine. Numar mai mare de
thread-uri poate insemna performanta mai proaste daca sunt multe cereri in
paralel pt. ca se pierde timp cu context switching-ul. Ideal este cand pe
fiecare core ruleaza un singur thread worker care proceseaza incontinuu.
Atunci procesoarele sunt ocupate 100% cu munca utila. De-asta am precizat in
enuntul temei ca nr. de threaduri trebuie sa fie egal cu numarul de
procesoare din sistem.

Tema a fost creata in ideea de a se folosi completion ports cu pool de
threaduri explicit creat de voi.
Daca ai timp si esti curios, poti face o comparatie intre cele 2 metode,
chiar ar fi interesant de aflat care e mai scalabila in conditii extreme.

Cosmin.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090609/5970ae9b/attachment.htm>


More information about the so mailing list