This passes "ceph_test_objectstore --gtest_filter=*/2".
This restores 4K random read performance to previous levels when objects
are were previously written out using large IOs (4MB in this case):
pre-patch: 26MB/s
post-pated: 610MB/s
Closes #10320
Signed-off-by: Mark Nelson <mnelson@redhat.com>
dout(20) << __func__ << " will do buffered write" << dendl;
wctx.buffered = true;
}
- wctx.csum_order = MAX(block_size_order, o->onode.get_preferred_csum_order());
+
+ // FIXME: Using the MAX of the block_size_order and preferred_csum_order
+ // results in poor small random read performance when data was initially
+ // written out in large chunks. Reverting to previous behavior for now.
+ wctx.csum_order = block_size_order;
// compression parameters
unsigned alloc_hints = o->onode.alloc_hint_flags;
// FIXME
}
+// FIXME: Using this to compute the ctx.csum_order can lead to poor small
+// random read performance when initial writes are large.
size_t bluestore_onode_t::get_preferred_csum_order() const
{
uint32_t t = expected_write_size;