Details
-
Bug
-
Resolution: Fixed
-
Critical
-
Lustre 2.7.0, Lustre 2.8.0, Lustre 2.9.0, Lustre 2.10.0
-
any lustre with commit 144b5a65c16, and likely before.
-
3
-
9223372036854775807
Description
osd-ldiskfs have a several osd_is_mapped calls when extent tree scanned to get decission about error for rewrite case. But extent tree is huge with while random io write test and search is CPU expensive in this case. typical perf output is
|--75.99%-- rb_next | | | |--94.49%-- ldiskfs_es_find_delayed_extent_range | | ldiskfs_fiemap | | osd_is_mapped | | osd_declare_write_commit | | ofd_commitrw_write.isra.32 | | ofd_commitrw | | obd_commitrw.constprop.39 | | tgt_brw_write | | tgt_request_handle | | ptlrpc_server_handle_request | | ptlrpc_main | | kthread | | ret_from_fork | | | |--5.49%-- ldiskfs_fiemap | | osd_is_mapped | | osd_declare_write_commit | | ofd_commitrw_write.isra.32 | | ofd_commitrw | | obd_commitrw.constprop.39 | | tgt_brw_write | | tgt_request_handle | | ptlrpc_server_handle_request | | ptlrpc_main | | kthread | | ret_from_fork | --0.02%-- [...] | |--21.80%-- ldiskfs_es_find_delayed_extent_range | | | |--100.00%-- ldiskfs_fiemap | | osd_is_mapped | | osd_declare_write_commit | | ofd_commitrw_write.isra.32 | | ofd_commitrw | | obd_commitrw.constprop.39 | | tgt_brw_write | | tgt_request_handle | | ptlrpc_server_handle_request | | ptlrpc_main | | kthread | | ret_from_fork | --0.00%-- [...]
avoid second search by caching result on hight bits of lnb_flags which not used in wire increase a performance dramatically
- without patch with default mkfsoptions: CPU usage 100% with 55-60K random 4K writes
- with the patch: CPU usage 50-60% with 250K random 4K writes