Add conditions in the I/O scheduler
Due to the way /etc/udev/rules.d/60-io-scheduler.rules is written, it doesn't check if the I/O scheduler is already set correctly or not, before resetting it. Thus, a condition was added to each "action", in such a way that only the correct "action" is executed. Using gparted/sgdisk in sysinv causes disks to be "reprobed" by the kernel every minute, so the disk I/O scheduler is reset multiple times. This can be seen by running the command below: sysadmin@controller-0:~$ ( while true; do sched="$(cat /sys/block /sda/queue/scheduler)"; if test "${sched}" != "${last_sched}"; then echo "$(date -Is): change: ${sched}"; last_sched="${sched}"; fi; done ) Test Plan: PASS: It was checked disk I/O scheduler (sys/block/sda/queue /scheduler) is not resetting every minute, multiple times on AIO-SX fresh install. Closes-Bug: 1996822 Signed-off-by: Erickson Silva de Oliveira <Erickson.SilvadeOliveira@windriver.com> Change-Id: Ic4a9b963d00393b591fd23f2c1224ad6b8740e5e
This commit is contained in:
parent
5f6ea6c0c9
commit
9ec47cf482
@ -70,20 +70,61 @@ IMPORT{file}="/etc/platform/platform.conf"
|
||||
# - Virtual guest: Use mq-deadline. With a host bus adapter (HBA) driver that
|
||||
# is multi-queue capable, use none.
|
||||
|
||||
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[a-z]", \
|
||||
ATTR{queue/scheduler}="mq-deadline", \
|
||||
ATTR{queue/iosched/front_merges}="0", \
|
||||
ATTR{queue/iosched/read_expire}="150", \
|
||||
ATTR{queue/iosched/write_expire}="1500"
|
||||
ACTION!="add|change", GOTO="iosched_end"
|
||||
SUBSYSTEM!="block", GOTO="iosched_end"
|
||||
KERNEL!="sd[a-z]", GOTO="iosched_end"
|
||||
|
||||
PROGRAM="/usr/local/bin/is-rootdisk-device.sh %E{DEVNAME}", RESULT=="?*", ENV{rootdisk}="1"
|
||||
|
||||
ACTION=="add|change", ENV{nodetype}=="controller", SUBSYSTEM=="block", KERNEL=="sd[a-z]", \
|
||||
PROGRAM="/usr/local/bin/is-rootdisk-device.sh %E{DEVNAME}", RESULT=="?*", \
|
||||
ATTR{queue/scheduler}="bfq", \
|
||||
ATTR{queue/iosched/strict_guarantees}="1"
|
||||
# === === === ===
|
||||
# Check the I/O scheduler settings are correct.
|
||||
# === === === ===
|
||||
|
||||
ATTRS{raid_level}=="*RAID*", \
|
||||
ATTR{queue/scheduler}=="*\[none\]*", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
ATTRS{label}=="*RAID*", \
|
||||
ATTR{queue/scheduler}=="*\[none\]*", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
ENV{nodetype}=="controller", \
|
||||
ENV{rootdisk}=="1", \
|
||||
ATTR{queue/scheduler}=="*\[bfq\]*", \
|
||||
ATTR{queue/iosched/strict_guarantees}=="1", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
ATTR{queue/scheduler}=="*\[mq-deadline\]*", \
|
||||
ATTR{queue/iosched/front_merges}=="0", \
|
||||
ATTR{queue/iosched/read_expire}=="150", \
|
||||
ATTR{queue/iosched/write_expire}=="1500", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
# === === === ===
|
||||
# I/O scheduler settings are not as expected, need to be defined.
|
||||
# === === === ===
|
||||
|
||||
# Set none io scheduler for variants of HW-RAID.
|
||||
# HP ProLiant DL360p Gen8; HP ProLiant DL380p Gen8
|
||||
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[a-z]", ATTRS{raid_level}=="*RAID*", ATTR{queue/scheduler}="none"
|
||||
ATTRS{raid_level}=="*RAID*", \
|
||||
ATTR{queue/scheduler}="none", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
# Dell Inc. PowerEdge R720
|
||||
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[a-z]", ATTRS{label}=="*RAID*", ATTR{queue/scheduler}="none"
|
||||
ATTRS{label}=="*RAID*", \
|
||||
ATTR{queue/scheduler}="none", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
ENV{nodetype}=="controller", \
|
||||
ENV{rootdisk}=="1", \
|
||||
ATTR{queue/scheduler}="bfq", \
|
||||
ATTR{queue/iosched/strict_guarantees}="1", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
ATTR{queue/scheduler}="mq-deadline", \
|
||||
ATTR{queue/iosched/front_merges}="0", \
|
||||
ATTR{queue/iosched/read_expire}="150", \
|
||||
ATTR{queue/iosched/write_expire}="1500", \
|
||||
GOTO="iosched_end"
|
||||
|
||||
LABEL="iosched_end"
|
||||
|
Loading…
x
Reference in New Issue
Block a user