On Wed, Sep 04, 2019 at 05:45:24PM +0300, Slawa Olhovchenkov wrote:
> On Tue, Sep 03, 2019 at 06:01:06PM -0400, Mark Johnston wrote:
> > > Mostly problem I am see at this
> > > work -- very slowly vm_page_free(). May be currenly this is more
> > > speedy...
> > 
> > How did you determine this?
> 
> This is you guess:

So was the guess correct?  If so, IMO the real solution is to avoid kmem_*
for data buffers and use ABD instead.

> ======
> >         while ((slab = SLIST_FIRST(&freeslabs)) != NULL) {
> >                 SLIST_REMOVE(&freeslabs, slab, uma_slab, us_hlink);
> >                 keg_free_slab(keg, slab, keg->uk_ipers);
> >         }
> > 2019 Feb  2 19:49:54.800524364       zio_data_buf_1048576  1032605 
> > cache_reclaim limit      100 dom 0 nitems     1672 imin      298
> > 2019 Feb  2 19:49:54.800524364       zio_data_buf_1048576  1033736 
> > cache_reclaim recla      149 dom 0 nitems     1672 imin      298
> > 2019 Feb  2 19:49:54.802524468       zio_data_buf_1048576  3119710 
> > cache_reclaim limit      100 dom 1 nitems        1 imin        0
> > 2019 Feb  2 19:49:54.802524468       zio_data_buf_1048576  3127550 
> > keg_drain2
> > 2019 Feb  2 19:49:54.803524487       zio_data_buf_1048576  4444219 
> > keg_drain3
> > 2019 Feb  2 19:49:54.838524634       zio_data_buf_1048576 39553705 
> > keg_drain4
> > 2019 Feb  2 19:49:54.838524634       zio_data_buf_1048576 39565323 
> > zone_reclaim:return
> >
> > 35109.486 ms for last loop, 149 items to freed.
> 
> 35ms to free 149MB (38144 4KB pages), so roughly 1us per page.  That
> does seem like a lot, but freeing a page (vm_page_free(m)) is much
> more expensive than freeing an item to UMA (i.e., uma_zfree()).
> Most of that time will be spent in _kmem_unback().
> ======
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to