Filipe David Borba Manana 32193c147f Btrfs: faster and more efficient extent map insertion
Before this change, adding an extent map to the extent map tree of an
inode required 2 tree nevigations:

1) doing a tree navigation to search for an existing extent map starting
   at the same offset or an extent map that overlaps the extent map we
   want to insert;

2) Another tree navigation to add the extent map to the tree (if the
   former tree search didn't found anything).

This change just merges these 2 steps into a single one.
While running first few btrfs xfstests I had noticed these trees easily
had a few hundred elements, and then with the following sysbench test it
reached over 1100 elements very often.

Test:

  sysbench --test=fileio --file-num=32 --file-total-size=10G \
    --file-test-mode=seqwr --num-threads=512 --file-block-size=8192 \
    --max-requests=1000000 --file-io-mode=sync [prepare|run]

(fs created with mkfs.btrfs -l 4096 -f /dev/sdb3 before each sysbench
prepare phase)

Before this patch:

run 1 - 41.894Mb/sec
run 2 - 40.527Mb/sec
run 3 - 40.922Mb/sec
run 4 - 49.433Mb/sec
run 5 - 40.959Mb/sec

average - 42.75Mb/sec

After this patch:

run 1 - 48.036Mb/sec
run 2 - 50.21Mb/sec
run 3 - 50.929Mb/sec
run 4 - 46.881Mb/sec
run 5 - 53.192Mb/sec

average - 49.85Mb/sec

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
2014-01-28 13:19:48 -08:00
..
2013-10-24 23:43:27 -04:00
2013-12-27 15:14:45 -06:00
2013-11-13 12:09:12 +09:00
2014-01-06 14:00:23 -05:00
2013-06-29 12:56:53 +04:00
2013-12-08 21:14:59 -05:00
2013-10-27 16:27:07 -07:00
2013-09-16 18:20:25 -07:00
2013-12-05 13:05:48 -08:00
2013-06-29 12:56:32 +04:00
2013-11-09 00:16:32 -05:00
2013-06-29 12:56:39 +04:00
2013-06-29 12:56:29 +04:00
2013-12-22 11:03:49 -08:00
2013-06-29 12:57:04 +04:00
2013-10-24 23:34:54 -04:00
2013-04-29 15:40:23 -04:00
2013-09-13 23:06:40 -04:00
2013-10-24 23:34:54 -04:00
2013-06-29 12:57:05 +04:00
2013-03-03 23:00:23 -05:00
2013-09-10 18:56:31 -04:00
2013-10-24 23:34:54 -04:00
2013-11-09 00:16:20 -05:00
2013-10-24 23:34:54 -04:00
2013-04-17 13:25:09 +01:00
2013-11-09 00:16:19 -05:00
2013-10-24 23:35:00 -04:00
2013-10-24 23:34:54 -04:00
2013-10-24 23:34:54 -04:00
2013-10-24 23:34:54 -04:00
2013-11-09 00:16:31 -05:00
2013-11-09 00:16:20 -05:00
2013-05-29 12:57:34 -07:00