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

librbd: optimize away unnecessary object map updates #10332

Merged
merged 2 commits into from Jul 29, 2016

Conversation

dillaman
Copy link

No description provided.

@dillaman
Copy link
Author

@neurodrone Hopefully this should resolve the mkfs discard performance issue. It needs to run through the rbd teuthology suite to ensure a regression wasn't introduced.

@neurodrone
Copy link
Contributor

That's neat! Thanks for this fix!

@dillaman
Copy link
Author

@neurodrone Thanks for the traces -- made it really easy to reproduce.

@trociny trociny self-assigned this Jul 18, 2016
@markhpc
Copy link
Member

markhpc commented Jul 18, 2016

woooot, good job guys!

trociny pushed a commit that referenced this pull request Jul 19, 2016
librbd: optimize away unnecessary object map updates #10332
@trociny
Copy link
Contributor

trociny commented Jul 19, 2016

@dillaman 'Fixes: http://tracker.ceph.com/issues/16707' to "rbd-replay: decode and replay discard IO operations" commit log?

imagectx, offset, length));
thread->issued_io(io, &m_latest_ios);
ios->push_back(io);
m_pending_ios[completion] = io;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dillaman This looks like wrong for not AIO case?

Jason Dillaman added 2 commits July 19, 2016 07:22
Fixes: http://tracker.ceph.com/issues/16707
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Fixes: http://tracker.ceph.com/issues/16689
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
@dillaman
Copy link
Author

@trociny good catch -- update pushed

@trociny
Copy link
Contributor

trociny commented Jul 20, 2016

@dillaman Do I understand the fix correctly, that the source of unnecessary object map updates was in send_pre() where we filtered out only updates that did not change the state, while now we also filter out updates changing state form OBJECT_NONEXISTENT to OBJECT_PENDING and from !OBJECT_PENDING to OBJECT_NONEXISTENT?

Or was send_post() a source of unnecessary updates too?

@dillaman
Copy link
Author

@trociny There wasn't an issue with the send_post state -- I just consolidated the logic to the same helper method.

The issue was send_pre would only perform an exact check of current state against desired state. When deleting, the desired state is first the _PENDING state. Therefore, we can avoid updating the object map if our desired state is _PENDING and the current state is _NONEXISTENT.

@trociny
Copy link
Contributor

trociny commented Jul 23, 2016

lgtm

trociny pushed a commit that referenced this pull request Jul 25, 2016
librbd: optimize away unnecessary object map updates #10332
trociny pushed a commit that referenced this pull request Jul 27, 2016
librbd: optimize away unnecessary object map updates #10332
trociny pushed a commit that referenced this pull request Jul 28, 2016
librbd: optimize away unnecessary object map updates #10332
@trociny trociny merged commit 1d4384c into ceph:master Jul 29, 2016
@dillaman dillaman deleted the wip-16689 branch July 29, 2016 13:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants