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
Allow passing explicit PrimaryAffinity #1178
Allow passing explicit PrimaryAffinity #1178
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this seems to make sense. Two requests:
- Please provide at least a short description of what "primary affinity" means in the comments in
storagecluster_types.go
- Split the generated CSV changes into their own commit
@jarrpa Will fix soon and re-send the PR |
9a159fe
to
80ca65c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good split. Suggesting some edits to the additional comment. Your comment gave me a better understanding on what this does, but the language was a little unclear. A direct link to the documentation will probably be useful here, since anyone modifying this value is already in a place where they should know more about this.
api/v1/storagecluster_types.go
Outdated
// PrimaryAffinity is an optional OSD primary-affinity value within the | ||
// range [0,1). This value influence the way Ceph's CRUSH selection of | ||
// primary OSDs. Lower value reduce performance bottlenecks (especially | ||
// on read operations). If not set, default value is 1. | ||
// +kubebuilder:validation:Pattern=`^0.[0-9]+$` | ||
// +optional |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// PrimaryAffinity is an optional OSD primary-affinity value within the | |
// range [0,1). This value influence the way Ceph's CRUSH selection of | |
// primary OSDs. Lower value reduce performance bottlenecks (especially | |
// on read operations). If not set, default value is 1. | |
// +kubebuilder:validation:Pattern=`^0.[0-9]+$` | |
// +optional | |
// PrimaryAffinity is an optional OSD primary-affinity value within the | |
// range [0,1). This value influences Ceph's CRUSH selection of | |
// primary OSDs. A lower value reduces the probability that the OSD will | |
// be selected. If not set, default value is 1. | |
// https://docs.ceph.com/en/latest/rados/operations/crush-map/#primary-affinity | |
// +kubebuilder:validation:Pattern=`^0.[0-9]+$` | |
// +optional |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jarrpa Should I re-submit my PR with those changes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes
Allow passing explicit primary-affinity upon OSD's deployment using annotations mechanism (same as DeviceClass/InitialWeight). This may be useful for cases where user wants to have more fine-grained control on the overall (read) load of specific devices. Valid values are within range [0, 1) (where 1 is the default). As an example, consider the (real-life) case of a PV which resides on a partition alongside OS partition. In such case, user can reduce I/O load of this specific OSD by choosing explicit primary-affinity value. Issue: https://issues.redhat.com/browse/KNIP-1616 BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1924946 ROOK issue: rook/rook#7773 Signed-off-by: Shachar Sharon <ssharon@redhat.com>
Update crds after adding 'primaryAffinity' option. Signed-off-by: Shachar Sharon <ssharon@redhat.com>
80ca65c
to
36393bf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: jarrpa The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/retest Please review the full test history for this PR and help us cut down flakes. |
1 similar comment
/retest Please review the full test history for this PR and help us cut down flakes. |
Allow passing explicit primary-affinity upon OSD's deployment using
annotations mechanism (same as DeviceClass/InitialWeight). This may be
useful for cases where user wants to have more fine-grained control on
the overall (read) load of specific devices. Valid values are within
range [0, 1) (where 1 is the default).
As an example, consider the (real-life) case of a PV which resides on a
partition alongside OS partition. In such case, user can reduce I/O load
of this specific OSD by choosing explicit primary-affinity value.
Issue: https://issues.redhat.com/browse/KNIP-1616
BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1924946
Signed-off-by: Shachar Sharon ssharon@redhat.com