Skip to contentSkip to conversation

f2fs: readahead for free nids building

PATCH New Chao Yu 1 participant 1 message Oct 12, 2015 F2FS file system

lore
Share & tools
lore

Chao Yu

author
#0 lore raw

PATCH 4/5 f2fs: readahead for free nids building

When there is no free nid in nid cache, all new node allocaters stop their job to wait for reloading of free nids, however reloading is synchronous as we will read 4 NAT pages for building nid cache, it cause the long latency.

This patch tries to readahead more NAT pages with READA request flag after reloading of free nids. It helps to improve performance when users allocate node id intensively.

Env: Sandisk 32G sd card
time for i in seq 1 60000; { echo -n > /mnt/f2fs/$i; echo XXXXXX > /mnt/f2fs/$i;}

Before:

real    0m2.814s
user    0m1.220s
sys     0m1.536s

After:

real    0m2.711s
user    0m1.136s
sys     0m1.568s
---
 fs/f2fs/node.c | 3 +++
 1 file changed, 3 insertions(+)
fs/f2fs/node.c +3 -0
index ad98e35..14f4606 100644
@@ -1560,6 +1560,9 @@ static void build_free_nids(struct f2fs_sb_info *sbi)
 			remove_free_nid(nm_i, nid);
 	}
 	mutex_unlock(&curseg->curseg_mutex);
+
+	ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nm_i->next_scan_nid),
+					FREE_NID_PAGES, META_NAT, false);
 }
 
 /*
Signature · 1 line
2.5.2