[so2] [Test 10] Explicatie intrebarea 3
Catalin Nicutar
catalin.nicutar at cti.pub.ro
Mon May 7 18:49:50 EEST 2012
Salut,
2012/5/7 Cosmin Ratiu <cosminratiu at gmail.com>:
>
> cred ca nu ai inteles 100% enuntul.
>
De acord, in mod cert nu am interpretat asa.
> 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.
>
Da, e interesant ce spui insa punand conditia R = N2 calculezi cat poate
interfata sa emita, constransa de MTU. Ce poate aplicatia sa trimita in
stiva e determinat de skb_shinfo.
In plus, nu sunt sigur daca e OK sa scazi la N1 pe h din L. Asa cum am
inteles codul (e destul de stufos si ma pot insela) cand se foloseste
GSO antetele (spatiul rezervat pentru ele) nu apar decat in regiunea
liniara si toti cei 64K neliniari sunt rezervati pentru date utile. Deci prin
kernel se plimba SKB-uri de 64K + change. Din nou, ma pot insela.
In concluzie cred ca e defectuoasa exprimarea: trebuia specificat ce
sunt acele 50K pachete pe secunda si unde se masoara. Multumesc insa
sincer pentru raspuns.
Catalin
More information about the so2
mailing list