ceph: set OSD disk I/O scheduler to none via udev rule #505

Merged
benvin merged 2 commits from benvin/ceph-osd-scheduler into develop 2026-08-08 22:33:30 +10:00
Owner

Why

Ceph OSDs manage their own I/O ordering, so the kernel scheduler on the backing disks just adds overhead. The original intent was to set those disks to the noop scheduler. The whole OSD fleet (k8s + incus nodes) runs AlmaLinux 9 on blk-mq kernels (5.14), where the equivalent of noop is none.

Changes

  • Add profiles::ceph::osd_scheduler, rendering a udev rule from the ceph_osd_devices fact (PR #504) that pins queue/scheduler to none on each OSD disk.
  • Reload udev and trigger the matched block devices so the setting applies immediately; the udev rule keeps it set across reboots and device re-add.
  • No-op when the fact is absent/empty, so VMs and non-OSD hosts are untouched.
  • Include the class from profiles::ceph::osd so it lands only on OSD hosts.

https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT

## Why Ceph OSDs manage their own I/O ordering, so the kernel scheduler on the backing disks just adds overhead. The original intent was to set those disks to the `noop` scheduler. The whole OSD fleet (k8s + incus nodes) runs AlmaLinux 9 on blk-mq kernels (5.14), where the equivalent of `noop` is `none`. ## Changes - Add `profiles::ceph::osd_scheduler`, rendering a udev rule from the `ceph_osd_devices` fact (PR #504) that pins `queue/scheduler` to `none` on each OSD disk. - Reload udev and trigger the matched block devices so the setting applies immediately; the udev rule keeps it set across reboots and device re-add. - No-op when the fact is absent/empty, so VMs and non-OSD hosts are untouched. - Include the class from `profiles::ceph::osd` so it lands only on OSD hosts. https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT
unkinben added 1 commit 2026-08-02 21:40:44 +10:00
ceph: set OSD disk I/O scheduler to none via udev rule
ci/woodpecker/pr/ruby-validate Pipeline was successful
ci/woodpecker/pr/puppet-lint Pipeline was successful
ci/woodpecker/pr/yamllint Pipeline was successful
ci/woodpecker/pr/bolt-validate Pipeline was successful
ci/woodpecker/pr/erb-validate Pipeline was successful
ci/woodpecker/pr/epp-validate Pipeline was successful
ci/woodpecker/pr/puppet-validate Pipeline was successful
ci/woodpecker/pr/ruby-check Pipeline was successful
e86f60aae3
Ceph OSDs get no benefit from kernel I/O scheduling; the original intent
was to set those disks to the noop scheduler. On the fleet's EL9 blk-mq
kernels (AlmaLinux 9, kernel 5.14) the equivalent of noop is none.

- add profiles::ceph::osd_scheduler, which renders a udev rule from the
  ceph_osd_devices fact pinning queue/scheduler to none on each OSD disk
- reload udev and trigger the matched block devices so the change applies
  immediately, while the rule keeps it set across reboots and device re-add
- no-op when the fact is absent/empty so VMs and non-OSD hosts are untouched
- include the class from profiles::ceph::osd so it lands only on OSD hosts

Claude-Session: https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT
benvin added 1 commit 2026-08-08 22:27:03 +10:00
Merge branch 'develop' into benvin/ceph-osd-scheduler
ci/woodpecker/pr/yamllint Pipeline was successful
ci/woodpecker/pr/ruby-validate Pipeline was successful
ci/woodpecker/pr/puppet-lint Pipeline was successful
ci/woodpecker/pr/bolt-validate Pipeline was successful
ci/woodpecker/pr/erb-validate Pipeline was successful
ci/woodpecker/pr/epp-validate Pipeline was successful
ci/woodpecker/pr/puppet-validate Pipeline was successful
ci/woodpecker/pr/ruby-check Pipeline was successful
0b62e7f756
benvin merged commit 804ea06499 into develop 2026-08-08 22:33:30 +10:00
benvin deleted branch benvin/ceph-osd-scheduler 2026-08-08 22:33:30 +10:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unkin/puppet-prod#505