Вопрос или проблема
В настоящее время мой Wi-Fi адаптер настроен на использование дисциплины очередей noqueue
, и я хочу изменить его на fq_codel
, чтобы это сохранялось при перезагрузках:
ip link show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
Для изменения qdisc
я делаю:
sudo tc qdisc add dev wlan0 root fq_codel
ip link show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
Это работает, qdisc
был изменен, как видно, но только до перезагрузки.
Я также проверил значение по умолчанию для qdisc
, установленное в системе, которое уже равно fq_codel
:
sudo sysctl net.core.default_qdisc
net.core.default_qdisc = fq_codel
Ответ или решение
Чтобы сделать настройки qdisc (в данном случае fq_codel) постоянными и сохранять их после перезагрузки системы, необходимо использовать один из следующих подходов:
1. Использование systemd
Если ваша система использует systemd (что сейчас довольно распространено), вы можете создать систему сервиса, которая будет применяться после загрузки.
Шаги:
-
Создайте файл службы:
sudo nano /etc/systemd/system/tc-setup.service
-
Вставьте следующее содержимое в файл:
[Unit] Description=Setup Traffic Control for wlan0 After=network.target [Service] Type=oneshot ExecStart=/sbin/tc qdisc add dev wlan0 root fq_codel RemainAfterExit=yes [Install] WantedBy=multi-user.target
-
Сохраните файл и закройте редактор.
-
Перезагрузите systemd и включите службу:
sudo systemctl daemon-reload sudo systemctl enable tc-setup.service
Теперь fq_codel
будет применяться автоматически после каждой перезагрузки.
2. Использование скриптов и crontab
Другой способ — использовать crontab для выполнения команды при загрузке.
Шаги:
-
Откройте файл crontab для редактирования:
sudo crontab -e
-
Добавьте следующую строку в конец файла:
@reboot /sbin/tc qdisc add dev wlan0 root fq_codel
-
Сохраните и закройте файл.
Теперь команда будет выполняться каждый раз при перезагрузке системы.
3. Настройка в файле сети
Также в некоторых дистрибутивах Linux можно использовать конфигурационные файлы сети.
Пример для Ubuntu:
-
Откройте файл конфигурации сети:
sudo nano /etc/network/interfaces
-
Найдите интерфейс
wlan0
и добавьте строку для настройки qdisc:auto wlan0 iface wlan0 inet dhcp post-up /sbin/tc qdisc add dev wlan0 root fq_codel
-
Сохраните и закройте файл.
Заключение
Теперь после выполнения указанных шагов, ваша конфигурация qdisc будет оставаться постоянной на wlan0 даже после перезагрузки устройства. В зависимости от вашего дистрибутива Linux может быть один из способов, который лучше всего подходит для вашей ситуации.