I thought I give an update describing my solution in case other users
hit the same problem.
Thanks to Trond and Erez, I was able to solve the problem for my
RH 5.2 box as follows:
1. Download am-utils-6.0.1s5.tar.gz from
ftp://shekel.mcl.cs.columbia.edu/pub/am-utils/snapshots/
Build and install it; note that will install amd in /usr/local/sbin/amd.
(You amd guys should really consider distributing RPMs.)
In any event, I simply changed /etc/rc.d/init.d to start
/usr/local/sbin/amd instead of /usr/sbin/amd.
My amd created mounts now have these options:
envy:/server/home/gback /.a/envy/server/home/gback nfs rw,addr=envy 0 0
The 8,192 byte write test finishes now instantaneously as it should.
2. For my mount points defined in amd.conf, I added:
opts:=rw,intr,nodevs,noconn,wsize=8192,rsize=8192, \
acregmin=3,acregmax=60,acdirmin=30,acdirmax=60
to my /defaults rule.
In my eyes, this makes NFS under Linux at least usable.
Great!
I did another comparison for copying a large file onto the same server.
FreeBSD 3.0:
(~/tmp) > time cp /z/gback/linux-2.2.3.tar.gz linux-2.2.3.tar.gz-f
0.008u 0.776s 0:05.85 13.1% 61+260k 0+1807io 0pf+0w
Linux 2.2.3:
(~/tmp) > time cp /opt/downloads/kernels/linux-2.2.3.tar.gz .
0.000u 0.500s 0:13.96 3.5% 0+0k 0+0io 3314pf+0wg
This is for a 13228966 byte file.
It takes about 6 seconds on FreeBSD 3.0, about 14 seconds on Linux.
I assume this may be because the write size is only 4096 as opposed to 8192?
I use the debug option again and see:
peerless kernel: NFS: 17984 schedule_write_request (async)
peerless kernel: nfs: write(tmp/linux-2.2.3.tar.gz(1634869), 4096@4653056)
peerless kernel: NFS: nfs_updatepage(tmp/linux-2.2.3.tar.gz 4096@4653056, sync=0)
peerless kernel: NFS: find_write_request(6/1634869, c02bfe38)
peerless kernel: NFS: create_write_request(tmp/linux-2.2.3.tar.gz, 4653056+4096)
peerless kernel: NFS: append_write_request(c40980cc, c3c08a40)
Indeed, 4096 byte writes.
I guess this leaves two questions:
a) is this a write gathering/write back issue (that would be so if
cp issued writes smaller than 8K -- unlikely, I'd say)
b) is this another "wsize" issue. How do I get amd to mount an fs with
wsize=8192 (given that I don't control and therefore cannot change
the NIS maps amd reads?)
Thanks a lot!
- Godmar
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/