]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: tweaks to improve throughput for journaled IO 28539/head
authorJason Dillaman <dillaman@redhat.com>
Thu, 13 Jun 2019 19:22:54 +0000 (15:22 -0400)
committerJason Dillaman <dillaman@redhat.com>
Wed, 19 Jun 2019 14:38:53 +0000 (10:38 -0400)
Increase the per-object append flush bytes to 1MiB to mimic the 16MiB
in-memory writeback cache. Finally, default enable the new journal
writethrough until flush option.

Performance results comparing no journal, pre-change, and post-change:

no journal original modified
4K 40310.84 7223.73 27427.27
32K 21530.37 3256.39 10284.05
256K 3159.67 564.73 1627.16
4M 223.03 48.03 91.91

Fixes: http://tracker.ceph.com/issues/40072
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/common/options.cc

index 167bb45044ec4c7ed86616817bc819a55f79a7d9..f8f32119878c6713285e819f972efb3f97786b91 100644 (file)
@@ -7305,7 +7305,7 @@ static std::vector<Option> get_rbd_options() {
     .set_description("commit time interval, seconds"),
 
     Option("rbd_journal_object_writethrough_until_flush", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
-    .set_default(false)
+    .set_default(true)
     .set_description("when enabled, the rbd_journal_object_flush* configuration "
                      "options are ignored until the first flush so that batched "
                      "journal IO is known to be safe for consistency"),
@@ -7315,7 +7315,7 @@ static std::vector<Option> get_rbd_options() {
     .set_description("maximum number of pending commits per journal object"),
 
     Option("rbd_journal_object_flush_bytes", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
-    .set_default(0)
+    .set_default(1_M)
     .set_description("maximum number of pending bytes per journal object"),
 
     Option("rbd_journal_object_flush_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)