Jump to content
Калькуляторы

msd Lite - тестируем Замена udpxy если у кого оно ещё осталось

1 час назад, demi сказал:

Что может вызывать кратковременное рассыпание областей (особенно динамичных мест) на картинке?

Увеличьте размер буферов под udp.

Share this post


Link to post
Share on other sites
14 часов назад, taf_321 сказал:

Увеличьте размер буферов под udp.

rcvBuf = 2048 маловато? 

 

Не совсем понятно, как он на linux соотносится с rcvLowat и как им управлять, если он игнорируется ядром? Что значит : данный параметр реализован в программе ...

 

Где можно пожробнее прочитать рпо кольцевой буфер?

rcvBuf

Максимальный размер буфера для приёма (SO_RCVBUF).

rcvLowat

Минимальный размер данных в буфере сокета для начала считывания в кольцевой буфер и анализа (если задан флаг fMPEG2TSAnalyzing) (SO_RCVLOWAT).
На Linux данный параметр игнорируется ядром и чтение для udp осуществляется по пакетно, что ощутимо повышает нагрузку.
Для tcp чтение осуществляется по мере поступления данных.
Для Linux данный параметр реализован в программе, что позволило немножко сэкономить ресурсы процессора.

Share this post


Link to post
Share on other sites

Речь немного нее про это. Я имел в виду параметр ядра net.ipv4.udp_mem какое сейчас у него значение?

Share this post


Link to post
Share on other sites
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
 

Share this post


Link to post
Share on other sites

Очень странно, что параметр не нашелся по первому 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

 

Share this post


Link to post
Share on other sites

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)
 

Почему?

 

Share this post


Link to post
Share on other sites

Потому что:
 

        /* 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 вообще нигде не встречается. Откуда вы его взяли?

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Только что, taf_321 сказал:

Это конфиг от платной версии. Лучше возьмите конфиг из исходников msd_lite.

А где его взять?

Share this post


Link to post
Share on other sites
В 05.05.2019 в 12:22, demi сказал:

Msd_lite не пишет в Ramdisk, почему-то открывает файлы в /tmp на hdd

Почему то у вас /tmp на диск смонтирован :)

Share this post


Link to post
Share on other sites
6 часов назад, Ivan_83 сказал:

Почему то у вас /tmp на диск смонтирован :)

Никак нет:

root@iptvunicaster2:~# mount | grep /tmp
tmpfs on /tmp type tmpfs (rw,relatime)
root@iptvunicaster2:~#
 

Share this post


Link to post
Share on other sites

Тогда и файлы открываемые в /tmp не могут быть на hdd.

Share this post


Link to post
Share on other sites
1 час назад, Ivan_83 сказал:

Тогда и файлы открываемые в /tmp не могут быть на hdd.

Не в этом дело. Человек прописал настройку для фичи из платной версии, и удивился что работает не по конфигу.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now