[so] Tema 4 linux

cosminratiu at gmail.com cosminratiu at gmail.com
Fri Dec 15 19:43:01 EET 2006


Nu o sa primesti niciodata 100 de MB intr-un foc la un recv, in primul rand
pentru ca nu ai tu buffer de 100 de MB (sper :) ), si in al doilea rand
pentru ca prin natura tcp-ului nu o sa iti tina el atatea date in bufferele
lui, o sa se umple la un moment dat si nu o sa mai accepte date de la
transmitator pana nu mai citesti din date tu, user-ul.

Cat despre partea cu operatiile aio si socketi, s-ar putea sa gresesc.
Oricum, informatiile pe internet sunt contradictorii. Ceea ce este sigur
este ca nu se folosesc operatiile aio pentru partea de retea, ci se
foloseste epoll. Oricum, acuma e prea tarziu pentru a schimba enuntul/reface
testele/etc. Deci folositi epoll pt retea si aio_read/aio_write+semnale pe
partea de disk si totul intr-un singur thread.

On 12/15/06, Catalin Iacob <iacobcatalin at gmail.com> wrote:
>
>  Cosmin Ratiu mi-a raspuns acum cateva zile:
> "Salut.
>
> Da, banuiesti bine, nu merg operatiile asincrone pe
> socketi...deocamdata[...] in momentul de fata, aio_read si aio_write merg
> doar pe fisiere. In concluzie, pe partea de server o sa ai un thread care
> foloseste epoll ca sa iti dai seama cand poti citi/scrie fara sa blochezi. "
>
> Deci daca folosim recv pe socket (ca aio_read nu merge) si primim multe
> date (gen 100MB) in server, eu ziceam doar ca o sa dureze multicel - vreo
> cateva minute -  si ca deci sunt probleme de eficienta si scalabilitate, nu
> ca recv se blocheaza nedefinit pana vine ceva pe socket.
>
> Cercetand putin am gasit la adresa
> http://www-128.ibm.com/developerworks/linux/library/l-async/index.html
> fraza "The aio_read function requests an asynchronous read operation for a
> valid file descriptor. The file descriptor can represent a file, a socket,
> or even a pipe.". Asa ca acum sunt total confuz: se poate sau nu folosi
> aio_read direct pe socket-ul serverului?
>
> Octavian Purdila wrote:
>
> On Friday 15 December 2006 18:17, Catalin Iacob wrote:
>
>  Salut
>
> Eu tot am cateva nelamuriri legate de tema pe linux(sper sa fie ultimele
> si sa ma apuc apoi de treaba):
>
> 1. fisierele trebuie impartite in bucati sau nu? - ma gandesc ca nu prea
> e normal sa trimiti un fisier de 100MB tot odata din moment ce serverul
> va sta blocat (din moment ce se fac read/write blocante) un timp de
> ordinul minutelor daca se comunica prin Internet; in timpul asta
> clientii se vor aduna la coada si daca se va depasi parametrul 2 backlog
> al functiei listen conexiunea le va fi refuzata
>
>      Serverul nu trebuie sa se blocheze la operatiile de read/write. Din cauza asta
> folositi epoll si aio_*.
>
> Doar clientul se poate bloca.
>
> tavi
>
>
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20061215/e0865a7a/attachment.html


More information about the so mailing list