804ea06499
## 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 --------- Co-authored-by: BenVincent <benvin@main.unkin.net> Reviewed-on: #505 Co-authored-by: Ben Vincent <ben@unkin.net> Co-committed-by: Ben Vincent <ben@unkin.net>
17 lines
364 B
Puppet
17 lines
364 B
Puppet
class profiles::ceph::osd (
|
|
Boolean $ensure_running = true,
|
|
) {
|
|
|
|
# tune the I/O scheduler on the disks backing ceph OSDs
|
|
include profiles::ceph::osd_scheduler
|
|
|
|
if $ensure_running and $facts['is_ceph_osd'] {
|
|
$facts['ceph_services']['osd'].each |String $svc| {
|
|
service { $svc:
|
|
ensure => running,
|
|
enable => true,
|
|
}
|
|
}
|
|
}
|
|
}
|