Chao Yu
7041d5d286
f2fs: combine nat_bits and free_nid_bitmap cache
...
Both nat_bits cache and free_nid_bitmap cache provide same functionality
as a intermediate cache between free nid cache and disk, but with
different granularity of indicating free nid range, and different
persistence policy. nat_bits cache provides better persistence ability,
and free_nid_bitmap provides better granularity.
In this patch we combine advantage of both caches, so finally policy of
the intermediate cache would be:
- init: load free nid status from nat_bits into free_nid_bitmap
- lookup: scan free_nid_bitmap before load NAT blocks
- update: update free_nid_bitmap in real-time
- persistence: udpate and persist nat_bits in checkpoint
This patch also resolves performance regression reported by lkp-robot.
commit:
4ac912427c4214d8031d9ad6fbc3bc75e71512df ("f2fs: introduce free nid bitmap")
d00030cf9cd0bb96fdccc41e33d3c91dcbb672ba ("f2fs: use __set{__clear}_bit_le")
1382c0f3f9d3f936c8bc42ed1591cf7a593ef9f7 ("f2fs: combine nat_bits and free_nid_bitmap cache")
4ac912427c4214d8 d00030cf9cd0bb96fdccc41e33 1382c0f3f9d3f936c8bc42ed15
---------------- -------------------------- --------------------------
%stddev %change %stddev %change %stddev
\ | \ | \
77863 ± 0% +2.1% 79485 ± 1% +50.8% 117404 ± 0% aim7.jobs-per-min
231.63 ± 0% -2.0% 227.01 ± 1% -33.6% 153.80 ± 0% aim7.time.elapsed_time
231.63 ± 0% -2.0% 227.01 ± 1% -33.6% 153.80 ± 0% aim7.time.elapsed_time.max
896604 ± 0% -0.8% 889221 ± 3% -20.2% 715260 ± 1% aim7.time.involuntary_context_switches
2394 ± 1% +4.6% 2503 ± 1% +3.7% 2481 ± 2% aim7.time.maximum_resident_set_size
6240 ± 0% -1.5% 6145 ± 1% -14.1% 5360 ± 1% aim7.time.system_time
1111357 ± 3% +1.9% 1132509 ± 2% -6.2% 1041932 ± 2% aim7.time.voluntary_context_switches
...
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Tested-by: Xiaolong Ye <xiaolong.ye@intel.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2017-03-20 10:00:18 -04:00
..
2016-11-23 12:11:08 -08:00
2016-09-14 16:52:36 -07:00
2017-02-27 10:07:47 -08:00
2017-03-02 08:42:32 +01:00
2017-03-20 10:00:17 -04:00
2017-03-20 10:00:16 -04:00
2017-02-27 10:07:43 -08:00
2017-03-20 10:00:17 -04:00
2017-03-02 20:51:15 -05:00
2017-02-27 10:51:21 -08:00
2016-01-11 15:56:37 -08:00
2015-05-28 15:41:34 -07:00
2016-12-14 09:07:36 -08:00
2017-02-27 09:59:55 -08:00
2016-05-07 10:32:22 -07:00
2016-03-17 21:19:33 -07:00
2017-03-01 15:55:04 -08:00
2017-03-20 10:00:18 -04:00
2017-02-27 10:07:47 -08:00
2017-02-23 10:10:52 -08:00
2017-03-20 10:00:14 -04:00
2017-02-27 10:07:46 -08:00
2016-11-23 12:11:03 -08:00
2017-03-01 15:55:04 -08:00
2016-06-07 13:41:38 -06:00
2015-05-28 15:41:32 -07:00
2017-02-27 10:07:45 -08:00
2017-02-22 20:24:51 -08:00