[issue884] Performance/memory problems under filesystem IO load

Nicolas Thery nthery at gmail.com
Wed Dec 19 01:52:12 PST 2007

Oops.  I've just noticed that block size is 4096k in the original post
and not 4096.  I did all my experiments with the latter (there is a
paste bug in my previous email).

2007/12/19, Nicolas Thery <nthery at gmail.com>:
> 2007/12/14, Hasso Tepper <sinknull at crater.dragonflybsd.org>:
> > All tests are done with this command:
> > dd if=/dev/zero of=./file bs=4096k count=1000
> [...]
> > There is one more strange thing in running these tests. I looked at memory
> > stats in top before and after running dd.
> >
> > Before:
> > Mem: 42M Active, 40M Inact, 95M Wired, 304K Cache, 53M Buf, 795M Free
> > After:
> > Mem: 70M Active, 679M Inact, 175M Wired, 47M Cache, 109M Buf, 1752K Free
> FWIW, I observe similar figures.  I also noticed that deleting ./file
> and waiting a bit restores memory to the "before" state.
> The size increase in the wired pool can be reproduced more simply with:
> sysctl vm.stats.vm.v_wire_count                          # A
> dd if=/dev/zero of=./file bs=4096k count=1
> sysctl vm.stats.vm.v_wire_count                          # B
> rm ./file
> sysctl vm.stats.vm.v_wire_count                          # C
> A == C && B == A + 1
> I traced this with gdb.  The additional wired page is part of a struct
> buf (b_xio) instance tied to the ./file vnode.   I reckon this vnode
> stays cached (namecache?) when the dd process ends and deleting ./file
> forces destruction of the vnode.
> AFAIU wired pages can not be reclaimed by the pager when memory is
> low.  So is it normal to keep b_xio pages wired when they are "just"
> cached in a vnode (i.e. no ongoing r/w operation)?

More information about the Bugs mailing list