rpc.kmountd & ypserv.output strange behaviour

Thierry Danis (danis@sagem.fr)
Fri, 26 Mar 1999 17:24:47 +0100


Hello,

I've seen a (maybe) strange behaviour using rpc.kmountd and ypserv
on a 2.2.4 (and 2.2.2-acxxx, 2.2.3-acxxx) NFS server machine :

I have a 2.2.4 (2.2.2-acxxx, 2.2.3-acxxx, or Solaris as well) NFS client
machine automounting the NFS server.

Sometimes, [auto]mounting the NFS partition on the server takes a lot
of time. 'top' shows that ypserv and rpc.kmountd are taking between
20% and 30% each. And it lasts for seconds, if not minutes.

I have straced both processes and here what I get :

============================ ypserv ====================================
open("/etc/hosts.allow", O_RDONLY) = 8
fstat(8, {st_mode=S_IFIFO|S_ISUID|S_ISGID|S_ISVTX|043, st_size=0, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000b000
read(8, "#\n# hosts.allow\tThis file desc"..., 4096) = 180
read(8, "", 4096) = 0
close(8) = 0
munmap(0x4000b000, 4096) = 0
open("/etc/hosts.deny", O_RDONLY) = 8
fstat(8, {st_mode=S_ISUID|05, st_size=0, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000b000
read(8, "#\n# hosts.deny\tThis file descr"..., 4096) = 364
read(8, "", 4096) = 0
close(8) = 0
munmap(0x4000b000, 4096) = 0
fork() = 28496
--- SIGCHLD (Le processus `enfant' a terminé.) ---
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 28496
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 28495
wait4(-1, 0xbffff610, WNOHANG, NULL) = -1 ECHILD (No child processes)
sigreturn() = ? (mask now [])
--- SIGCHLD (Le processus `enfant' a terminé.) ---
wait4(-1, 0xbffff610, WNOHANG, NULL) = -1 ECHILD (No child processes)
sigreturn() = ? (mask now [])
select(1024, [1 2], NULL, NULL, NULL) = 1 (in [1])
recvfrom(1, "7\363xJ\0\0\0\0\0\0\0\2\0\1\206\244"..., 8800, 0, {sin_family=AF_INET, sin_port=htons(781), sin_addr=inet_addr("127.0.0.1")}, [16]) = 84
stat("spmo.sagem.fr", {st_mode=0, st_size=0, ...}) = 0
getpid() = 195
........................ and it loops back to the first 'open' .............

======================= rpc.kmountd =======================================
open("/etc/hosts", O_RDONLY) = 8
fcntl(8, F_GETFD) = 0
fcntl(8, F_SETFD, FD_CLOEXEC) = 0
fstat(8, {st_mode=0, st_size=0, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000c000
read(8, "127.0.0.1 localhos"..., 4096) = 100
read(8, "", 4096) = 0
close(8) = 0
munmap(0x4000c000, 4096) = 0
open("/var/yp/binding/spmo.sagem.fr.2", O_RDONLY) = 8
readv(8, [{")\3", 2}, {"\1\0\0\0\177\0\0\1\3\35\0\0", 12}], 2) = 14
close(8) = 0
gettimeofday({922463953, 4198}, NULL) = 0
getpid() = 8687
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 8
bind(8, {sin_family=AF_INET, sin_port=htons(625), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
ioctl(8, FIONBIO, [1]) = 0
fcntl(8, F_SETFD, FD_CLOEXEC) = 0
sendto(8, "7\373\237X\0\0\0\0\0\0\0\2\0\1\206"..., 88, 0, {sin_family=AF_INET, sin_port=htons(797), sin_addr=inet_addr("127.0.0.1")}, 16) = 88
select(1024, [8], NULL, NULL, {5, 0}) = 1 (in [8], left {5, 0})
recvfrom(8, "7\373\237X\0\0\0\1\0\0\0\0\0\0\0"..., 8800, 0, {sin_family=AF_INET, sin_port=htons(797), sin_addr=inet_addr("127.0.0.1")}, [16]) = 64
close(8) = 0
........................ and it loops back to the first 'open' .............
============================================================================

The /etc/hosts.deny and /etc/hosts.allow are empty files (except
the comments).

The /etc/exports file looks like :
/u0 @urd(rw)
/u1 @urd(rw)

I am running ypserv as a secondary NIS server on the NFS box.
knfsd 1.2 (same thing with the previous versions of knfsd).

Distribution : RH 5.2 with the appropriate patches.

A+

-- 
	Thierry Danis
	danis@spmo.sagem.fr

- 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/