* 1be41b78: +18% increased btrfs write throughput
@ 2014-01-03 15:54 fengguang.wu
2014-01-03 16:07 ` Chris Mason
0 siblings, 1 reply; 2+ messages in thread
From: fengguang.wu @ 2014-01-03 15:54 UTC (permalink / raw)
To: Josef Bacik; +Cc: linux-btrfs, LKML, lkp
Hi Josef,
FYI. We are doing 0day performance tests and happen to notice that
btrfs write throughput increased considerably during v3.10-11 time
frame:
v3.10 v3.11 v3.12 v3.13-rc6
--------------- ------------------------- ------------------------- -------------------------
50619 ~ 1% +17.0% 59209 ~ 2% +18.8% 60159 ~ 2% +20.5% 61007 ~ 0% lkp-ws02/micro/dd-write/11HDD-JBOD-cfq-btrfs-1dd
50619 +17.0% 59209 +18.8% 60159 +20.5% 61007 TOTAL iostat.sdd.wkB/s
and it's contributed by
commit 1be41b78bc688fc634bf30965d2be692c99fd11d
Author: Josef Bacik <jbacik@fusionio.com>
AuthorDate: Wed Jun 12 13:56:06 2013 -0400
Commit: Josef Bacik <jbacik@fusionio.com>
CommitDate: Mon Jul 1 08:52:28 2013 -0400
Btrfs: fix transaction throttling for delayed refs
Dave has this fs_mark script that can make btrfs abort with sufficient amount of
ram. This is because with more ram we can keep more dirty metadata in cache
which in a round about way makes for many more pending delayed refs. What
happens is we end up not throttling the transaction enough so when we go to
commit the transaction when we've completely filled the file system we'll
abort() because we use all of the space in the global reserve and we still have
delayed refs to run. To fix this we need to make the delayed ref flushing and
the transaction throttling dependant upon the number of delayed refs that we
have instead of how much reserved space is left in the global reserve. With
this patch we not only stop aborting transactions but we also get a smoother run
speed with fs_mark and it makes us about 10% faster. Thanks,
Reported-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
fs/btrfs/ctree.h | 2 ++
fs/btrfs/extent-tree.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++----
fs/btrfs/transaction.c | 24 +++++++++-----------
3 files changed, 69 insertions(+), 18 deletions(-)
time.elapsed_time
740 ++------------------*------------------------------------------------+
*.. .*.*..* *..*.*..*. |
720 ++ *.*..*.*. *..*.*..*. .*..*. .*..*. .*. |
| *. *..* *. *..*
700 ++ |
| |
680 ++ |
| |
660 ++ |
| |
640 ++ |
| |
620 ++ O O |
O O O O O O O O O O O O O O O O O O O O O O O O |
600 ++-------------------------------------------------------------------+
time.voluntary_context_switches
100000 ++------------------*-*----*--------------------------------------+
90000 ++ *. .*..*.*. *. *.. |
*. .. *..* .*.. .*..*.*.*..*.*..*.*..* .*
80000 ++* * * + .* |
70000 ++ *. |
| |
60000 ++ |
50000 ++ |
40000 ++ |
| |
30000 ++ |
20000 ++ |
| |
10000 ++ |
0 O+O--O-O--O-O--O-O--O-O-O--O-O--O-O--O-O--O-O-O--O-O--O-O--O-O----+
time.file_system_inputs
800000 ++--------------------*----*--------------------------------------+
| *. .*..*.*..* *. *.. |
700000 *+ .. *..* .*.. .*..*.*.*..*.*..*.*..* .*
| * * * + .* |
600000 ++ *. |
500000 ++ |
| |
400000 ++ |
| |
300000 ++ |
200000 ++ |
| |
100000 ++ |
| |
0 O+O--O-O--O-O--O-O--O-O-O--O-O--O-O--O-O--O-O-O--O-O--O-O--O-O----+
time.file_system_outputs
900000 ++----------------------------------------------------------------+
| *.*.. .*.*. .*. .*.*.*..*. .* |
800000 *+ .. *.*..*.*. *. *.. .*..*.*. *..*.*. + .*.*
700000 ++* * *. |
| |
600000 ++ |
500000 ++ |
| |
400000 ++ |
300000 ++ |
| |
200000 ++ |
100000 ++ |
| |
0 O+O--O-O--O-O--O-O--O-O-O--O-O--O-O--O-O--O-O-O--O-O--O-O--O-O----+
perf-stat.page-faults
6.6e+06 ++---------------------------------------------------------------+
| |
6.4e+06 ++ .*.*.. .*.. |
*. .*.*..*.*.*. *.* *. .*. .*..*. |
6.2e+06 ++*. *. *..*.* *..*.*.*..*.*..*.*
| |
6e+06 ++ |
| |
5.8e+06 ++ |
| |
5.6e+06 ++ |
| |
5.4e+06 ++O O |
O O O O O O O O O O O O O O O O O O O O O O O O |
5.2e+06 ++---------------------------------------------------------------+
perf-stat.minor-faults
6.6e+06 ++---------------------------------------------------------------+
| |
6.4e+06 ++ .*.*.. .*.. |
*. .*.*..*.*.*. *.* *. .*. .*..*. |
6.2e+06 ++*. *. *..*.* *..*.*.*..*.*..*.*
| |
6e+06 ++ |
| |
5.8e+06 ++ |
| |
5.6e+06 ++ |
| |
5.4e+06 ++O O |
O O O O O O O O O O O O O O O O O O O O O O O O |
5.2e+06 ++---------------------------------------------------------------+
vmstat.io.bi
600 ++-----------*-*--*-*--*--*----*-------------------------------------+
| .. *. + |
500 *+.*.*..*.* *..*.*..*.*.. .*.*..*.*..*.*..*.*..*
| *. |
| |
400 ++ |
| |
300 ++ |
| |
200 ++ |
| O O |
| |
100 ++ O |
O O O O O O O O O O O O O O O O O O O O O O |
0 ++-----------------------------------------------O-------------------+
vmstat.io.bo
660000 ++----------------------------------------------------------------+
| O O O O O O O O O |
640000 O+ O O O O O O O O O O O O O |
| O O O |
620000 ++ |
| |
600000 ++ |
| |
580000 ++ |
| |
560000 ++ .*.|
| .*. .*.*..*. .*..*.*..*.*..*.*. *
540000 *+*..*.*..*. .*.*.. .*. *. * |
| *..*.*..* * |
520000 ++----------------------------------------------------------------+
iostat.sde.avgrq-sz
720 ++-------------------------------------------------------------------+
| O O |
700 ++ O O O O O |
680 O+ O O O O O O O O O O O |
| O O O O O O O |
660 ++ |
| |
640 ++ |
| |
620 ++ |
600 ++ |
| |
580 ++ .*.*..*.*.. .*.*.. .*.. .*. *. .*..|
*..*.*..*.*. *. *.*.. .*..* *. *..*. .. *..* *
560 ++----------------------------------*-------------------*------------+
iostat.sde.avgqu-sz
125 ++-------------------------------------------------------------------+
| O |
120 ++ O O |
O O O O O O O O O O O O O O O O |
| O O O O O O O |
115 ++ |
| |
110 ++ |
| |
105 ++ |
| .*.. |
| .*. .* *..*.*..* .*. .*. .*.*.. .*..*
100 *+ *.. .*. + .*..*.*.. + *. *. *. * |
| * *..*.*. * |
95 ++-------------------------------------------------------------------+
iostat.sdf.avgrq-sz
720 ++-------------------------------------------------------------------+
| O O |
700 ++ O O O O O O |
680 O+ O O O O O O O O |
| O O O O O O O O O |
660 ++ |
| |
640 ++ |
| |
620 ++ |
600 ++ |
| .* |
580 ++ *.*.. .*..*. + .*.. .*..*.*.. *..|
|.. .*..*.*..* *..*.*.. .*..* *..*.*..* + *
560 *+------*---------------------------*---------------------------*----+
iostat.sdg.avgrq-sz
720 ++-------------------------------------------------------------------+
| O O |
700 O+ O O O O |
680 ++ O O O O O O O O O O O O O |
| O O O O O O |
660 ++ |
640 ++ |
| |
620 ++ |
600 ++ |
| .*.. .*.. |
580 ++ .*..* *.*..*. .*..*.*..*. .*.*..*..*.*..*.*..* .*..*
560 ++.* *. *..*.*. * |
*. |
540 ++-------------------------------------------------------------------+
iostat.sdd.avgrq-sz
720 ++-------------------------------------------------------------------+
| O |
700 O+ O O O O O O O O |
680 ++ O O O O O O O O O O O O |
| O O O O |
660 ++ |
640 ++ |
| |
620 ++ |
600 ++ |
| |
580 ++ .*..*.*..*.*.. .*..*..*.*.. .*.. .*.*..*.*.. .*.. .*..*
560 *+.* * *.*.. .*..* *. * * |
| * |
540 ++-------------------------------------------------------------------+
iostat.sdd.avgqu-sz
120 ++-------------------------------------------------------------------+
| O O O O O O O O O O O O |
115 O+ O O O O O O O O O O O O O |
| |
| |
110 ++ |
| |
105 ++ |
| |
100 ++ *. *.. .*. .*.*..*. .*.*..|
|.. *..*.*..*.*..*. .*..*. .*.. + *. *. *. *
* *. *..* .*..* |
95 ++ * |
| |
90 ++-------------------------------------------------------------------+
iostat.sdh.avgrq-sz
720 ++-------------------------------------------------------------------+
| O O |
700 O+ O O O O O O O |
680 ++ O O O O O O O O O O O O |
| O O O O |
660 ++ |
640 ++ |
| |
620 ++ |
600 ++ |
| |
580 ++.*.*..*.*.. .*..*.*.. .*.*..*. .*.*.. .*. .*. .*.*.. .*..*
560 *+ * *. *..*.*. *. *. *. * |
| |
540 ++-------------------------------------------------------------------+
iostat.sdh.avgqu-sz
120 ++-------------------------------------------------------------------+
| O O O O O O O O |
| O O O O O O O O O O |
115 O+ O O O O O O |
| O |
| |
110 ++ |
| |
105 ++ |
| |
| |
100 ++.*. *.. .*.. *. .*. .*..|
*. *..*. .*.. .*.. + * .. *. *..*.*..* *
| *..* *.*..*..* .*..* * |
95 ++-----------------------------*-------------------------------------+
iostat.sdi.avgrq-sz
720 ++-------------------------------------------------------------------+
| O O |
700 O+ O O O O O O O O |
680 ++ O O O O O O O O O O |
| O O O O O |
660 ++ |
640 ++ |
| |
620 ++ |
600 ++ |
| .*. .*.. .*..|
580 ++ .*.*..*.*..*. .*. *..*. *.. .*..*..*.*..*. .* * |
560 *+.*.*. *. *.. + * *. *
| * |
540 ++-------------------------------------------------------------------+
iostat.sdi.avgqu-sz
125 ++-------------------------------------------------------------------+
| |
120 ++ O |
| O O O O O O O |
O O O O O O O O O O O |
115 ++ O O O O O O |
| O |
110 ++ |
| |
105 ++ |
| |
| .*.. .*..|
100 ++ *.*..*.*..*. .*.. .*..*.*..*..*.*..* *. .* |
|.. *..*.*. *.*..*.*..* *. *
95 *+-------------------------------------------------------------------+
iostat.sdj.avgqu-sz
120 ++---------------------------------------------------------O---------+
| O O O O O O O |
115 O+ O O O O O O O O O O O O O |
| O O O O |
| |
110 ++ |
| |
105 ++ |
| * |
100 ++.*.*..*. *.. + + .*.. *..|
*. *..*. + *.*.. + *..*.*..* + *
| *..*. .*..*.*..*.*..* * * |
95 ++ *. |
| |
90 ++-------------------------------------------------------------------+
iostat.sdk.avgrq-sz
720 ++-------------------------------------------------------------------+
| |
700 ++ O O O O O O O O O |
680 O+ O O O O O O |
| O O O O O O O O O |
660 ++ O |
| |
640 ++ |
| |
620 ++ |
600 ++ |
| |
580 ++.*. .*.. .*.. *.. *. .*.. .*. .*. .*.. .*..*
*. *..* * *. .. *. .. *.. .*..* *. *. *..* * |
560 ++------------------*-------*-------*--------------------------------+
iostat.sdk.avgqu-sz
125 ++-------------------------------------------------------------------+
| |
120 ++ O |
O O O O O O O O O O O O |
115 ++ O O O O O O O O O O O O O |
| |
110 ++ |
| |
105 ++ |
| .*.. |
100 ++.*. .*. .*.. .*..* .*.*..*. .*
*. *. *..*. .*..*. .* * *. *..*.*..*.*. |
95 ++ *..*.*. *. |
| |
90 ++-------------------------------------------------------------------+
iostat.sdl.avgrq-sz
720 ++-------------------------------------------------------------------+
O |
700 ++ O O O O O O |
680 ++ O O O O O O O O O O O O O O |
| O O O O O |
660 ++ |
640 ++ |
| |
620 ++ |
600 ++ |
| *..|
580 ++ .*..*.*..*.*..* *..*.*..*. .*.*.. .*. .*. .*.*.. + *
560 *+.* + .. *..*.*. *. *. *. * |
| * |
540 ++-------------------------------------------------------------------+
iostat.sdl.avgqu-sz
125 ++-------------------------------------------------------------------+
| |
120 ++ O O |
| O O O O O O O O |
O O O O O O O O O O O O O |
115 ++ O O O |
| |
110 ++ |
| |
105 ++ |
| .*. |
| .*..*. .*.*.. .*. .*.*. *.. .*..|
100 ++.* *..* .*..* *.*.. .*. *. *. * *
*. + .*.*. + .. * |
95 ++-------------*------------*----------------------------------------+
iostat.sdm.avgrq-sz
700 ++---------------------O-------O-------------------------------------+
O O O O O O O O O O O O |
680 ++ O O O O O O O O O |
| O O |
660 ++ O |
| |
640 ++ |
| |
620 ++ |
| |
600 ++ |
| .*.. *..|
580 ++ *.. .*..* .*.. .*.*..*. .*.*.. .*. .*. .*.*.. + *
| + * * *. *.. .*. *. *. *. * |
560 *+-*--------------------------------*--------------------------------+
iostat.sdn.avgrq-sz
700 ++------------------O----------O-------------------------------------+
O O O O O O O O O |
680 ++ O O O O O O O O O O O O O O |
660 ++ O |
| |
640 ++ |
| |
620 ++ |
| |
600 ++ |
580 ++ .*..* .*..|
*..*. .*.*.. .*.*. + .*. .*.. .*.. .* *. .*..* *
560 ++ *. *.*. *. *..* * *. + .. *..* |
| * |
540 ++-------------------------------------------------------------------+
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: 1be41b78: +18% increased btrfs write throughput
2014-01-03 15:54 1be41b78: +18% increased btrfs write throughput fengguang.wu
@ 2014-01-03 16:07 ` Chris Mason
0 siblings, 0 replies; 2+ messages in thread
From: Chris Mason @ 2014-01-03 16:07 UTC (permalink / raw)
To: fengguang.wu@intel.com
Cc: jbacik@fusionio.com, linux-btrfs@vger.kernel.org,
linux-kernel@vger.kernel.org, lkp@linux.intel.com
On Fri, 2014-01-03 at 23:54 +0800, fengguang.wu@intel.com wrote:
> Hi Josef,
>
> FYI. We are doing 0day performance tests and happen to notice that
> btrfs write throughput increased considerably during v3.10-11 time
> frame:
>
> v3.10 v3.11 v3.12 v3.13-rc6
> --------------- ------------------------- ------------------------- -------------------------
> 50619 ~ 1% +17.0% 59209 ~ 2% +18.8% 60159 ~ 2% +20.5% 61007 ~ 0% lkp-ws02/micro/dd-write/11HDD-JBOD-cfq-btrfs-1dd
> 50619 +17.0% 59209 +18.8% 60159 +20.5% 61007 TOTAL iostat.sdd.wkB/s
>
> and it's contributed by
>
> commit 1be41b78bc688fc634bf30965d2be692c99fd11d
> Author: Josef Bacik <jbacik@fusionio.com>
> AuthorDate: Wed Jun 12 13:56:06 2013 -0400
> Commit: Josef Bacik <jbacik@fusionio.com>
> CommitDate: Mon Jul 1 08:52:28 2013 -0400
>
> Btrfs: fix transaction throttling for delayed refs
Bonus points for increasing the performance on purpose. Thanks for
running these Wu.
-chris
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-01-03 16:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-03 15:54 1be41b78: +18% increased btrfs write throughput fengguang.wu
2014-01-03 16:07 ` Chris Mason
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).