[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.