# Set optimal IO schedulers for HDD and SSD ACTION!="add", GOTO="scheduler_end" SUBSYSTEM!="block", GOTO="scheduler_end" # Determine if BLK-MQ is enabled TEST=="%S%p/mq", ENV{.IS_MQ}="1" # Determine if device has multiple hardware queues TEST=="%S%p/mq/1", ENV{.HAS_MQ}="1" # MQ: BFQ scheduler for single queue HDD ENV{.IS_MQ}=="1", ENV{.HAS_MQ}!="1", ATTR{queue/rotational}!="0", ATTR{queue/scheduler}="bfq" # Do not change scheduler if `elevator` cmdline parameter is set IMPORT{cmdline}="elevator" ENV{elevator}=="?*", GOTO="scheduler_end" # Non-MQ: CFQ scheduler for HDD ENV{.IS_MQ}!="1", ATTR{queue/rotational}!="0", ATTR{queue/scheduler}="cfq" # Non-MQ: deadline scheduler for SSD ENV{.IS_MQ}!="1", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" LABEL="scheduler_end"