[РЕШЕНО] Почему так много serial8250-tty устройств?

Приветствую всех.
Посмотрел запущенные сервисы и обнаружил 32 активных юнит-device:
# systemctl
...
  sys-devices-platform-serial8250-tty-ttyS0.device        loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS0
  sys-devices-platform-serial8250-tty-ttyS1.device        loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS1
... тут еще 28 таких же строк ...
  sys-devices-platform-serial8250-tty-ttyS30.device      loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS30
  sys-devices-platform-serial8250-tty-ttyS31.device      loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS31

# ls /dev/tty*
/dev/tty    /dev/tty23  /dev/tty39  /dev/tty54   /dev/ttyS11  /dev/ttyS27
/dev/tty0   /dev/tty24  /dev/tty4   /dev/tty55   /dev/ttyS12  /dev/ttyS28
/dev/tty1   /dev/tty25  /dev/tty40  /dev/tty56   /dev/ttyS13  /dev/ttyS29
/dev/tty10  /dev/tty26  /dev/tty41  /dev/tty57   /dev/ttyS14  /dev/ttyS3
/dev/tty11  /dev/tty27  /dev/tty42  /dev/tty58   /dev/ttyS15  /dev/ttyS30
/dev/tty12  /dev/tty28  /dev/tty43  /dev/tty59   /dev/ttyS16  /dev/ttyS31
/dev/tty13  /dev/tty29  /dev/tty44  /dev/tty6    /dev/ttyS17  /dev/ttyS4
/dev/tty14  /dev/tty3   /dev/tty45  /dev/tty60   /dev/ttyS18  /dev/ttyS5
/dev/tty15  /dev/tty30  /dev/tty46  /dev/tty61   /dev/ttyS19  /dev/ttyS6
/dev/tty16  /dev/tty31  /dev/tty47  /dev/tty62   /dev/ttyS2   /dev/ttyS7
/dev/tty17  /dev/tty32  /dev/tty48  /dev/tty63   /dev/ttyS20  /dev/ttyS8
/dev/tty18  /dev/tty33  /dev/tty49  /dev/tty7    /dev/ttyS21  /dev/ttyS9
/dev/tty19  /dev/tty34  /dev/tty5   /dev/tty8    /dev/ttyS22
/dev/tty2   /dev/tty35  /dev/tty50  /dev/tty9    /dev/ttyS23
/dev/tty20  /dev/tty36  /dev/tty51  /dev/ttyS0   /dev/ttyS24
/dev/tty21  /dev/tty37  /dev/tty52  /dev/ttyS1   /dev/ttyS25
/dev/tty22  /dev/tty38  /dev/tty53  /dev/ttyS10  /dev/ttyS26
Почему их так много? Это нормально?
Если это влияет на производительность, то надо ли уменьшать их количество и как?
Я так понимаю, на материнке есть COM-порт, который не выведен на заднюю панель. Но почему так много устройств systemd поднимает?
Потому, что так задано в конфиге ядра. Нормально. Не влияет. Перекомпилировать ядро с параметром CONFIG_SERIAL_8250_NR_UARTS=4, если вам надо только 4 устройства.
ЗЫ. Системдэ поднимает все, что опознает ядро.
anode
Потому, что так задано в конфиге ядра. Нормально.
Ок. Спасибо!

Если я правильно понял, фактически драйвером обслуживается 4 из 32 устройств:
#dmesg | grep tty
printk: console [tty0] enabled
systemd[1]: Created slice system-getty.slice.
dw-apb-uart.8: ttyS4 at MMIO 0xa121c000 (irq = 4, base_baud = 115200) is a 16550A
dw-apb-uart.9: ttyS5 at MMIO 0xa121a000 (irq = 5, base_baud = 115200) is a 16550A
dw-apb-uart.10: ttyS6 at MMIO 0xfea10000 (irq = 6, base_baud = 115200) is a 16550A
dw-apb-uart.11: ttyS7 at MMIO 0xa1218000 (irq = 7, base_baud = 115200) is a 16550A
Максимальное количество последовательных портов можно ограничить, передав ядру параметр: 8250.nr_uarts=4
Также можно заблокировать загрузку модуля драйвера: blacklist 8250_dw
vinc
Максимальное количество последовательных портов можно ограничить, передав ядру параметр: 8250.nr_uarts=4
Также можно заблокировать загрузку модуля драйвера: blacklist 8250_dw
А смысл? .... никаких ощутимых плюсов при этом не приобретем. Большая часть всего это просто прописана, а физического значения не имеет.
Посмотрим на это с другой стороны, а точнее посмотрим на устройства char TTY devices, имеющие major = 4, а minor ??? - о он следующий
minor = 1 - 63 - это ttyN (/dev/tty0 - /dev/tty63)
minor = 64 - 95 - это ttySN (/dev/ttyS0 - /dev/ttyS31)
То есть одно сокращаем, а другое оставляем?
Посмотрим далее, что активно из всего этого
cat /sys/class/tty/tty*/active
tty1
cat /sys/class/tty/ttyS*/irq | sed '/0/d' # удаляю строки, имеющие значение 0
4
3
4
3
не доконца понимаю этот вывод, но можно предположить, что активно всего 4 порта ... не порта, а ... даже не знаю как это и назвать?
cat /sys/class/tty/ttyS*/iomem_base | sed '/0/d' # удаляю строки, имеющие значение 0
… пусто ...
cat /sys/class/tty/ttyS*/type | sed '/0/d' # удаляю строки, имеющие значение 0
… пусто ...
Может в чем то и неправ, но понимаю так, что и без уменьшения вроде бы все нормально.
Ошибки не исчезают с опытом - они просто умнеют
vasek
никаких ощутимых плюсов при этом не приобретем
Плюс 1: косметический - вывод systemctl уменьшился на полтора экрана;)
Плюс 2: если заблокировать ненужный модуль, то какие-то крохи при загрузке можно и выиграть.
Плюс 3: образовательный - погуглил, поэкспериментировал и теперь знаю, что это и как этим управлять.
vasek
без уменьшения вроде бы все нормально.
Да, нормально, как и сказал anode. Здесь нет ни ошибок, ни простора для оптимизации.
vinc
Плюс 3: образовательный - погуглил, поэкспериментировал и теперь знаю, что это и как этим управлять.
Вот это, по моему, самый существенный плюс .... кстати, и для меня это тоже было полезно - что то вспомнил, что то узнал новое ...
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.