tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Reclaiming vnodes
Hi,
On Sep,Monday 14 2009, at 5:55 AM, matthew green wrote:
i'm still not entirely sure what the point of this patch is. i
understand it helps zfs, but i don't understand why or how. i'm
also curious what sort of testing you've done. i do not believe
that testing in qemu is sufficient. how does it affect systems
that recycle vnodes a lot, such as older systems running a build?
I do not have such system yet. What this patch does is that it uses
another thread to reclaims vnodes, this way vnodes are reclaimed in
different context than are allocated.
Current:
Vnodes are allocated only if there are no vnodes on a free_list. If
there is a free vnode on a list it will be recycled which actually
means that it will call VOP_RECLAIM.
In zfs there is a problem with calling getnewvnode form zfs_zget, in
some cases getnewvnode pick vnode from a free list and call
VOP_RECLAIM. This can lead to deadlock because VOP_RECLAIM can try to
lock same mutex as was hold by zfs_zget. This can't be easily fixed if
we do not want to touch and change whole zfs locking protocol.
With Patch:
Vnodes are only allocated and there is no vnode recycling. If number
of used vnodes in a system is > than kern.vnodes_num_hiwat(in percents
of maxvnodes) vrele thread will be woken up and it will start with
releasing of free vnodes until number of used vnodes is < than
kern.vnodes_num_lowat.
If we really want to push FS locking down to FS level something like
this patch will be needed in a future to simplify locking inside of fs.
please get a bunch more testing done with this before commiting,
comparing loads that *would* have led to recycle with the old
scheme.
Ok I will try to do some more tests tomorrow.
some comments no the code itself:
Thanks I have fixed them.
Regards
Adam.
Home |
Main Index |
Thread Index |
Old Index