[pso] spin lock vs paged pool

Octavian Purdila pso@cursuri.cs.pub.ro
Sat, 27 Mar 2004 22:25:04 +0200


On Saturday 27 March 2004 21:27, Cibu Cristian wrote:
> In enunt suntem incurajati pe buna dreptate sa ne protejam de race-uri
> folosind spin-lock-uri. Pe de alta parte, driverul trebuie sa aloce dinamic
> memorie, pentru ca stiva e mica. La fel memoria nonpaged e si ea resursa
> scumpa, deci nu prea merge sa punem in ea vectorii cu informatiile despre
> piduri si rutinele apelurilor de sistem. deci ramane paged pool. pai atunci

Pai hai sa vedem cat de multa memorie consumi: 260 apeluri de sistem * 16 
octeti (ar trebui sa ajunga) = vreo 5K, adica 2 pagini) +

8 octeti pe fiecare proces monitorizat (ar trebui sa ajunga) x 1000 procese = 
vreo 8K adica 2 pagini

total = 4 pagini 

Sigur ca daca vrei, poti sa folosesti memorie paged (si semafoare), dar 
parerea mea este ca nu are sens sa economisesti 4 pagini de memorie permanent 
rezidenta, mai ales ca:

- daca ai memorie destula atunci chiar nu mai conteaza
- daca intri in low-memory, atunci probabilitatea ca paginile tale sa fie 
evacuate creste, deci creste si latenta cu care servesti apelurile de sistem; 
cum erai in low-memory sistemul nu se misca prea bine nici inainte, dar 
acum...

In fine, cele 4 pagini teoretice pot sa ajunga la 5-6, dar nu mai mult, pentru 
ca nu exista fragmentare atunci se aloca zone de memorie de dimensiune mica
(<256) si care e o putere a lui 2.