-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.csiden.org/r/150/#review438
-----------------------------------------------------------



usr/src/uts/i86pc/vm/htable.c
<https://reviews.csiden.org/r/150/#comment370>

    This all looks good, but I'd like to ask a favor:
    When I pushed 4110 (panic while reaping htable_cache) upstream, I forgot to 
add a copyright.  It should be:
    
    Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
    
    Would you mind adding that to htable.c with your push?
    
    Thanks!
    Gordon


- Gordon Ross


On Jan. 5, 2015, 11:47 p.m., Matthew Ahrens wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.csiden.org/r/150/
> -----------------------------------------------------------
> 
> (Updated Jan. 5, 2015, 11:47 p.m.)
> 
> 
> Review request for OpenZFS Developer Mailing List and Christopher Siden.
> 
> 
> Bugs: 5498
>     https://www.illumos.org/projects/illumos-gate//issues/5498
> 
> 
> Repository: illumos-gate
> 
> 
> Description
> -------
> 
> Author: Matthew Ahrens <[email protected]>
> Date:   Tue Dec 30 11:01:02 2014 -0800
> 
>     5498 kmem_reap does one xcall per page
>     Reviewed by: Adam Leventhal <[email protected]>
>     Reviewed by: George Wilson <[email protected]>
>     Reviewed by: Paul Dagnelie <[email protected]>
>     Reviewed by: Dan Kimmel <[email protected]>
>     
> We see performance problems due to kmem_reap() of ZFS's zio buf caches. The 
> kmem_reap() causes a lot of cross-calls to tear down TLB entries, which is 
> slow. It can also cause latency bubbles in concurrent zfs_read/zfs_write 
> operations.
> 
> The problem is reliably triggered when a workload switches between accessing 
> files of different blocksizes. This causes kmem to need to free lots of 
> buffers of the old size in order to allocate ones of the new size.
> 
> We can improve on this in some cases by using one xcall per slab, to tear 
> down all the virtually contiguous pages used to back the slab. The 
> performance benefit will be most noticeable when reaping larger (e.g. 128KB) 
> caches.
> 
> 
> Diffs
> -----
> 
>   usr/src/uts/i86pc/vm/htable.c 665eb9d41407924de0db2f1781213b7f7a3364e3 
>   usr/src/uts/i86pc/vm/htable.h c0f5639c60c8c5e4ff9a3c8f8960fb6e877c7bd7 
>   usr/src/uts/i86pc/vm/hat_i86.c 64e1c2fb46b278bf45070d8fabb06486b7347751 
>   usr/src/uts/i86pc/vm/hat_i86.h 03317b35e849720f5c0115cc3dc86c5613759f71 
> 
> Diff: https://reviews.csiden.org/r/150/diff/
> 
> 
> Testing
> -------
> 
> ztest
> zfs test suite
> internal link: http://jenkins/job/zfs-precommit/1466/console
> 
> performance test with the following script:
> 
> ```
> #!/bin/bash -x
> 
> if [[ ! -f /test/big/file ]]; then
>         zfs create -o recordsize=128k test/big
>         zfs create -o recordsize=8k test/small
>         dd if=/dev/zero of=/test/big/file bs=1024k count=200000
>         dd if=/dev/zero of=/test/small/file bs=1024k count=200000
> fi
> 
> /home/mahrens/reap.d &
> dd if=/test/big/file of=/dev/null bs=1024k
> dd if=/test/big/file of=/dev/null bs=1024k
> 
> dd if=/test/small/file of=/dev/null bs=1024k
> dd if=/test/small/file of=/dev/null bs=1024k
> ```
> 
> results: 4X performance improvement in kmem_reap of 128K cache.
> 
> Have not tested with __xpv (fully paravirtualized Xen).  Can anyone help me 
> with this testing?  I don't have a setup for this.  Build artifacts are 
> available at:
> 
> http://mahrens.org/xcall/packages.tgz
> http://mahrens.org/xcall/proto.tgz
> 
> 
> Thanks,
> 
> Matthew Ahrens
> 
>

_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to