[OpenAFS] Re: Performance problems seem to be coming back

Dale Pontius pontius@btv.ibm.com
Thu, 15 Sep 2011 08:05:07 -0400

On 09/12/2011 12:29 PM, Andrew Deason wrote:
> On Mon, 12 Sep 2011 11:31:56 -0400
> Dale Pontius<pontius@btv.ibm.com>  wrote:
>> Maybe I'm missing what rxdebug really does, but I think it sounds just
>> about perfect.  I presume that the OpenAFS clients and servers have
>> packet queues for moving data, and rxdebug just drops packets into
>> those queues like any other part of afs.  If the other parts of afs
>> queue are in "distress" for whatever reason, all of the other packets
>> in that queue will share in the distress, including my rxdebug
>> requests.  In this case, that's what I want - to be told about
>> "distress" between the server and me, and for the first approximation
>> I'm not too concerned about the reason, just that it exists.
> There are a large number of reasons an AFS fileserver will not properly
> service a request from a client; none of the "ping"s we've discussed
> will catch them all. What Jeffrey said will cover most of it, but if you
> want to test "will the fileserver give me data", then your "ping" should
> be asking the fileserver for some data through that client.
> If you want to test "will the fileserver give anybody data", you can use
> the afsio and afscp tools to do a one-shot read-the-file operation on a
> file you already know to exist.
> But if the existing rxdebug -version is detecting what you want, then
> fine, just use that. By making a more ping-like tool, I meant, having it
> report dropped packets, RTT, etc (right now it doesn't tell you at all
> what's going on). What it actually does on the wire is already fine for
> testing Rx stack availability.
I've been fooling around more with rxdebug, trying to measure 
performance.  It can be a bit tough at work, because when the LAN is 
running well, it runs very, very well.  (and when it's bad, it's 
horrid)  So much of the time the things I try to measure are in the 
mud.  Today for other reasons it was good to work from home, so 
fire-drills aside, it's "afs performance day".  My packets are going all 
over creation, between Comcast and my employer's WAN, so my numbers will 
always stay out of the mud.

For a first cut, I used "rxdebug localhost 7001 -peer" to get a list of 
servers, then "time rxdebug -v -servers ${serverName}" to measure some 
sort of round-trip time.  I know there will be extra stuff in that time, 
but in relative terms it ought to be indicative, at the very least.  My 
execution times were nearly always under 10mS, generally 5mS or less.

Then I kept reading man pages and suggestions here, and came up with 
"rxdebug -servers localhost -port 7001 -rxstats", which appeared to give 
round-trip times.  This sounded like a better option.  Of course since I 
first did this at work, all of the rtt's were zero.

Cut to today...  For one specific server, using the "time rxdebug" 
method I get:
Trying x.xx.xx.xxx (port 7000):
AFS version: Base configuration afs3.6 2.68

real    0m0.063s
user    0m0.000s
sys     0m0.001s
Using the "-rxstats" method on that same server I get:
Peer at host x.xx.xx.xxx, port 7000
     ifMTU 1444    natMTU 1444    maxMTU 1444
     packets sent 8152    packet resends 2
     bytes sent high 0 low 216058
     bytes received high 0 low 0
     rtt 0 msec, rtt_dev 0 msec
     timeout 3.000 sec
There's obviously a little bit of distress there I presume, because 2 
packets were resent.  Also, on my first run of this code, my timeout was 
2 sec, and here it has increased to 3 sec.  but the "rtt" and "rtt_dev" 
fields are still 0.

Is there some other flag I should be feeding rxdebug, or a different way 
I should be trying to make this measurment?  On the same note, the 
"afsio" and "afscp" appear to be missing from my installation.  When you 
talk about "one-shot read-the-file" do you mean that those commands 
bypass the cache?  Having the cache there seems to me to muddy 
file-based performance measurements, which was why I liked the idea of 
an rxdebug pseudo-ping.

Dale Pontius

Dale Pontius
Senior Engineer
IBM Corporation
Phone: (802) 769-6850
Tie-Line: 446-6850
email: pontius@us.ibm.com

This e-mail and its attachments, if any, may contain confidential and privileged material for the sole use of the intended recipient. Any review, use, distribution or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive for the recipient), please contact the sender by reply e-mail and delete all copies of this message from your system without copying it and notify sender of the misdirection by reply e-mail.