[so2] [Test 10] Explicatie intrebarea 3

Cosmin Ratiu cosminratiu at gmail.com
Mon May 7 18:11:30 EEST 2012


2012/5/7 Catalin Nicutar <catalin.nicutar at cti.pub.ro>:
>
> Cred ca explicatia pentru intrebarea 3 de la cursul 10 este incorecta.
> Explicatia trateaza numarul de octeti trimisi de placa de retea din
> care scade dimensiunea antetelor.
>
> Conform enuntului, se cerea "viteza maximă de transmisie a unei
> aplicații din user-space". Dat fiind ca se foloseste TSO, MTU-ul NU
> intra in ecuatie: intre userspace si placa de retea circula "pachete"
> de 64K (cantitate impusa de MAX_SKB_FRAGS). In plus, aceste
> "pachete" NU includ antetul: intr-adevar, tcp_sendmsg copiaza date
> din userspace in SKB-uri, nu discuta despre antete.

Salut,

Ce ai zis tu e corect, dar cred ca nu ai inteles 100% enuntul.

Sa zicem ca rata de pachete e R (50k), MTU = M (1500) si lungimea
headerelor tcp si ip e h (40, nu 20 cum e in raspuns).

Sa o luam de sus, dinspre aplicatie:
Aplicatia trimite x bytes/s, asta e necunoscuta.
Datele astea sunt trimise in pachete mari de lungime L (incluzand
headerele, uzual 64K) catre placa de retea.
Vor fi N1 = x / (L - h) pachete mari pe secunda (se adauga headerele
in fata fiecarui pachet).
Pt. fiecare pachet mare, vor fi trimise pe fir N2 = (L - h) / (M - h)
pachete (fiecare pachet mare e spart in bucati si i se adauga
headerele din pachetul original).
=> N2 = N1 * (L - h) / (M - h) pachete mici pe secunda. Dupa
simplificari rezulta ca N2 = x / (M - h).
Punand conditia ca N2 == R rezulta ca x = R * (M - h).
Cu datele din intrebare, imi iese x = 73 MB/s.

Interesant e ca de fapt TSO nu afecteaza viteza maxima cu care poate
trimite aplicatia, daca se face abstractie de ocuparea procesorului.
Dupa cum se vede, rezultatul nu depinde de L deloc.
Deci cand e TSO dezactivat, L == M si o sa obtinem aceeasi rata.

Cosmin.


More information about the so2 mailing list