Вариант примера подпроцесса bash:
выведите две строки в stderr и tee stderr в файл, grep тройник и труба обратно на stdout
(>&2 echo -e 'asdf\nfff\n') 2> >(tee some.load.errors | grep 'fff' >&1)
stdout:
fff
some.load.errors (например, stderr):
asdf
fff
Я не работаю в Ubuntu, но то, что я сделал в Fedora, может вам помочь.
BFQ — это планировщик blk -mq (Multi -Queue Block IO Queuing Mechanism ), поэтому вам необходимо включить blk -mq во время загрузки, отредактируйте файл /etc/default/grub файл и добавьте scsi_mod.use_blk_mq=1
к вашему GRUB_CMDLINE_LINUX
, это мой файл grub, например:
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR="$(sed 's, release.*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=false
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="quiet vt.global_cursor_default=0 scsi_mod.use_blk_mq=1"
GRUB_DISABLE_RECOVERY="true"
После этого вы должны обновить файл grub. В Fedora мы должны использовать sudo grub2-mkconfig -o /path/to/grub.cfg
, который варьируется в зависимости от метода загрузки . В Ubuntu вы можете просто запустить:
sudo update-grub
Перезагрузитесь, и если вы получите это:
cat /sys/block/sda/queue/scheduler
[mq-deadline] none
Вероятно, ваше ядро было скомпилировано с BFQ в качестве модуля , и это может иметь место и для Kyber.
sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none
Вы можете добавить его во время загрузки, добавив /etc/modules-load.d/bfq.conf
файл, содержащий bfq
.
Важно отметить, что включение blk _mq делает невозможным использование планировщиков, отличных от blk _mq, поэтому вы потеряете noop cfq и крайний срок, отличный от mq
Судя по всему, система планирования blk _mq не поддерживает флаги лифта в grub, вместо этого можно использовать правила udev с бонусом, предлагающим более детальный контроль.
Создайте /etc/udev/rules.d/60-scheduler.rules
, если он не существует, и добавьте:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Как указано здесь , при необходимости вы можете различать вращающиеся (жесткие диски )и не-вращающиеся (твердотельные накопители )в правилах udev, используя атрибут ATTR{queue/rotational}
. Имейте в виду, что Паоло Валенте, разработчик BFQ, указал на LinuxCon Europe, что BFQ может быть лучшим выбором, чем планировщики noop
или deadline
, с точки зрения гарантий низкой задержки, поэтому рекомендуется использовать его и для твердотельных накопителей.
Сравнение Паоло:https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
Спаси его,перезарядить и запуститьudev rules
:
sudo udevadm control --reload
sudo udevadm trigger
Продлить великий RomuloPBenedetti answer:
Вы можете проверить, действительно ли планировщик bfq доступен на конкретном устройстве, используя PROGRAM=="/bin/grep -E -q '(^|[[:space:]])bfq($|[[:space:]])' '$sys$devpath/queue/scheduler'"
в правиле udev. Это эффективно заменит DRIVERS=="sd|sr"
и просто не сработает, если кто-то забылscsi_mod.use_blk_mq=1
Мелочи:
PROGRAM
-Выполнить программу, чтобы определить, есть ли совпадение; ключ истинен, если программа возвращается успешно; Если абсолютный путь не указан, ожидается, что программа будет находиться в /lib/udev. $sys
-Точка монтирования sysfs(/sys
). $devpath
-Путь устройства (/devices/pci/... ).