Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
udev not setting SSD scheduler
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware
View previous topic :: View next topic  
Author Message
DigitalCorpus
Apprentice
Apprentice


Joined: 30 Jul 2007
Posts: 283

PostPosted: Mon Feb 01, 2021 4:40 am    Post subject: udev not setting SSD scheduler Reply with quote

I mean, I can work around this with a bash script, but that doesn't address the problem at the udev level.

A web search for doing this the "right way" pointed me to a Debian article with the following udev rule
Code:
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"

added to a rules files inside
Code:
/etc/udev/rules.d/


In my kernel I have "mq-deadline" instead, but if I set it to that or even "none", /dev/sd?/queue/scheduler remains unchanged. I've tried a few variations before breaking down and digging more resulting in tests with "udevadm test" which output the following for /dev/sda, which is an SSD:
Code:
Atlas ~ # udevadm test --action="add" -a -p $(udevadm info -q path -n /dev/sda)
calling: test
version 3.2.9
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

=== trie on-disk ===
tool version:          3
file size:         9135321 bytes
header size             80 bytes
strings            2305545 bytes
nodes              6829696 bytes
Load module index
timestamp of '/etc/udev/rules.d' changed
Reading rules file: /lib/udev/rules.d/10-dm.rules
Reading rules file: /lib/udev/rules.d/11-dm-lvm.rules
Reading rules file: /lib/udev/rules.d/13-dm-disk.rules
Reading rules file: /lib/udev/rules.d/40-gentoo.rules
Reading rules file: /lib/udev/rules.d/50-udev-default.rules
Reading rules file: /lib/udev/rules.d/60-block.rules
Reading rules file: /lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /lib/udev/rules.d/60-drm.rules
Reading rules file: /lib/udev/rules.d/60-evdev.rules
Reading rules file: /lib/udev/rules.d/60-input-id.rules
Reading rules file: /lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /lib/udev/rules.d/60-sensor.rules
Reading rules file: /lib/udev/rules.d/60-serial.rules
Reading rules file: /etc/udev/rules.d/60-ssd-scheduler.rules
Reading rules file: /lib/udev/rules.d/64-btrfs-dm.rules
Reading rules file: /lib/udev/rules.d/64-btrfs.rules
Reading rules file: /lib/udev/rules.d/69-dm-lvm-metad.rules
Reading rules file: /lib/udev/rules.d/70-joystick.rules
Reading rules file: /lib/udev/rules.d/70-mouse.rules
Reading rules file: /etc/udev/rules.d/70-persistent-net.rules
Reading rules file: /lib/udev/rules.d/70-power-switch.rules
Reading rules file: /lib/udev/rules.d/70-touchpad.rules
Reading rules file: /lib/udev/rules.d/70-uaccess.rules
Reading rules file: /lib/udev/rules.d/71-seat.rules
Reading rules file: /lib/udev/rules.d/73-seat-late.rules
Reading rules file: /lib/udev/rules.d/75-net-description.rules
Reading rules file: /lib/udev/rules.d/75-persistent-net-generator.rules
Reading rules file: /lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /lib/udev/rules.d/78-sound-card.rules
Reading rules file: /lib/udev/rules.d/80-drivers.rules
Reading rules file: /lib/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /lib/udev/rules.d/80-udisks2.rules
Reading rules file: /lib/udev/rules.d/90-alsa-restore.rules
Reading rules file: /lib/udev/rules.d/90-libinput-fuzz-override.rules
Reading rules file: /lib/udev/rules.d/90-network.rules
Reading rules file: /lib/udev/rules.d/95-dm-notify.rules
Reading rules file: /lib/udev/rules.d/95-upower-csr.rules
Reading rules file: /lib/udev/rules.d/95-upower-hid.rules
Reading rules file: /lib/udev/rules.d/95-upower-hidpp.rules
Reading rules file: /lib/udev/rules.d/95-upower-wup.rules
Reading rules file: /lib/udev/rules.d/96-e2scrub.rules
Reading rules file: /lib/udev/rules.d/99-bumblebee-nvidia-dev.rules
Reading rules file: /lib/udev/rules.d/99-fuse.rules
Reading rules file: /lib/udev/rules.d/99-nvidia.rules
rules contain 49152 bytes tokens (4096 * 12 bytes), 15988 bytes strings
2902 strings (33788 bytes), 2022 de-duplicated (18681 bytes), 881 trie nodes used
IMPORT 'ata_id --export /dev/sda' /lib/udev/rules.d/60-persistent-storage.rules:38
starting 'ata_id --export /dev/sda'
'ata_id --export /dev/sda'(out) 'ID_ATA=1'
'ata_id --export /dev/sda'(out) 'ID_TYPE=disk'
'ata_id --export /dev/sda'(out) 'ID_BUS=ata'
'ata_id --export /dev/sda'(out) 'ID_MODEL=WDC_WDS500G2B0B-00YS70'
'ata_id --export /dev/sda'(out) 'ID_MODEL_ENC=WDC\x20WDS500G2B0B-00YS70\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'
'ata_id --export /dev/sda'(out) 'ID_REVISION=X61190WD'
'ata_id --export /dev/sda'(out) 'ID_SERIAL=<manually redacted>'
'ata_id --export /dev/sda'(out) 'ID_SERIAL_SHORT=<manually redacted>'
'ata_id --export /dev/sda'(out) 'ID_ATA_WRITE_CACHE=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_WRITE_CACHE_ENABLED=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_PM=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_PM_ENABLED=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_SECURITY=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_SECURITY_ENABLED=0'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=2'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN=2'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_SMART=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_SMART_ENABLED=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_APM=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_APM_ENABLED=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=128'
'ata_id --export /dev/sda'(out) 'ID_ATA_DOWNLOAD_MICROCODE=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_SATA=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_SATA_SIGNAL_RATE_GEN2=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_SATA_SIGNAL_RATE_GEN1=1'
'ata_id --export /dev/sda'(out) 'ID_ATA_ROTATION_RATE_RPM=0'
'ata_id --export /dev/sda'(out) 'ID_WWN=0x5001b448b66e988c'
'ata_id --export /dev/sda'(out) 'ID_WWN_WITH_EXTENSION=0x5001b448b66e988c'
'ata_id --export /dev/sda' [9441] exit with return code 0
LINK 'disk/by-id/ata-WDC_WDS500G2B0B-00YS70_174485801108' /lib/udev/rules.d/60-persistent-storage.rules:52
IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-storage.rules:73
IMPORT builtin 'path_id' returned non-zero
IMPORT builtin 'blkid' /lib/udev/rules.d/60-persistent-storage.rules:90
probe /dev/sda raid offset=0
LINK 'disk/by-id/wwn-0x5001b448b66e988c' /lib/udev/rules.d/60-persistent-storage.rules:97
no db file to read /run/udev/data/+scsi:0:0:0:0: No such file or directory
handling device node '/dev/sda', devnum=b8:0, mode=0600, uid=0, gid=0
preserve already existing symlink '/dev/block/8:0' to '../sda'
found 'b8:0' claiming '/run/udev/links/\x2fdisk\x2fby-id\x2fata-WDC_WDS500G2B0B-00YS70_174485801108'
creating link '/dev/disk/by-id/ata-WDC_WDS500G2B0B-00YS70_174485801108' to '/dev/sda'
preserve already existing symlink '/dev/disk/by-id/ata-WDC_WDS500G2B0B-00YS70_174485801108' to '../../sda'
found 'b8:0' claiming '/run/udev/links/\x2fdisk\x2fby-id\x2fwwn-0x5001b448b66e988c'
creating link '/dev/disk/by-id/wwn-0x5001b448b66e988c' to '/dev/sda'
preserve already existing symlink '/dev/disk/by-id/wwn-0x5001b448b66e988c' to '../../sda'
created db file '/run/udev/data/b8:0' for '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda'
.ID_FS_TYPE_NEW=
ACTION=-p
DEVLINKS=/dev/disk/by-id/ata-WDC_WDS500G2B0B-00YS70_174485801108 /dev/disk/by-id/wwn-0x5001b448b66e988c
DEVNAME=/dev/sda
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
DEVTYPE=disk
ID_ATA=1
ID_ATA_DOWNLOAD_MICROCODE=1
ID_ATA_FEATURE_SET_APM=1
ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=128
ID_ATA_FEATURE_SET_APM_ENABLED=1
ID_ATA_FEATURE_SET_PM=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
ID_ATA_FEATURE_SET_SECURITY=1
ID_ATA_FEATURE_SET_SECURITY_ENABLED=0
ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN=2
ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=2
ID_ATA_FEATURE_SET_SMART=1
ID_ATA_FEATURE_SET_SMART_ENABLED=1
ID_ATA_ROTATION_RATE_RPM=0
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_ATA_SATA_SIGNAL_RATE_GEN2=1
ID_ATA_WRITE_CACHE=1
ID_ATA_WRITE_CACHE_ENABLED=1
ID_BUS=ata
ID_FS_TYPE=
ID_MODEL=WDC_WDS500G2B0B-00YS70
ID_MODEL_ENC=WDC\x20WDS500G2B0B-00YS70\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PART_TABLE_TYPE=gpt
ID_PART_TABLE_UUID=6638a92b-30d0-4043-8658-6b70146f773b
ID_REVISION=X61190WD
ID_SERIAL=<manually redacted>
ID_SERIAL_SHORT=<manually redacted>
ID_TYPE=disk
ID_WWN=0x5001b448b66e988c
ID_WWN_WITH_EXTENSION=0x5001b448b66e988c
MAJOR=8
MINOR=0
SUBSYSTEM=block
USEC_INITIALIZED=1327801
Unload module index


