]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore: avoid new allocation when overwriting data in RBM for performance
authormyoungwon oh <ohmyoungwon@gmail.com>
Thu, 21 Mar 2024 02:06:24 +0000 (02:06 +0000)
committermyoungwon oh <ohmyoungwon@gmail.com>
Fri, 19 Apr 2024 05:00:40 +0000 (05:00 +0000)
commit76b87855b4a6fb60a1fae59792aeebff3e8762d3
treecfe56c1670c71259d2b233a416ef6faa82566f34
parentac7e052a80e8b4eab764308ed6036d34b954af4d
crimson/os/seastore: avoid new allocation when overwriting data in RBM for performance

In 4K random write test, after seastore is filled up by 4MB extents,
current implementation performs deep copy in duplicate_for_write(), resulting in
significant performance degradation by 80%.
Therefore, this commit changes the deep copy behavior for bufferptr during the overwrite
situation to shallow copy, leaving the original data untouched.

Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/cached_extent.h
src/crimson/os/seastore/object_data_handler.h
src/test/crimson/seastore/test_object_data_handler.cc