Andrew DeFaria <(E-Mail Removed)> wrote:
> [-- text/plain, encoding 7bit, charset: UTF-8, 32 lines --]
> Here's my setup:
> * QWest DSL 7 Mbps package coming from the wall to an ActionTech modem.
> * Connected to the ActionTech is a Linksys Wireless G broadband
> router (WRT54G).
> * Wired to the Linksys are two PC's running Ubuntu 9.04 (One server
> - one desktop)
> I'm also running Windows 7 in VMWare on the Ubuntu desktop where I run a
> piece of software called PlayOn. PlayOn gets video streams from the
> internet and transcodes them and broadcasts them via UPNP to the PS3.
> The videos are stuttering.
> Measuring network performance from the Ubuntu desktop using
> speedtest.net yields a pretty strong 5-6 Mbps download. Measuring
> performance from the PS3 using speedtest.net from the PS3's browser
> yields a weak 0.8 - 2.0 Mbps (sometimes I see ~ 4-5 Mbps - during that
> time PlayOn is, of course, fine).
> Questions:
> * Does this sort of measurement make sense? Are their other/better
> ways to measure this?
> * Why is my network performance so bad coming from the PS3?
> * How can I determine the bottleneck and correct it.
Might take some packet traces if you can.
Some boilerplate I trot-out - much may be preaching to the choir, but
still
Some of my checklist items when presented with assertions of poor
network performance, in no particular order:
*) Is *any one* CPU on either end of the transfer at or close to 100%
utilization? A given TCP connection cannot really take advantage
of more than the services of a single core in the system, so
average CPU utilization being low does not a priori mean things are
OK.
*) Are there TCP retransmissions being registered in netstat
statistics on the sending system? Take a snapshot of netstat -s -t
from just before the transfer, and one from just after and run it
through beforeafter from
ftp://ftp.cup.hp.com/dist/networking/tools:
netstat -s -t > before
transfer or wait 60 or so seconds if the transfer was already going
netstat -s -t > after
beforeafter before after > delta
*) Are there packet drops registered in ethtool -S statistics on
either side of the transfer? Take snapshots in a matter similar to
that with netstat.
*) Are there packet drops registered in the stats for the switch(es)
being traversed by the transfer? These would be retrieved via
switch-specific means.
*) What is the latency between the two end points. Install netperf on
both sides, start netserver on one side and on the other side run:
netperf -t TCP_RR -l 30 -H <remote>
and invert the transaction/s rate to get the RTT latency. There
are caveats involving NIC interrupt coalescing settings defaulting
in favor of throughput/CPU util over latency:
ftp://ftp.cup.hp.com/dist/networking...cy_vs_tput.txt
but when the connections are over a WAN latency is important and
may not be clouded as much by NIC settings.
This all leads into:
*) What is the *effective* TCP (or other) window size for the
connection. One limit to the performance of a TCP bulk transfer
is:
Tput <= W(eff)/RTT
The effective window size will be the lesser of:
a) the classic TCP window advertised by the receiver (the value in
the TCP header's window field shifted by the window scaling
factor exchanged during connection establishment (why one wants
to get traces including the connection establishment...)
this will depend on whether/what the receiving application has
requested via a setsockopt(SO_RCVBUF) call and the sysctl limits
set in the OS. If the application does not call
setsockopt(SO_RCVBUF) then the Linux stack will "autotune" the
advertised window based on other sysctl limits in the OS.
b) the computed congestion window on the sender - this will be
affected by the packet loss rate over the connection, hence the
interest in the netstat and ethtool stats.
c) the quantity of data to which the sending TCP can maintain a
reference while waiting for it to be ACKnowledged by the
receiver - this will be akin to the classic TCP window case
above, but on the sending side, and concerning
setsockopt(SO_SNDBUF) and sysctl settings.
d) the quantity of data the sending application is willing/able to
send at any one time before waiting for some sort of
application-level acknowledgement. FTP and rcp will just blast
all the data of the file into the socket as fast as the socket
will take it. scp has some application-layer "windowing" which
may cause it to put less data out onto the connection than TCP
might otherwise have permitted. NFS has the maximum number of
outstanding requests it will allow at one time acting as a
defacto "window" etc etc etc
--
web2.0 n, the dot.com reunion tour...
these opinions are mine, all mine; HP might not want them anyway...

feel free to post, OR email to rick.jones2 in hp.com but NOT BOTH...