[OpenAFS] Catastrophic r/w performances on Linux OpenAFS client

lstep@adequat.net lstep@adequat.net
Fri, 2 Jan 2004 12:46:31 +0100


Hello,

I've installed a test OpenAFS server (debian packages, v1.2.10, dbserver and 
fileserver on a same machine) and a client on another machine (debian 
package, v1.2.10). I made a volume for one of my user (the only one :-) and 
I'm trying to make it have some decent performance.

Everything works fine except it's exceptionnaly slow. The client local cache 
seems to be correctly configured:

bash-2.05b$ fs getcacheparms
AFS using 13 of the cache's available 100000 1K byte blocks.

But when I try to create a file, I see a bottleneck where it never goes above 
5KB/s! In fact, it seems locked to 5KB/s
When trying to create a simple file of 1Mo:

bash-2.05b$ dd if=/dev/zero of=fichier.raw bs=1024k count=1
1+0 records in
1+0 records out
1048576 bytes transferred in 190.847965 seconds (5494 bytes/sec)

Or even a file of 256k:

bash-2.05b$ dd if=/dev/zero of=fichier.raw bs=256k count=1
1+0 records in
1+0 records out
262144 bytes transferred in 46.871588 seconds (5593 bytes/sec)

I tried to create a file up to 2777 bytes, where it still makes 5KB/s. Below, 
it creates the file at 653Ko/s, but I guess it's not really representative, 
as the filesize is so small.
But, for any size, it *always* transfer the data exactly at 5KB/s.

I even activated the storebehind option, but it didn't change anything:

bash-2.05b$ fs storebehind -allfiles 2048 -verbose
Default store asynchrony is 2048 kbytes.

Making a tcpdump on the client machine, I noticed a lot of trafic, the packet 
sizes set to the maximum (I think):

10:03:59.451896 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:03:59.452007 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:03:59.453560 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:03:59.453730 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:03:59.453777 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:03:59.960355 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:03:59.961905 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:03:59.962009 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:03:59.963557 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:03:59.963736 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:03:59.963784 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.470368 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.471921 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:04:00.472072 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.473632 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:04:00.473760 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.473806 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.980346 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.981915 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:04:00.982026 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.983590 192.168.0.7.7000 > 192.168.0.36.7001:  rx ack (65) (DF)
10:04:00.983681 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)
10:04:00.983711 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (516) (DF)
10:04:01.490370 192.168.0.36.7001 > 192.168.0.7.7000:  rx data (1440) (DF)

(192.168.0.36 being the client machine, and 192.168.0.7 being the OpenAFS 
server).

The options I set where the one set by default on the afs.conf file created by 
the debian package script (I added the chunksize, without any change):

/usr/sbin/afsd -stat 2800 -dcache 2400 -daemons 5 -volumes 128 -chunksize 20 
-dynroot -fakestat -afsdb -nosettime

I'd like to know if there is some parameter that I might have forgotten/not 
set that locks the bandwidth to 5KB/s, or how can I debug that problem, I 
don't know of any way/tools to see what's wrong.

Thanks for your help,
Luc