And the device tree for /dev/sda is:
Code:
Atlas ~ # udevadm info -a -p $(udevadm info -q path -n /dev/sda)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ext_range}=="256"
    ATTR{range}=="16"
    ATTR{alignment_offset}=="0"
    ATTR{ro}=="0"
    ATTR{stat}=="    9553      974   509953     8452     1856       11   256259     4298        0     6090    12932        0        0        0        0      109      181"
    ATTR{events_poll_msecs}=="-1"
    ATTR{events_async}==""
    ATTR{size}=="976773168"
    ATTR{discard_alignment}=="0"
    ATTR{capability}=="50"
    ATTR{hidden}=="0"
    ATTR{removable}=="0"
    ATTR{events}==""
    ATTR{inflight}=="       0        0"

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0':
    KERNELS=="0:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{evt_media_change}=="0"
    ATTRS{evt_mode_parameter_change_reported}=="0"
    ATTRS{evt_inquiry_change_reported}=="0"
    ATTRS{vendor}=="ATA     "
    ATTRS{evt_capacity_change_reported}=="0"
    ATTRS{model}=="WDC WDS500G2B0B-"
    ATTRS{evt_lun_change_reported}=="0"
    ATTRS{iorequest_cnt}=="0x2d1d"
    ATTRS{wwid}=="naa.5001b448b66e988c"
    ATTRS{iocounterbits}=="32"
    ATTRS{type}=="0"
    ATTRS{queue_type}=="simple"
    ATTRS{device_busy}=="0"
    ATTRS{vpd_pg80}==""
    ATTRS{device_blocked}=="0"
    ATTRS{vpd_pg89}==""
    ATTRS{scsi_level}=="6"
    ATTRS{vpd_pg0}==""
    ATTRS{inquiry}==""
    ATTRS{eh_timeout}=="10"
    ATTRS{state}=="running"
    ATTRS{blacklist}==""
    ATTRS{iodone_cnt}=="0x2ce9"
    ATTRS{queue_ramp_up_period}=="120000"
    ATTRS{queue_depth}=="32"
    ATTRS{ioerr_cnt}=="0x5"
    ATTRS{vpd_pg83}==""
    ATTRS{timeout}=="30"
    ATTRS{evt_soft_threshold_reached}=="0"
    ATTRS{rev}=="90WD"
    ATTRS{ncq_prio_enable}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0':
    KERNELS=="target0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0':
    KERNELS=="host0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1':
    KERNELS=="ata1"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2':
    KERNELS=="0000:00:1f.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="ahci"
    ATTRS{remapped_nvme}=="0"
    ATTRS{broken_parity_status}=="0"
    ATTRS{subsystem_device}=="0xb005"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{vendor}=="0x8086"
    ATTRS{local_cpus}=="f"
    ATTRS{class}=="0x010601"
    ATTRS{msi_bus}=="1"
    ATTRS{device}=="0x2824"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{driver_override}=="(null)"
    ATTRS{d3cold_allowed}=="1"
    ATTRS{irq}=="29"
    ATTRS{revision}=="0x02"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{ari_enabled}=="0"
    ATTRS{enable}=="1"
    ATTRS{subsystem_vendor}=="0x1458"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""


