]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd/PGLog: write only changed dup entries
authorJosh Durgin <jdurgin@redhat.com>
Thu, 24 Aug 2017 22:03:36 +0000 (18:03 -0400)
committerJosh Durgin <jdurgin@redhat.com>
Fri, 25 Aug 2017 05:02:58 +0000 (01:02 -0400)
commit75af72f758aacc1260b8d828d0b8bb7786597fdf
treee7d03a5a88cf4e9c16b502cd2e702d7c7c115dd6
parent1f8cfd6dc589b1d206f401c4956dd945778513f9
osd/PGLog: write only changed dup entries

Writing all of the dup entries whenever one is changed causes a large
regression in performance.

Instead, keep track of ranges that need to be cleared and written
after log merging (dirty_{to,from}_dups) and the earliest dup entry we
haven't written yet during normal operation (write_from_dups). This
parallels the way we track unpersisted log entries.

Check that the correct set of dups is persisted by adding a roundtrip
through memstore to each merge_log unit test.

Fixes: http://tracker.ceph.com/issues/21026
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
src/osd/PGLog.cc
src/osd/PGLog.h
src/osd/osd_types.h
src/test/osd/TestPGLog.cc
src/tools/ceph_objectstore_tool.cc