Re: Regarding Kirkwood cpu support
On Tue, Mar 17, 2009 at 09:34:18AM +0100, Thomas Boehne wrote:
> > On the 6281 at 1.2 GHz, I get wire speed TCP transmit when GSO is
> > enabled, and wire speed TCP receive when LRO is enabled (which
> > mv643xx_eth supports since recently -- it's currently in net-next).
> Wirespeed sounds extremely interesting. I guess the CPU load is
> near 100% then, correct? Thanks for your input so far.
CPU load on wire speed TCP receive is ~70% when copying everything
to userspace (i.e. a userland recv() loop on the socket). When
discarding all the data in kernelspace (e.g. splice() to /dev/null,
with a hack to make sure that the linear part of skbuffs doesn't get
copied into a separate area first or with a patch to make mv643xx_eth
receive into pages), it's closer to ~30%. This are measured with
cyclesoak with MTU=1500, and are pretty consistent.
CPU load on wire speed TCP transmit is pretty variable, due to GSO
behaving eratically when there isn't enough CPU to transmit wire
speed without using GSO. (I.e. it seems that GSO will always converge
into a stable state where it will saturate the wire at the same low CPU
usage if the CPU is powerful enough to transmit wire speed without using
GSO, but if you only get ~90MB/s-ish without using GSO, it seems that
there are different stable states you can get into depending on
burstiness of ACKs from the other side and some other factors. So
sometimes it converges to 2 "real" segments per GSO skbuff and stays
there, sometimes to 3 "real" segments per GSO skbuff, etc.) I sent
some emails about this to netdev@ some time ago, but didn't find a
good way of dealing with this yet.