leak of the vnodes

Kostik Belousov kostikbel at gmail.com
Mon Apr 5 18:59:30 UTC 2010


On Mon, Apr 05, 2010 at 10:36:19PM +0200, Petr Salinger wrote:
> >>
> >>>>BTW, the 7.3 seems be unaffected by this.
> >>
> >>Confirmed, the whole build of gcc-4.3 ends with
> >>
> >>kern.maxvnodes: 100000
> >>kern.minvnodes: 25000
> >>vfs.freevnodes: 22070
> >>vfs.wantfreevnodes: 25000
> >>vfs.numvnodes: 39907
> >>debug.vnlru_nowhere: 0
> >>
> >>while for 8.0 kernel even 120000 in vfs.numvnodes does not suffice.
> >BTW, can you check latest RELENG_8 kernel, or HEAD, for the issue ?
> 
> Both are affected, the ddb output bellow is from svn206142 for HEAD.
> 
> >>Are all vnodes in some mountpoint ? What pipes and sockets ?
> >I do not quite understand the question.
> >
> >Pipes and sockets are not vnodes, and I want to see what type of
> >filesystem (UFS or devfs) leaks.
> 
> I lowered max to get problem earlier
> 
> kern.maxvnodes: 40000
> kern.minvnodes: 25000
> vfs.freevnodes: 0
> vfs.wantfreevnodes: 25000
> vfs.numvnodes: 37934
> debug.vnlru_nowhere: 83
> 
> I would expect that sum of mnt_nvnodelistsize should be vfs.numvnodes.
> The sum is at about 3400, but the vfs.numvnodes is at about 38000.
> Is my expectation correct ?
Not quite, reclaimed vnode is removed from mp list. Can you check
that vmstat -z | grep VNODE output coincides with sysctl vfs.numvnodes ?

Also, can you unmount linprocfs before the test and see whether it
leaks as before ?

Another thing to try is set sysctl debug.disablefullpath to 1.

Thanks.
> 
> Petr
> 
> db> show mount
> 
> 0xffffff0003939be0 /dev/ad0s2a on / (ufs)
> 0xffffff000393a000 devfs on /dev (devfs)
> 0xffffff00039398e8 linprocfs on /proc (linprocfs)
> 0xffffff0009b9d000 /dev/ad0s2d on /opt/sid/build (ufs)
> 
> db> show mount 0xffffff0003939be0
> 
> 0xffffff0003939be0 /dev/ad0s2a on / (ufs)
>     mnt_flag = LOCAL, ROOTFS
>     mnt_kern_flag = EXTENDED_SHARED, MPSAFE, LOOKUP_SHARED
>     mnt_opt = rw, fstype, fspath, from, errmsg, noro
>     mnt_stat = { version=537068824 type=7 flags=0x0000000000005000 
> bsize=2048 iosize=16384 blocks=9233079 bfree=1720773 bavail=982127 
> files=2402302 ffree=2211006 syncwrites=0 asyncwrites=0 syncreads=0 
> asyncreads=0 namemax=255 owner=0 fsid=[1208030997, -638345611] }
>     mnt_cred = { uid=0 ruid=0 }
>     mnt_ref = 647
>     mnt_gen = 1
>     mnt_nvnodelistsize = 647
>     mnt_writeopcount = 0
>     mnt_noasync = 0
>     mnt_maxsymlinklen = 120
>     mnt_iosize_max = 131072
>     mnt_hashseed = 3875541360
>     mnt_secondary_writes = 0
>     mnt_secondary_accwrites = 1674383
>     mnt_gjprovider = NULL
> 
> db> show mount 0xffffff000393a000
> 
> 0xffffff000393a000 devfs on /dev (devfs)
>     mnt_flag = MULTILABEL, LOCAL
>     mnt_kern_flag = MPSAFE
>     mnt_opt =
>     mnt_stat = { version=537068824 type=2 flags=0x0000000004001000 bsize=0 
> iosize=0 blocks=0 bfree=0 bavail=0 files=0 ffree=0 syncwrites=0 
> asyncwrites=0 syncreads=0 asyncreads=0 namemax=255 owner=0 fsid=[33619712, 
> 2] }
>     mnt_cred = { uid=0 ruid=0 }
>     mnt_ref = 36
>     mnt_gen = 1
>     mnt_nvnodelistsize = 36
>     mnt_writeopcount = 0
>     mnt_noasync = 0
>     mnt_maxsymlinklen = 0
>     mnt_iosize_max = 65536
>     mnt_hashseed = 1577461787
>     mnt_secondary_writes = 0
>     mnt_secondary_accwrites = 0
>     mnt_gjprovider = NULL
> 
> 
> db> show mount 0xffffff00039398e8
> 
> 0xffffff00039398e8 linprocfs on /proc (linprocfs)
>     mnt_flag = LOCAL
>     mnt_kern_flag = MPSAFE
>     mnt_opt = fstype, fspath, from, errmsg
>     mnt_stat = { version=537068824 type=8 flags=0x0000000000001000 
> bsize=4096 iosize=4096 blocks=1 bfree=0 bavail=0 files=1 ffree=0 
> syncwrites=0 asyncwrites=0 syncreads=0 asyncreads=0 namemax=255 owner=0 
> fsid=[134283009, 8] }
>     mnt_cred = { uid=0 ruid=0 }
>     mnt_ref = 393
>     mnt_gen = 1
>     mnt_nvnodelistsize = 393
>     mnt_writeopcount = 0
>     mnt_noasync = 0
>     mnt_maxsymlinklen = 0
>     mnt_iosize_max = 65536
>     mnt_hashseed = 486483318
>     mnt_secondary_writes = 0
>     mnt_secondary_accwrites = 0
>     mnt_gjprovider = NULL
> 
> 
> db> show mount 0xffffff0009b9d000
> 
> 0xffffff0009b9d000 /dev/ad0s2d on /opt/sid/build (ufs)
>     mnt_flag = LOCAL
>     mnt_kern_flag = EXTENDED_SHARED, MPSAFE, LOOKUP_SHARED
>     mnt_opt = rw, fstype, fspath, from, errmsg, noro
>     mnt_stat = { version=537068824 type=7 flags=0x0000000000001000 
> bsize=2048 iosize=16384 blocks=9683239 bfree=4555857 bavail=3781198
> files=2520062 ffree=1888868 syncwrites=0 asyncwrites=0 syncreads=0 
> asyncreads=0 namemax=255 owner=0 fsid=[1208030997, -1215882613] }
>     mnt_cred = { uid=0 ruid=0 }
>     mnt_ref = 2297
>     mnt_gen = 1
>     mnt_nvnodelistsize = 2296
>     mnt_writeopcount = 0
>     mnt_noasync = 0
>     mnt_maxsymlinklen = 120
>     mnt_iosize_max = 131072
>     mnt_hashseed = 1634023874
>     mnt_secondary_writes = 1
>     mnt_secondary_accwrites = 1332980
>     mnt_gjprovider = NULL
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20100405/0f0aa5aa/attachment.pgp


More information about the freebsd-hackers mailing list