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

osd: tag fast dispatch messages with min_epoch #13681

Merged
merged 13 commits into from May 5, 2017

Conversation

Projects
None yet
3 participants
@liewegas
Member

liewegas commented Feb 28, 2017

Currently we tag everything with teh latest epoch on the sender,
and if the recipient has an older epoch the message blocks. This
is usually pointless. For any given message, there is generally
some minimum required epoch before it can be understood: either the
beginning of the interval or the last_peering_reset. Use that
instead.

Leave MOSDSubOp alone; we're about to kill it. Also leave the
scrub message alone as it's updated in a differnet PR.

@liewegas liewegas changed the title from DNM: osd: tag fast dispatch messages with min_epoch to RFC: DNM: osd: tag fast dispatch messages with min_epoch Mar 6, 2017

@gregsfortytwo

This comment has been minimized.

Member

gregsfortytwo commented Mar 17, 2017

retest this please

@gregsfortytwo

This comment has been minimized.

Member

gregsfortytwo commented Mar 17, 2017

@liewegas, can you comment on what (if any) efficiency gains we expect out of this?

I think we hit disk once for each PG every time it updates a map (is that right?), but if we don't force the updates so frequently we can batch more of them together and reduce total disk IO due to maps?

@liewegas

This comment has been minimized.

Member

liewegas commented Mar 17, 2017

@gregsfortytwo

This comment has been minimized.

Member

gregsfortytwo commented Mar 17, 2017

Uh, I don't think we're allowed to persist them coarsely? Otherwise on restart we could change our mind about what snapshots exist!

Anyway, build error:

/home/jenkins-build/build/workspace/ceph-pull-requests/src/osd/PrimaryLogPG.h:295:25: error: ‘const struct pg_history_t’ has no member named ‘same_epoch_since’
return info.history.same_epoch_since;

@liewegas

This comment has been minimized.

Member

liewegas commented Mar 18, 2017

@liewegas

This comment has been minimized.

Member

liewegas commented Mar 18, 2017

@liewegas liewegas changed the title from RFC: DNM: osd: tag fast dispatch messages with min_epoch to osd: tag fast dispatch messages with min_epoch Apr 21, 2017

@liewegas

This comment has been minimized.

Member

liewegas commented Apr 21, 2017

this pr should follow #14475

liewegas added some commits Feb 28, 2017

osd: define min_epoch for fast dispatch messages
For now, default to the sent_epoch (latest).

Signed-off-by: Sage Weil <sage@redhat.com>
osd: wait based on min_epoch
Signed-off-by: Sage Weil <sage@redhat.com>
osd/PG: remove unused op_must_wait_for_map
Signed-off-by: Sage Weil <sage@redhat.com>
osd: min_epoch for MOSDECSubOp*
Signed-off-by: Sage Weil <sage@redhat.com>
osd: set min_epoch for MOSDPGBackfill
Signed-off-by: Sage Weil <sage@redhat.com>
osd: set min_epoch for push/pull/reply
Signed-off-by: Sage Weil <sage@redhat.com>
osd: min_epoch for MOSDPGScan
Signed-off-by: Sage Weil <sage@redhat.com>
osd: min_epoch for MOSDPGUpdateLogMissing[Reply]
Signed-off-by: Sage Weil <sage@redhat.com>
osd: min_epoch for MOSDRepOp[Reply]
Signed-off-by: Sage Weil <sage@redhat.com>
osd: min_epoch for MOSDRepScrub
Signed-off-by: Sage Weil <sage@redhat.com>
osd/ReplicatedBackend: cleanup repop_applied
Signed-off-by: Sage Weil <sage@redhat.com>
osd: assert min_epoch <= sent_epoch
Otherwise the sender is broken and probaby didn't fill in min_epoch
properly!

Signed-off-by: Sage Weil <sage@redhat.com>
static const int COMPAT_VERSION = 1;
public:
spg_t pgid;
epoch_t map_epoch;
epoch_t map_epoch, min_epoch;

This comment has been minimized.

@tchaikov

tchaikov May 2, 2017

Contributor

nit, could initialize min_epoch to something like 0. yeah, i knew we always initialize it after decoding a message or creating a new one, but it could help us to make sure that the min_epoch is initialized properly.

@tchaikov

This comment has been minimized.

Contributor

tchaikov commented May 5, 2017

@tchaikov tchaikov merged commit e1d435b into ceph:master May 5, 2017

3 checks passed

Signed-off-by all commits in this PR are signed
Details
Unmodifed Submodules submodules for project are unmodified
Details
default Build finished.
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment