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

daemon: Use IOSchedulingClass=idle #2164

Closed
wants to merge 1 commit into from
Closed

Conversation

cgwalters
Copy link
Member

Pairs with: ostreedev/ostree#2152

Be nice to concurrent processes; operating system updates
are usually a background thing. See e.g.
openshift/machine-config-operator#1897
ostreedev/ostree#2152
This option is most effective in combination with
a block scheduler such as bfq, which is the systemd
default since systemd/systemd#13321

Pairs with: ostreedev/ostree#2152

Be nice to concurrent processes; operating system updates
are usually a background thing.  See e.g.
openshift/machine-config-operator#1897
ostreedev/ostree#2152
This option is most effective in combination with
a block scheduler such as `bfq`, which is the systemd
default since systemd/systemd#13321
@openshift-ci-robot
Copy link
Collaborator

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: cgwalters

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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jlebon
Copy link
Member

jlebon commented Jul 20, 2020

One doubt about applying this globally: on a busy machine, this may delay updates significantly, right? Across a large cluster, this could mean rollouts take much longer. I see in the BFQ docs:

A very thin extra bandwidth is however guaranteed to the Idle class, to prevent it from starving.

So we know that it at least couldn't be delayed indefinitely. I couldn't find a similar statement for CFQ but I suspect it's the same. It makes more sense in the OCP /OKD workflow though where the MCO drains the node first though, but can we make that assumption across the board wherever rpm-ostree is used? (And even there, what if there's some buggy service hogging the disk?)

Hmm, also I think it would make sense to have different profiles depending on whether it's initiated by another service, vs by a user interactively at the CLI?

All this to say; WDYT about making this configurable at the transaction level instead? (Or at worse, just make the MCO configure the service via a systemd drop-in).

Also in your tests, how does IDLE compare to BE at e.g. level 7 wrt I/O latencies? Would that be a more reasonable upstream default?

@cgwalters
Copy link
Member Author

I'm OK changing this to be done via drop-in in MCO instead. It is hard to have a global default, and I do think ultimately cgroups v2 is the right solution for this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants