Date: Thu, 08 Jan 1998 14:42:10 +0100 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru> Cc: freebsd-current@FreeBSD.ORG Subject: Re: Almost memory leak in getnewvnode Message-ID: <1138.884266930@critter.freebsd.dk> In-Reply-To: Your message of "Thu, 08 Jan 1998 14:55:25 %2B0300." <199801081155.OAA17797@tejblum.dnttm.rssi.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
I'm currently trying to convince John Dyson that he shouldn't put things on the freelist unless he wants them there. That would eliminate this entire tmp_list thing. I pressume John will do something about this problem one way or another. Poul-Henning In message <199801081155.OAA17797@tejblum.dnttm.rssi.ru>, Dmitrij Tejblum write s: >getnewvnode() very rare reuse vnodes from the freelist and allocate a new >vnode instead. It is because the way it use to move vnodes to the end of >the freelist is too simple. The following patch reduced number of vnodes in >my >system in several times. > >--- vfs_subr.c.00 Wed Jan 7 18:55:36 1998 >+++ vfs_subr.c Thu Jan 8 14:08:13 1998 >@@ -373,7 +373,8 @@ > */ > vp = NULL; > } else { >- TAILQ_FOREACH(vp, &vnode_free_list, v_freelist) { >+ for(vp = TAILQ_FIRST(&vnode_free_list); vp; vp = tvp) { >+ tvp = TAILQ_NEXT(vp, v_freelist); > if (!simple_lock_try(&vp->v_interlock)) > continue; > if (vp->v_usecount) >@@ -395,7 +396,7 @@ > } > } > >- TAILQ_FOREACH(tvp, &vnode_tmp_list, v_freelist) { >+ while(tvp = TAILQ_FIRST(&vnode_tmp_list)) { > TAILQ_REMOVE(&vnode_tmp_list, tvp, v_freelist); > TAILQ_INSERT_TAIL(&vnode_free_list, tvp, v_freelist); > simple_unlock(&tvp->v_interlock); > > > > -- Poul-Henning Kamp FreeBSD coreteam member phk@FreeBSD.ORG "Real hackers run -current on their laptop."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1138.884266930>