Slocate hates me [SOLVED] (was: Re: Prelink hates me)

Simon Perreault nomis80 at nomis80.org
Sat Apr 10 20:03:20 UTC 2004


Ok, I found out what the problem was. The culprit is not prelink. It is 
slocate. It appeared to be prelink because both are run by cron approximately 
at the same time. BTW, I do not use swap space.

When /etc/cron.daily/slocate.cron is run, the memory is gradually filled up. 
I'm not talking cache here. After killing slocate when memory was about 
completely filled up:

[nomis80 at dhcp101 nomis80]$ free -m
             total       used       free     shared    buffers     cached
Mem:           755        736         18          0        149         50
-/+ buffers/cache:        537        217
Swap:            0          0          0

As you can see from this output of top, memory usage currently does not 
justify 537 MB of used memory:

 6816 nomis80   15   0 22720  22M 15712 S     0.0  2.9   0:01   0 firefox-bin
 3535 nomis80   16   0 21484  20M 15140 S     0.0  2.7   0:07   0 kmail
 3533 nomis80   15   0 17452  17M 13628 S     0.0  2.2   0:00   0 kopete
 3556 nomis80   15   0 13280  12M 10880 S     4.3  1.7   0:01   0 kdeinit
 3518 nomis80   15   0 13172  12M 10796 S     0.0  1.7   0:01   0 kdeinit
 3363 root      15   0 32060  12M  2488 S     1.1  1.6   0:10   0 X
 3510 nomis80   16   0 12712  12M 10456 S     0.0  1.6   0:00   0 kdeinit
 3493 nomis80   15   0 11828  11M  9984 S     0.0  1.5   0:00   0 kdeinit
 5449 nomis80   15   0 11584  11M  9988 S     0.0  1.4   0:00   0 kdeinit
 3514 nomis80   16   0 11424  11M  9628 S     0.0  1.4   0:01   0 kdeinit
 3516 nomis80   16   0 10900  10M  9340 S     0.0  1.4   0:00   0 kdeinit
 3520 nomis80   16   0 10640  10M  9156 S     0.0  1.3   0:00   0 kdeinit
 3526 nomis80   15   0 10520  10M  8532 S     0.0  1.3   0:00   0 korgac
 3499 nomis80   15   0 10500  10M  9076 S     0.0  1.3   0:00   0 kdeinit
 3524 nomis80   15   0 10356  10M  8952 S     0.0  1.3   0:00   0 kdeinit
 3936 nomis80   16   0 10308  10M  8044 S     0.0  1.3   0:02   0 kdeinit
 3527 nomis80   15   0 10108 9.9M  8096 S     0.0  1.3   0:00   0 kgpg
 3538 nomis80   15   0 10020 9.8M  7456 S     0.0  1.2   0:00   0 kalarmd
 3513 nomis80   15   0  9544 9540  8300 S     0.0  1.2   0:00   0 kdeinit
 3530 nomis80   16   0  9432 9432  8220 S     0.0  1.2   0:00   0 kdeinit
 3490 nomis80   16   0  7836 7836  7380 S     0.0  1.0   0:00   0 kdeinit
 3508 nomis80   15   0  6996 6996  4180 S     0.0  0.9   0:02   0 artsd
 3487 nomis80   16   0  6612 6612  6308 S     0.0  0.8   0:00   0 kdeinit
 3484 nomis80   16   0  5728 5728  5568 S     0.0  0.7   0:00   0 kdeinit
 3302 xfs       16   0  4004 4004   980 S     0.0  0.5   0:01   0 xfs

Scott Sloan suggested that /dev/shm might get filled up. It does not look like 
it does:

[root at dhcp101 shm]# cd /dev/shm
[root at dhcp101 shm]# ls -a
.  ..
[root at dhcp101 shm]# du -h
0       .

Unmounting /dev/shm has no effect.

[root at dhcp101 /]# umount /dev/shm
[root at dhcp101 /]# free -m
             total       used       free     shared    buffers     cached
Mem:           755        737         17          0        150         50
-/+ buffers/cache:        536        218
Swap:            0          0          0

I tried allocating memory as Matias Feliciano suggested. After a lot of disk 
trashing (is that even normal?), this is what free showed:

[nomis80 at dhcp101 nomis80]$ free -m
             total       used       free     shared    buffers     cached
Mem:           755         93        661          0          1         11
-/+ buffers/cache:         80        674
Swap:            0          0          0

So this procedure effectively liberated the memory. This is weird.

Just for fun, I started again updatedb from slocate.cron. Again, the memory 
was filled up. And now, /dev/shm was unmounted. I noticed that the filling up 
happens gradually, but quite fast. So I suspect that one filesystem is 
causing this and should not be scanned. Which filesystems do I have mounted?

[nomis80 at dhcp101 nomis80]$ mount
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda1 on /mnt/windows type ntfs (rw)
nomis80.intranet:/home/public on /mnt/public type nfs (rw,addr=192.168.1.254)

Which filesystems are skipped by updatedb?

/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e 
"/tmp,/var/tmp,/usr/tmp,/afs,/net"

Maybe it is ntfs eh? So I add ntfs to -f. Liberate with huge malloc'ing. Rerun 
slocate.cron.

[nomis80 at dhcp101 nomis80]$ free -m
             total       used       free     shared    buffers     cached
Mem:           755        400        354          0         80         54
-/+ buffers/cache:        264        490
Swap:            0          0          0

Excellent! That worked.

So it was all Microsoft's fault. Or was it the fault of unsupported software? 
Or maybe it was simply a bug in updatedb, or maybe in the kernel? I don't 
care, I fixed it!

-- 
Simon Perreault <nomis80 at nomis80.org> -- http://nomis80.org





More information about the fedora-devel-list mailing list