[OpenAFS] openafs-1.0.2 on SuperSPARC (Solaris 8 32Bit)
Andreas Sindermann
sinder@thp.Uni-Koeln.DE
Thu, 25 Jan 2001 17:52:28 +0100 (MET)
Hi,
after successfully compiling and installing openafs-1.0.2 on a Sun SS20
(SuperSPARC) running Solaris 8 (32Bit) an interesting problem occurs:
/bin/ls doesn't seem to work fine on AFS directories whereas calling
programs from paths within the AFS tree is no problem. A truss output
reveals the following:
17:16:23 sun20 28 >uname -a
SunOS sun20 5.8 Generic_108528-03 sun4m sparc SUNW,SPARCstation-20
17:16:32 sun20 29 >/bin/pwd
/afs/rrz.uni-koeln.de/vol/gnu/bin/sun4m_51
17:22:40 sun20 30 >truss /bin/ls
execve("/usr/bin/ls", 0xEFFFF564, 0xEFFFF56C) argc = 1
stat("/usr/bin/ls", 0xEFFFF2B0) = 0
[...]
lstat64(".", 0xEFFFF408) = 0
open64(".", O_RDONLY|O_NDELAY) = 3
fcntl(3, F_SETFD, 0x00000001) = 0
fstat64(3, 0xEFFFF348) = 0
brk(0x0002EC98) = 0
brk(0x00030C98) = 0
getdents64(3, 0x0002EBD0, 1048) = 1048
brk(0x00030C98) = 0
brk(0x00038C98) = 0
[...continuing forever with brk() calls...]
The process size of /bin/ls (checked using 'top') is growing to
hundreds of MBs in a few seconds.
Whereas on a Solaris 7 (32Bit) system running an older 'official'
Transarc version (afs3.5 3.11) it looks like this:
17:43:40 sun80 15 >truss /bin/ls
execve("/usr/bin/ls", 0xFFBEF56C, 0xFFBEF574) argc = 1
stat("/usr/bin/ls", 0xFFBEF260) = 0
[...]
lstat64(".", 0xFFBEF410) = 0
open64(".", O_RDONLY|O_NDELAY) = 3
fcntl(3, F_SETFD, 0x00000001) = 0
fstat64(3, 0xFFBEF350) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
getdents64(3, 0x0002DAF0, 1048) = 1048
brk(0x0002E9C8) = 0
brk(0x000389C8) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
getdents64(3, 0x0002DAF0, 1048) = 1048
brk(0x000389C8) = 0
brk(0x000409C8) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
getdents64(3, 0x0002DAF0, 1048) = 1048
brk(0x000409C8) = 0
brk(0x0004A9C8) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
getdents64(3, 0x0002DAF0, 1048) = 1048
brk(0x0004A9C8) = 0
brk(0x000549C8) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
brk(0x000549C8) = 0
brk(0x0005C9C8) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
getdents64(3, 0x0002DAF0, 1048) = 1048
getdents64(3, 0x0002DAF0, 1048) = 1048
brk(0x0005C9C8) = 0
brk(0x0005E9C8) = 0
brk(0x0005E9C8) = 0
brk(0x000669C8) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
brk(0x000669C8) = 0
brk(0x000709C8) = 0
getdents64(3, 0x0002DAF0, 1048) = 1048
getdents64(3, 0x0002DAF0, 1048) = 80
getdents64(3, 0x0002DAF0, 1048) = 0
close(3) = 0
ioctl(1, TCGETA, 0xFFBED52C) = 0
write(1, " F 2 C ".., 45) = 45
write(1, " U n a m e ".., 44) = 44
write(1, " [ ".., 48) = 48
write(1, " _ g s 2 . 6 1 ".., 42) = 42
write(1, " a 2 p ".., 39) = 39
[...]
write(1, " l e m a c s ".., 44) = 44
write(1, " l e m a c s - 1 9 . 1 0".., 42) = 42
write(1, " l e s s ".., 41) = 41
llseek(0, 0, SEEK_CUR) = 139389
_exit(0)
I.e. only a few brk() calls due to the large number of files in the
directory and some getdents64() calls for reading the dir entries.
Now to something completely different :-)
I'd like to suggest not to set the path to the compiler
/opt/SUNWspro/bin explicitely in src/config/Makefile.sun4x_5[5-8],
as cc might be installed in a different location (e.g. at our site
several versions of Sun Compilers are being installed in parallel).
Just an idea...
Thanks for your patience,
Andreas
--
Andreas Sindermann fon: +49 (221) 470-4201
Institut fuer Theoretische Physik fax: +49 (221) 470-5159
Universitaet zu Koeln
Zuelpicher Str. 77 mailto:sinder@thp.Uni-Koeln.DE
D-50937 Koeln, Germany http://www.thp.uni-koeln.de/~sinder