man udev states:
Code:
       ATTR{filename}, SYSCTL{kernel parameter}
           Match sysfs attribute values of the event device. Trailing whitespace in the attribute values is ignored unless
           the specified match value itself contains trailing whitespace.  Match a kernel parameter value.[/quote]


The problem is that udev still isn't setting the scheduler, but the folder and structure properly exist in sysfs for /dev/sda (and the other SSDs:
Code:

Atlas ~ # ls /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/queue
add_random            fua             logical_block_size      minimum_io_size      rotational            write_zeroes_max_bytes
chunk_sectors         hw_sector_size  max_discard_segments    nomerges             rq_affinity           zone_append_max_bytes
dax                   io_poll         max_hw_sectors_kb       nr_requests          scheduler             zoned
discard_granularity   io_poll_delay   max_integrity_segments  nr_zones             stable_writes
discard_max_bytes     io_timeout      max_sectors_kb          optimal_io_size      wbt_lat_usec
discard_max_hw_bytes  iosched         max_segment_size        physical_block_size  write_cache
discard_zeroes_data   iostats         max_segments            read_ahead_kb        write_same_max_bytes


Why is this rule for udev not working?
Back to top
View user's profile Send private message
Ionen
Developer
Developer


Joined: 06 Dec 2018
Posts: 2892

PostPosted: Mon Feb 01, 2021 4:52 am    Post subject: Reply with quote

May want to just try sys-block/io-scheduler-udev-rules instead of messing with this (see the installed README).
Back to top
View user's profile Send private message
DigitalCorpus
Apprentice
Apprentice


Joined: 30 Jul 2007
Posts: 283

PostPosted: Mon Feb 01, 2021 12:17 pm    Post subject: Reply with quote

Nope, that doesn't work either.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum