diff options
author | kib <kib@FreeBSD.org> | 2013-06-03 17:36:43 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2013-06-03 17:36:43 +0000 |
commit | da0ffbeb0e4ca70cbf67d19e93ab1c5af518aa23 (patch) | |
tree | 6c8e6ab4df29f7ea9fd88e33f90b39cfafc72f67 /sys/kern | |
parent | 9b5da9961260ea6402d6dfb925c5b6f9a2bddaa7 (diff) | |
download | FreeBSD-src-da0ffbeb0e4ca70cbf67d19e93ab1c5af518aa23.zip FreeBSD-src-da0ffbeb0e4ca70cbf67d19e93ab1c5af518aa23.tar.gz |
Be more generous when donating the current thread time to the owner of
the vnode lock while iterating over the free vnode list. Instead of
yielding, pause for 1 tick. The change is reported to help in some
virtualized environments.
Submitted by: Roger Pau Monn? <roger.pau@citrix.com>
Discussed with: jilles
Tested by: pho
MFC after: 2 weeks
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_subr.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 1f4a838..e64f379 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -4693,7 +4693,7 @@ restart: if (mp_ncpus == 1 || should_yield()) { TAILQ_INSERT_BEFORE(vp, *mvp, v_actfreelist); mtx_unlock(&vnode_free_list_mtx); - kern_yield(PRI_USER); + pause("vnacti", 1); mtx_lock(&vnode_free_list_mtx); goto restart; } |