Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nautilus: librbd: improve journal performance to match expected degredation #29723

Merged
merged 7 commits into from Aug 20, 2019

Conversation

@dillaman
Copy link
Contributor

commented Aug 18, 2019

@dillaman

This comment has been minimized.

Copy link
Contributor Author

commented Aug 19, 2019

retest this please

@trociny

This comment has been minimized.

Copy link
Contributor

commented Aug 19, 2019

@dillaman Don't we need 340726e too? Although it fixes 83461c4, which is not backported, your changes provide the logic -- overflow detection. And it seems the situation is still possible that buffer is empty when overflow is detected and flush may complete when "advance object set" is still in flight.

And if we need 340726e, then although 83461c4 is not necessary because it is rewritten, may be it makes sense to cherry-pick it too to just to have less conflicts? I suppose it would be much easier for review.

@dillaman

This comment has been minimized.

Copy link
Contributor Author

commented Aug 19, 2019

... sure, I can do that.

trociny and others added 7 commits May 24, 2019
journal: optimize object overflow detection
Previously to detect overflow we were sending journal append
requests until -EOVERFLOW is returned by osd. This means that we
had at least one waste (rejected) request per object set (though
there may be more if the number of in-flight appends is not
limited).

We can easily predict when the osd will start to return
-EOVERFLOW and avoid such additional requests.

Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit 83461c4)
journal: wait for in flight advance sets on stopping recorder
Before object overflow detection optimization (83461c4) the
overflow was detected when trying to send data, so when an object
set was advanced we always had some data and flush always
completed later. But now we detect overflow on client side, it
may happen when buffer is empty and flush may complete
when "advance object set" is still in flight.

Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit 340726e)
journal: improve logging on recorder append path
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 84e48dd)
journal: fix broken append batching implementation
The original flush_interval/bytes/age batching options no longer
actually do anything. Integrate these better with the max in-flight
AIO handling.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit a4e160e)
journal: support dynamically updating recorder flush options
Default to disabling writeback-style append flushes unless overridden
by a call to 'set_append_batch_options'.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit c0322a1)
librbd: new rbd_journal_object_writethrough_until_flush option
When set to true, the journal will not attempt to batch appends until
after it receives the the first flush request from the user.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 172ad64)

Conflicts:
	src/librbd/io/ImageRequest.cc: trivial resolution
librbd: tweaks to improve throughput for journaled IO
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>
(cherry picked from commit 5f3b043)

@dillaman dillaman force-pushed the dillaman:wip-40511-nautilus branch from 344b126 to 5286e37 Aug 19, 2019

@dillaman

This comment has been minimized.

Copy link
Contributor Author

commented Aug 19, 2019

@trociny update pushed

@yuriw

This comment has been minimized.

Copy link
Contributor

commented Aug 19, 2019

@trociny
Copy link
Contributor

left a comment

👍

@yuriw yuriw merged commit 67a5d1f into ceph:nautilus Aug 20, 2019

4 checks passed

Docs: build check OK - docs built
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details
make check make check succeeded
Details

@dillaman dillaman deleted the dillaman:wip-40511-nautilus branch Aug 20, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.