taf_321 Опубликовано 3 мая, 2019 · Жалоба 1 час назад, demi сказал: Что может вызывать кратковременное рассыпание областей (особенно динамичных мест) на картинке? Увеличьте размер буферов под udp. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
demi Опубликовано 4 мая, 2019 · Жалоба 14 часов назад, taf_321 сказал: Увеличьте размер буферов под udp. rcvBuf = 2048 маловато? Не совсем понятно, как он на linux соотносится с rcvLowat и как им управлять, если он игнорируется ядром? Что значит : данный параметр реализован в программе ... Где можно пожробнее прочитать рпо кольцевой буфер? rcvBuf Максимальный размер буфера для приёма (SO_RCVBUF). rcvLowat Минимальный размер данных в буфере сокета для начала считывания в кольцевой буфер и анализа (если задан флаг fMPEG2TSAnalyzing) (SO_RCVLOWAT). На Linux данный параметр игнорируется ядром и чтение для udp осуществляется по пакетно, что ощутимо повышает нагрузку. Для tcp чтение осуществляется по мере поступления данных. Для Linux данный параметр реализован в программе, что позволило немножко сэкономить ресурсы процессора. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 5 мая, 2019 · Жалоба Речь немного нее про это. Я имел в виду параметр ядра net.ipv4.udp_mem какое сейчас у него значение? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
demi Опубликовано 5 мая, 2019 · Жалоба 24 минуты назад, taf_321 сказал: Речь немного нее про это. Я имел в виду параметр ядра net.ipv4.udp_mem какое сейчас у него значение? sysctl -p | grep mem net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65535 16777216 sysctl -p | grep udp Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 5 мая, 2019 · Жалоба Очень странно, что параметр не нашелся по первому grep. Настройки у моего стримера с 10G портами: net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.ipv4.udp_mem = 8388608 16777216 33554432 net.ipv4.tcp_rmem = 4096 87380 33554432 net.ipv4.tcp_wmem = 4096 65536 33554432 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
demi Опубликовано 5 мая, 2019 · Жалоба Msd_lite не пишет в Ramdisk, почему-то открывает файлы в /tmp на hdd root@iptvunicaster2:~# /etc/init.d/msd_lite status root@iptvunicaster2:~# lsof /tmp COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME atopacctd 7100 root cwd DIR 254,3 4096 2 /tmp root@iptvunicaster2:~# lsof /mnt/ramdisk/ root@iptvunicaster2:~# lsof /tmp COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME atopacctd 7100 root cwd DIR 254,3 4096 2 /tmp msd_lite 17623 root DEL-W REG 254,3 11 /tmp/msd-17623-4435664b198f55f876bf17089e78647b.tmp msd_lite 17623 root 34uW REG 254,3 16777216 11 /tmp/msd-17623-4435664b198f55f876bf17089e78647b.tmp (deleted) root@iptvunicaster2:~# cat /etc/msd_lite/msd_lite.conf | grep ring <ringBufSize>16384</ringBufSize> <!-- Stream receive ring buffer size. Must be multiple of sndBlockSize. --> <ringBufStorePath>/mnt/ramdisk</ringBufStorePath> root@iptvunicaster2:~# root@iptvunicaster2:~# free -h total used free shared buff/cache available Mem: 7,8G 97M 6,4G 82M 1,3G 7,4G Swap: 8,0G 0B 8,0G root@iptvunicaster2:~# mount | grep /mnt tmpfs on /mnt/ramdisk type tmpfs (rw,relatime,size=2097152k) Почему? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 6 мая, 2019 · Жалоба Потому что: /* Create buf */ thrpt_gettimev(str_hub->thrpt, 0, &tv_now); md5_get_digest_strA((char*)&tv_now, sizeof(tv_now), (char*)hash); snprintf(filename, (sizeof(filename) - 1), "/tmp/msd-%zu-%s.tmp", (size_t)getpid(), hash); str_hub->r_buf_fd = open(filename, (O_CREAT | O_EXCL | O_RDWR), 0600); Поднимите /tmp на tempfs. Кстати, дереве исходников msd_lite параметра ringBufStorePath вообще нигде не встречается. Откуда вы его взяли? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
demi Опубликовано 6 мая, 2019 · Жалоба 4 часа назад, taf_321 сказал: Потому что: /* Create buf */ thrpt_gettimev(str_hub->thrpt, 0, &tv_now); md5_get_digest_strA((char*)&tv_now, sizeof(tv_now), (char*)hash); snprintf(filename, (sizeof(filename) - 1), "/tmp/msd-%zu-%s.tmp", (size_t)getpid(), hash); str_hub->r_buf_fd = open(filename, (O_CREAT | O_EXCL | O_RDWR), 0600); Поднимите /tmp на tempfs. Кстати, дереве исходников msd_lite параметра ringBufStorePath вообще нигде не встречается. Откуда вы его взяли? Взял его от сюда: http://www.netlab.linkpc.net/wiki/ru:software:msd:config Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 6 мая, 2019 · Жалоба Это конфиг от платной версии. Лучше возьмите конфиг из исходников msd_lite. http://www.netlab.linkpc.net/wiki/ru:software:msd:lite#настройки Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
demi Опубликовано 6 мая, 2019 · Жалоба Только что, taf_321 сказал: Это конфиг от платной версии. Лучше возьмите конфиг из исходников msd_lite. А где его взять? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 6 мая, 2019 · Жалоба http://www.netlab.linkpc.net/download/software/msd/lite/msd_lite.conf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 8 мая, 2019 · Жалоба В 05.05.2019 в 12:22, demi сказал: Msd_lite не пишет в Ramdisk, почему-то открывает файлы в /tmp на hdd Почему то у вас /tmp на диск смонтирован :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
demi Опубликовано 8 мая, 2019 · Жалоба 6 часов назад, Ivan_83 сказал: Почему то у вас /tmp на диск смонтирован :) Никак нет: root@iptvunicaster2:~# mount | grep /tmp tmpfs on /tmp type tmpfs (rw,relatime) root@iptvunicaster2:~# Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 8 мая, 2019 · Жалоба Тогда и файлы открываемые в /tmp не могут быть на hdd. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 8 мая, 2019 · Жалоба 1 час назад, Ivan_83 сказал: Тогда и файлы открываемые в /tmp не могут быть на hdd. Не в этом дело. Человек прописал настройку для фичи из платной версии, и удивился что работает не по конфигу. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vurd Опубликовано 22 августа, 2019 · Жалоба @Ivan_83, подскажите, а оно при изменении переменной congestionControl на bbr заработает, если в системе есть поддержка? В плане алгоритм прозрачно выбирается или нужно еще что-то делать, чтобы на него перейти. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
h3ll1 Опубликовано 29 августа, 2019 · Жалоба On 5/5/2019 at 11:30 AM, demi said: sysctl -p А как сделать на debian 9 on boot? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 5 сентября, 2019 · Жалоба Имеется большая проблема на связке msd_lite+nginx proxy_pass, связанных через lo. В этом случае msd шлет пакеты размером 32767 байт. Которые, разумеется, потом фрагментируются. Проявляется это в виде рассыпания картинки на приставках Eltex. С udpxy таких проблем не обнаружено. VLC показывает при этом нормально. пакеты на входе имеют длину 1316 байт Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 6 сентября, 2019 · Жалоба Вообще, реализация mpegts@http у eltex nv100 очень кривая. 301-302 кодов не знает, потерянные пакеты перезапрашивать не умеет. Как ни странно, если передать ей заголовок content leght 999999999999999999999999999999999, то никаких проблем с просмотром больше нет, но крайне долго(более 10 секунд) переключается канал Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 8 сентября, 2019 · Жалоба В 22.08.2019 в 16:45, vurd сказал: подскажите, а оно при изменении переменной congestionControl на bbr заработает, если в системе есть поддержка? В плане алгоритм прозрачно выбирается или нужно еще что-то делать, чтобы на него перейти. Да, фишка в том, что ты можешь указывать на разных биндингах разные tcp cc и оно реально per socket будет разным, если конечно ядерный модуль с таким именем загружен. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
cyb3r_ang31 Опубликовано 16 октября, 2019 · Жалоба Доброго времени суток. С недавних пор стал падать msd_lite каждый день примерно в одно и тоже время в ЧНН. В логах следующее: [2019-10-14 20:34:22] http_srv_new_conn_cb, line 892: error 9: Bad file descriptor client ip: 127.0.0.1:33266 ... [2019-10-14 20:34:23] http_srv_new_conn_cb, line 892: error 9: Bad file descriptor client ip: 127.0.0.1:33270 ... [2019-10-14 20:34:27] str_hub_create_int, line 510: io_task_notify_create() error 9: Bad file descriptor [2019-10-14 20:34:34]: Multi stream daemon lite 1.08: started [2019-10-14 20:34:34]: Build: Oct 25 2017 11:40:33, Release [2019-10-14 20:34:34]: CPU count: 16 [2019-10-14 20:34:34]: descriptor table size: 1024 (max files) [2019-10-14 20:34:34]: Thread 1 started... [2019-10-14 20:34:34]: Thread 3 started... [2019-10-14 20:34:34]: Bind thread 3 to CPU 3 [2019-10-14 20:34:34]: Bind thread 1 to CPU 1 [2019-10-14 20:34:34]: Thread 5 started... [2019-10-14 20:34:34]: Thread 4 started... [2019-10-14 20:34:34]: Thread 2 started... [2019-10-14 20:34:34]: Thread 10 started... [2019-10-14 20:34:34]: Thread 11 started... [2019-10-14 20:34:34]: Thread 7 started... [2019-10-14 20:34:34]: Thread 14 started... [2019-10-14 20:34:34]: Thread 8 started... [2019-10-14 20:34:34]: Bind thread 4 to CPU 4 [2019-10-14 20:34:34]: Thread 9 started... [2019-10-14 20:34:34]: Bind thread 2 to CPU 2 [2019-10-14 20:34:34]: Bind thread 9 to CPU 9 [2019-10-14 20:34:34]: Bind thread 5 to CPU 5 [2019-10-14 20:34:34]: Bind thread 10 to CPU 10 [2019-10-14 20:34:34]: Thread 12 started... [2019-10-14 20:34:34]: Thread 13 started... [2019-10-14 20:34:34]: Bind thread 11 to CPU 11 [2019-10-14 20:34:34]: Bind thread 12 to CPU 12 [2019-10-14 20:34:34]: Bind thread 7 to CPU 7 [2019-10-14 20:34:34]: Thread 15 started... [2019-10-14 20:34:34]: Bind thread 14 to CPU 14 [2019-10-14 20:34:34]: hostname: * [2019-10-14 20:34:34]: Thread 6 started... [2019-10-14 20:34:34]: Bind thread 8 to CPU 8 [2019-10-14 20:34:34]: Bind thread 6 to CPU 6 [2019-10-14 20:34:34]: bind 127.0.0.1:4022, backlog = 2048, cc_name = htcp [2019-10-14 20:34:34]: Thread 0 started... [2019-10-14 20:34:34]: Bind thread 13 to CPU 13 [2019-10-14 20:34:34]: Bind thread 0 to CPU 0 [2019-10-14 20:34:34]: Bind thread 15 to CPU 15 Подскажите где что посмотреть, судя по логам что то с дескрипторами файлов, но параметры max files, open files и тд везде увеличивать пробовали, не помогает. И почему descriptor table size: 1024 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 17 октября, 2019 · Жалоба 9 часов назад, cyb3r_ang31 сказал: И почему descriptor table size: 1024 1. limit или limits смотрите 2. конфиг самого msd_lite проверьте Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
crank Опубликовано 29 октября, 2019 · Жалоба Собрал новый сервер. Система Ubuntu 18.04. По началу текли дрова сетевой ixgbe. Обновил до последней версии. Сейчас периодически в ЧНН начинает сыпаться картинка на всех каналах. Помогает перезапуск msd_lite. Сетевая карта X520-DA2. Два порты собраны в лаг. Тюнинг сетевого стека sysctl -w net.core.rmem_default=8388608 sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_default=8388608 sysctl -w net.core.wmem_max=16777216 sysctl -w net.ipv4.tcp_rmem="8192 87380 8388608" sysctl -w net.ipv4.tcp_wmem="8192 87380 8388608" sysctl -w net.ipv4.tcp_mem="8388608 12582912 16777216" sysctl -w net.ipv4.udp_mem="8388608 12582912 16777216" sysctl -w net.ipv4.udp_rmem_min=16384 sysctl -w net.ipv4.udp_wmem_min=16384 ethtool -G enp7s0f0 rx 4096 tx 4096 ethtool -A enp7s0f0 autoneg off rx off tx off ethtool -G enp7s0f1 rx 4096 tx 4096 ethtool -A enp7s0f1 autoneg off rx off tx off msd_lite запускаю с помощью systemd. Юнит запуска [Unit] Description=MSD Lite After=network.target [Service] LimitNOFILE=262144 WorkingDirectory=/opt/msd ExecStart=/opt/msd/msd_lite -c msd_lite.conf ExecStop=/bin/kill -9 $MAINPID Restart=always RestartSec=10 [Install] WantedBy=multi-user.target Все потоки пишутся в /tmp, которая является tmpfs. Пока замечено, что проблема появляется когда кол-во клиентов приближается к 2 тыс. Трафика при этом 6-7 Гбит. На этом же серваке выжимали из msd_lite 15 Гбит, но система крякнулась в один прекрасный момент и потребовалась переустановка. PS На всякий случай включил запись логов, чтобы можно было посмотреть в момент проблемы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 30 октября, 2019 · Жалоба Сколько каналов? И сколько с них в сумме входящий? Сыпет - скорее всего с получением проблемы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
crank Опубликовано 30 октября, 2019 · Жалоба 2 часа назад, Ivan_83 сказал: Сколько каналов? И сколько с них в сумме входящий? Сыпет - скорее всего с получением проблемы. @Ivan_83 , разобрался с проблемой. Сам виноват. Причина рассыпаний была в том, что в процессах висел irqbalance, который раскидал прерывания таким образом по ядрам, что в ЧНН одно ядро в 100% улетало в soft irq. Вырубил irqbalance. Раскидал прерывания скриптом. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...