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:
4ac912427c ("f2fs: introduce free nid bitmap")
d00030cf9cd0bb96fdccc41e33d3c91dcbb672ba ("f2fs: use __set{__clear}_bit_le")
1382c0f3f9d3f936c8bc42ed1591cf7a593ef9f7 ("f2fs: combine nat_bits and free_nid_bitmap cache")
4ac912427c 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 |
| .. |
|
acl.c
|
f2fs: keep dirty inodes selectively for checkpoint
|
2016-11-23 12:11:08 -08:00 |
|
acl.h
|
f2fs: remove dead code f2fs_check_acl
|
2016-09-14 16:52:36 -07:00 |
|
checkpoint.c
|
f2fs: new helper cur_cp_crc() getting crc in f2fs_checkpoint
|
2017-02-27 10:07:47 -08:00 |
|
data.c
|
sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h>
|
2017-03-02 08:42:32 +01:00 |
|
debug.c
|
f2fs: skip scanning free nid bitmap of full NAT blocks
|
2017-03-20 10:00:17 -04:00 |
|
dir.c
|
f2fs: use __set{__clear}_bit_le
|
2017-03-20 10:00:16 -04:00 |
|
extent_cache.c
|
f2fs: kill __is_extent_same
|
2017-02-27 10:07:43 -08:00 |
|
f2fs.h
|
f2fs: skip scanning free nid bitmap of full NAT blocks
|
2017-03-20 10:00:17 -04:00 |
|
file.c
|
statx: Add a system call to make enhanced file info available
|
2017-03-02 20:51:15 -05:00 |
|
gc.c
|
f2fs: fix a plint compile warning
|
2017-02-27 10:51:21 -08:00 |
|
gc.h
|
|
|
|
hash.c
|
|
|
|
inline.c
|
for-f2fs-4.10
|
2016-12-14 09:07:36 -08:00 |
|
inode.c
|
f2fs: show simple call stack in fault injection message
|
2017-02-27 09:59:55 -08:00 |
|
Kconfig
|
|
|
|
Makefile
|
|
|
|
namei.c
|
for-f2fs-4.11
|
2017-03-01 15:55:04 -08:00 |
|
node.c
|
f2fs: combine nat_bits and free_nid_bitmap cache
|
2017-03-20 10:00:18 -04:00 |
|
node.h
|
f2fs: new helper cur_cp_crc() getting crc in f2fs_checkpoint
|
2017-02-27 10:07:47 -08:00 |
|
recovery.c
|
f2fs: change recovery policy of xattr node block
|
2017-02-23 10:10:52 -08:00 |
|
segment.c
|
f2fs: don't overwrite node block by SSR
|
2017-03-20 10:00:14 -04:00 |
|
segment.h
|
f2fs: update the comment of default nr_pages to skipping
|
2017-02-27 10:07:46 -08:00 |
|
shrinker.c
|
f2fs: avoid casted negative value as shrink count
|
2016-11-23 12:11:03 -08:00 |
|
super.c
|
for-f2fs-4.11
|
2017-03-01 15:55:04 -08:00 |
|
trace.c
|
|
|
|
trace.h
|
|
|
|
xattr.c
|
f2fs: drop the duplicate pval in f2fs_getxattr
|
2017-02-27 10:07:45 -08:00 |
|
xattr.h
|
f2fs: enhance lookup xattr
|
2017-02-22 20:24:51 -08:00 |