From: Dave Chinner <david@fromorbit.com>
To: Jeff Liu <jeff.liu@oracle.com>
Cc: "xfs@oss.sgi.com" <xfs@oss.sgi.com>
Subject: Re: [PATCH] xfs: fix the wrong new_size/rnew_size at xfs_iext_realloc_direct()
Date: Wed, 25 Sep 2013 09:44:44 +1000 [thread overview]
Message-ID: <20130924234444.GD26872@dastard> (raw)
In-Reply-To: <52418C3A.9080506@oracle.com>
On Tue, Sep 24, 2013 at 08:57:30PM +0800, Jeff Liu wrote:
> On 09/24/2013 07:56 AM, Dave Chinner wrote:
>
> > On Mon, Sep 23, 2013 at 12:47:23PM +0800, Jeff Liu wrote:
> >> Hi Dave,
> >>
> >> On 09/23/2013 08:56 AM, Dave Chinner wrote:
> >>
> >>> On Sun, Sep 22, 2013 at 04:25:15PM +0800, Jeff Liu wrote:
> >>>> From: Jie Liu <jeff.liu@oracle.com>
> >>>>
> >>>> At xfs_iext_realloc_direct(), the new_size is changed by adding
> >>>> if_bytes if originally the extent records are stored at the inline
> >>>> extent buffer, and we have to switch from it to a direct extent
> >>>> list for those new allocated extents, this is wrong. e.g,
....
> >> Actually, what I want to say is that we don't need to perform
> >> "new_size += ifp->if_bytes;" again at xfs_iext_realloc_direct()
> >> because the new_size at xfs_iext_add() already be the size of
> >> extents after adding, just as the variable comments is mentioned.
> >
> > Yes, I understand.
> >
> > What I'm really asking is that whether there is any specific impact
> > you can measure as a result of changing the initial allocation size?
> > i.e. are there workloads where there is a measurable difference in
> > memory footprint or noticable performance impact of having to
> > reallocate the direct array more frequently as files grow and/or
> > shrink?
>
> Not yet observed any performance matter, but IMO this problem can cause
> difference in dynamic memory footprint for creating a large number of
> files with 3 extents and with additional kmalloc/kfree overhead for 4
> extents file.
>
> For the first case, the current code will allocate buffers from
> kmalloc-128 slab cache rather than kmalloc-64, hence it would occupy
> more memory until being dropped from the cache, e.g,
>
> # Create 10240 files with 3 extents
> for ((i=0; i<10240; i++))
> do
> xfs_io -f -c 'truncate 10m' /xfs/test_$i
> xfs_io -c 'pwrite 0 1' /xfs/test_$i 2>&1 >>/dev/null
> xfs_io -c 'pwrite 1m 1' /xfs/test_$i 2>&1 >>/dev/null
> xfs_io -c 'pwrite 5m 1' /xfs/test_$i 2>&1 >>/dev/null
> done
>
> # cat /proc/slab_info
> # name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab>...
>
> # Non-patched -- before creating files
> kmalloc-128 5391 6176 128 32 1
> kmalloc-64 21852 25152 64 64 1
>
> # After that -- the number of objects in 128 slab increased significantly, while
> there basically no change in 64 slab
> kmalloc-128 15381 15488 128 32 1
> kmalloc-64 21958 25088 64 64 1
>
>
> # patched -- before creating files
> kmalloc-128 5751 7072 128 32 1
> kmalloc-64 21420 24896 64 64 1
>
> After after
> kmalloc-128 6155 6688 128 32 1
> kmalloc-64 30464 30464 64 64 1
>
> With this patch, we can reduce the memory footprint for this particular scenario.
Ok, so it's used the kmalloc-64 slab much more effectively and not
touched the kmalloc-128 slab. Ok, so thats a measurable difference ;)
>
> For the 2nd case, i.e, 4 extents file. It need to resize the direct extent list
> to add the fourth extent because rnew_bytes is be re-initialized to 64 at the
> beginning of xfs_iext_realloc_direct(), however the ifp->if_real_bytes is 128...
...
> # The number of kmalloc calls
> Default Patched
> 110364 103471
And that demonstrates the impact in that the array is downsized as
the array grows. Ok, I'm convinced there is a net win here :)
Reviewed-by: Dave Chinner <dchinner@redhat.com>
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-09-24 23:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-22 8:25 [PATCH] xfs: fix the wrong new_size/rnew_size at xfs_iext_realloc_direct() Jeff Liu
2013-09-23 0:56 ` Dave Chinner
2013-09-23 4:47 ` Jeff Liu
2013-09-23 23:56 ` Dave Chinner
2013-09-24 12:57 ` Jeff Liu
2013-09-24 23:44 ` Dave Chinner [this message]
2013-10-01 22:33 ` Ben Myers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130924234444.GD26872@dastard \
--to=david@fromorbit.com \
--cc=jeff.liu@oracle.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.