Перейти к содержимому
Калькуляторы

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

Все, поборол! Засада была в /etc/login.conf - там было прописано ограничение на locked memory = 64k - рудимент от многочисленных апгрейдов ядра. После снятия ограничений msd_lite заработала.

 

П.С. По первым впечатлениям msd явно получше udpxy. Все проблемные для udpxy каналы msd ретранслирует идеально. Автору респект!

Изменено пользователем nemo_lynx

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я всё не соберусь обновить - выложить, там внутри лочить память не принципиально, но пару % экономии проца оно точно даёт при больших нагрузках.

Для HD рекомендую прекеш 8 мегабайт, а для SD 4 мегабайта.

lite не умеет принимать когда клиентов нет, отчасти сделано для того чтобы не забивать память когда появляется продвинутый абонент который сканирует мультикаст группы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

добрый день.

 

2016-09-13 23:39:58] main, line 420: setpriority() error 13: Permission denied^M

[2016-09-13 23:39:58]: Thread 7 started...^M

[2016-09-13 23:39:58]: Bind thread 5 to CPU 5^M

[2016-09-13 23:39:58]: Thread 6 started...^M

[2016-09-13 23:39:58]: Bind thread 7 to CPU 7^M

[2016-09-13 23:39:58]: Bind thread 6 to CPU 6^M

[2016-09-13 23:39:58]: hostname: *^M

[2016-09-13 23:39:58] http_srv_acc_add, line 502: io_net_is_tcp_cc_avail() fail, this is not fatal. error 22: Invalid argument^M

[2016-09-13 23:39:58]: bind 10.254.0.3:1234 , backlog = 2048, cc_name = htcp^M

[2016-09-13 23:39:58]: Thread 0 started...^M

[2016-09-13 23:39:58]: Bind thread 4 to CPU 4^M

[2016-09-13 23:39:58]: Bind thread 0 to CPU 0^M

[2016-09-13 23:39:59]: /udp/239.0.0.87:4000@vlan1708: Created. (fd: 12)^M

[2016-09-13 23:39:59]: /udp/239.0.0.87:4000@vlan1708 - 10.4.0.3:55255: attached, cli_count = 1^M

[2016-09-13 23:39:59] str_src_r_buf_alloc, line 985: ... error 1: Operation not permitted^M

[2016-09-13 23:39:59] str_src_recv_mc_cb, line 873: on receive error 1: Operation not permitted^M

[2016-09-13 23:39:59]: /udp/239.0.0.87:4000@vlan1708 - 10.4.0.3:55255: deattached, cli_count = 0^M

[2016-09-13 23:39:59]: /udp/239.0.0.87:4000@vlan1708: Destroyed.^M

 

FreeBSD 9.3 amd64

 

а на 10.2 работает

 

решил

на 9 cc_htcp не загружалось....

Изменено пользователем ser970

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуй:

- увеличить sysctl vm.max_wired

- запускай от рута

- убедись что /tmp это md/tmpfs фс достаточного объёма с правами на запись

 

выше уже пару раз обсуждалось что ещё можно подкрутить в таком случае, в частности в login.conf бывали рудименты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно вопросы по возможностям?

 

Протокол трансляции только MPEG-TS over HTTP? Планируется ли поддержка HLS?

 

Авторизация абонентов есть? Увидел, что упомянут Radius, это как то связано?

 

Очень хотелось бы найти стриммер, который работает по радиусу. Что то типа приходит запрос от клиента, сервер дергает Радиус и разрешает доступ. В случае реджекта, клиенту крутится записанный рекламный ролик.

 

Я, случаем, не хочу чего то странного?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это уже не в лайт версии явно :)

 

Рабочий пока только mpeg2-ts@http.

HLS планируется, и он уже в некотором виде есть, но сегментор не работает правильно либо я что то ещё упустил.

 

С радиусом я застрял на схемах http авторизации, если забить и сделать просто по IP то можно быстрее.

Про канал "денег дай" я думал уже давно, изначально в режекте у радиуса можно передавать текст, я планировал чтобы там было название канала/хаба.

Аккаунтинг тоже не проблема, особенно если забить на возможные падения радиус сервера.

 

Но сейчас у меня время уходит на прикручивание тюнеров.

Я хочу помимо скучного статического приёма (когда один тюнер всегда принимает один транспондер и стримит его) сделать возможность динамически принимать по запросу, те допустим есть два тюнера и 4 транспондера, в конфиге прописаны все каналы со всех транспондеров и к любому из них можно в любой момент подключится. При обращении к каналу тюнер настраивается на нужный транспондер и начинает забирать все каналы с него. Если в это время кто то ещё захочет посмотреть каналы с др транспондера то его обслужит второй тюнер. Если приходит запрос на каналы с тарнспондера на который нет свободного тюнера то облом, если же есть тюнер который стримит каналы которые никто не смотрит то он пере настроится...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Бинарник, для скачивания у вас на сайте, под какую ОС(Freebsd)/32/64 собран?

Изменено пользователем Brainiac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

root@convert:/usr/home/admin/msd_lite-1.08 # uname -a
FreeBSD convert 8.4-RELEASE-p35 FreeBSD 8.4-RELEASE-p35 #0: Tue Jul 28 10:55:26 UTC 2015     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

root@convert:/usr/home/admin/msd_lite-1.08 # make
...
depbase=`echo src/core_log.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/core_log.o -MD -MP -MF $depbase.Tpo -c -o src/core_log.o src/core_log.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/core_helpers.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/core_helpers.o -MD -MP -MF $depbase.Tpo -c -o src/core_helpers.o src/core_helpers.c && mv -f $depbase.Tpo $depbase.Po
src/core_helpers.c: In function 'mmalloc_fd':
src/core_helpers.c:93: error: 'MAP_ALIGNED_SUPER' undeclared (first use in this function)
src/core_helpers.c:93: error: (Each undeclared identifier is reported only once
src/core_helpers.c:93: error: for each function it appears in.)
*** Error code 1

Stop in /usr/home/admin/msd_lite-1.08/src.
*** Error code 1

Stop in /usr/home/admin/msd_lite-1.08/src.
*** Error code 1

Stop in /usr/home/admin/msd_lite-1.08.

 

Или все-таки надо под 9 или 10кой ставить?

Из описания для лайт не понятно под какую версию ОС собирать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Под 8х можно собрать, нужно вот эту MAP_ALIGNED_SUPER удалить - это ничего не сломает.

Следующую версию можно будет и под 7х собрать, но это никому видимо не надо уже :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Убрал как сказали, теперь следующее:

 

...
epbase.Tpo $depbase.Po
src/core_helpers.c: In function 'mmalloc_fd':
src/core_helpers.c:95: error: expected expression before ')' token
*** Error code 1

Stop in /usr/home/admin/msd_lite-1.08/src.
*** Error code 1

Stop in /usr/home/admin/msd_lite-1.08/src.
*** Error code 1

Stop in /usr/home/admin/msd_lite-1.08.

 

Кстати, под FreeBSD 9.3-RELEASE-p42 собралось все отлично, но хотелось бы под 8ку

Изменено пользователем Brainiac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

| MAP_ALIGNED_SUPER - вертикальную палочку тоже удалять надо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну вот, не знаю таких тонкостей. Теперь собралось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то пошло не так...

 

msd.conf

 

 

<?xml version="1.0" encoding="utf-8"?>

<msd>
       <log>
               <file>/var/log/msd.log</file>
       </log>


       <threadPool>
               <threadsCount>0</threadsCount> <!-- 0 = auto -->
               <fBindToCPU>yes</fBindToCPU> <!-- Bind threads to CPUs. -->
               <fCacheGetTimeSyscall>yes</fCacheGetTimeSyscall> <!-- Cache gettime() syscalls.. -->
               <timerGranularity>100</timerGranularity> <!-- 1/1000 sec -->
       </threadPool>


       <systemResourceLimits> <!-- "unlimited"  - value valid only in this section! -->
               <maxOpenFiles>8192</maxOpenFiles> <!-- Numbers only! -->
               <maxCoreFileSize>unlimited</maxCoreFileSize>
               <processPriority>-10</processPriority> <!-- Program scheduling priority. setpriority(). Hi: -20, Low: 20, Default: 0 -->
       </systemResourceLimits>


       <!-- HTTP server -->
       <!-- Sizes in kb, time in seconds -->
       <HTTP>
               <!-- HTTP server settings. -->
               <skt>
                       <rcvBuf>4</rcvBuf>
                       <sndBuf>256</sndBuf>
                       <rcvTimeout>30</rcvTimeout>
                       <sndTimeout>30</sndTimeout>
               </skt>

               <ioBufInitSize>4</ioBufInitSize> <!-- HTTP request receive buf initial size. -->
               <ioBufMaxSize>4</ioBufMaxSize> <!-- HTTP request receive max buf size. -->

               <bindList>
                       <bind>
                               <address>10.3.1.30:7088</address>
                               <backlog>2048</backlog>
                               <fAcceptFilter>yes</fAcceptFilter> <!-- Set SO_ACCEPTFILTER(httpready)/ TCP_DEFER_ACCEPT. -->
                               <congestionControl>htcp</congestionControl> <!-- TCP_CONGESTION: replace cc from OS default -->
                       </bind>
               </bindList>

               <hostnameList> <!-- This host names for all addresses. -->
                       <hostname>*</hostname>
               </hostnameList>
       </HTTP>
<hubProfileList> <!-- Stream hub profiles templates. -->
               <hubProfile>
                       <fDropSlowClients>no</fDropSlowClients> <!-- Disconnect slow clients. -->
                       <fSocketHalfClosed>no</fSocketHalfClosed> <!-- Enable shutdown(SHUT_RD) for clients. -->
                       <fSocketTCPNoDelay>yes</fSocketTCPNoDelay> <!-- Enable TCP_NODELAY for clients. -->
                       <fSocketTCPNoPush>yes</fSocketTCPNoPush> <!-- Enable TCP_NOPUSH / TCP_CORK for clients. -->
                       <precache>512</precache> <!-- Pre cache size. Can be overwritten by arg from user request. -->
                       <sndBlockSize>64</sndBlockSize>  <!-- Send block size. Must be multiple of 4. -->
                       <ringBufSize>256</ringBufSize> <!-- Stream receive ring buffer size. Must be multiple of sndBlockSize. -->
                       <skt>
                               <sndBuf>512</sndBuf> <!-- Max send block size, apply to clients sockets only, must be > sndBlockSize. -->
                               <congestionControl>htcp</congestionControl> <!-- TCP_CONGESTION: this value replace/overwrite(!) all others cc settings: cc f
                       </skt>
                       <headersList> <!-- Custom HTTP headers (sended before stream). -->
                               <header>Pragma: no-cache</header>
                               <header>Content-Type: video/mpeg</header>
                               <header>ContentFeatures.DLNA.ORG: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000</header>
                               <header>TransferMode.DLNA.ORG: Streaming</header>
                       </headersList>
               </hubProfile>
       </hubProfileList>


       <sourceProfileList> <!-- Stream source profiles templates. -->
               <sourceProfile>
                       <skt>
                               <rcvBuf>512</rcvBuf> <!-- Multicast recv socket buf size. -->
                               <rcvLowat>48</rcvLowat> <!-- Actual cli_snd_block_min if polling is off. -->
                               <rcvTimeout>2</rcvTimeout> <!-- STATUS, Multicast recv timeout. -->
                       </skt>
                       <!-- Source connection specific info. -->
                       <udp> <!-- For: udp, udp-rtp, multicast-udp and multicast-udp-rtp. -->
                               <address>239.255.0.1:1234</address>
                       </udp>
                       <multicast> <!-- For: multicast-udp and multicast-udp-rtp. -->
                               <ifName>vlan10</ifName> <!-- For multicast receive. -->
                       </multicast>
               </sourceProfile>
       </sourceProfileList>
</msd>

 

 

 

 

При запуске в VLC

http://10.3.1.30:7088/udp/239.255.0.1:1234

 

вываливается:

root@convert:/usr/home/admin # msd_lite -v -c /usr/local/etc/msd.conf

[2016-08-25 02:55:50]: Multi stream daemon lite 1.08: started
[2016-08-25 02:55:50]: Build: Aug 24 2016 21:40:11, Release
[2016-08-25 02:55:50]: CPU count: 4
[2016-08-25 02:55:50]: descriptor table size: 11095 (max files)
[2016-08-25 02:55:50]: Thread 2 started...
[2016-08-25 02:55:50]: Thread 1 started...
[2016-08-25 02:55:50]: Thread 3 started...
[2016-08-25 02:55:50]: Bind thread 1 to CPU 1
[2016-08-25 02:55:50]: Bind thread 2 to CPU 2
[2016-08-25 02:55:50]: hostname: *
[2016-08-25 02:55:50]: Bind thread 3 to CPU 3
[2016-08-25 02:55:50] http_srv_acc_add, line 502: io_net_is_tcp_cc_avail() fail, this is not fatal. error 22: Invalid argument
[2016-08-25 02:55:50]: bind 10.3.1.30:7088, backlog = 2048, cc_name = htcp
[2016-08-25 02:55:50]: Thread 0 started...
[2016-08-25 02:55:50]: Bind thread 0 to CPU 0
[2016-08-25 02:56:08] http_srv_new_conn_cb, line 866: error 55: No buffer space available 10.8.20.6:2813: io_net_snd_tune(), this is not fatal.
[2016-08-25 02:56:08] str_hub_create_int, line 502: io_net_rcv_tune() error 55: No buffer space available
ошибка сегментации(core dumped)

 

А что? Конфиг немного правил под себя тот, что прилагается с исходниками.

Изменено пользователем Brainiac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

http://www.netlab.li...BSD/sysctl.conf

систему надо тюнить

 

Чёртов парсер форума, короче скопипастишь из файла по ссылке абзацы:

Хотя бы:

# RESOURCE TUNINGS

# NET TUNINGS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Закинул копипасту, нормально, пошло, для теста пока хватит.

 

Что интересно, на udpxy без крутилок взлетело, вот только как он было бы под большой нагрузкой - не знаю.

 

Ну и под 8 тоже надо /sbin/kldload cc_htcp

Изменено пользователем Brainiac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно сделать чтобы и без крутилок, но результат будет похуже: каналы будут дольше переключатся и нагрузка на систему выше.

Большая нагрузка для этого начинается после 10г.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Потестил. На клиентах где vlc вроде все четко, единственная проблема с дюной, почему то, были время от времени задержки(~0.1мс) в картинке и звуке. Хотя, тут же, переводя дюну на мультикаст, все выравнивалось. Буфера в настройках дюны крутил - бесполезно.

 

И еще, я так и не понял, для кольцевого буфера, в лайте, можно менять место расположения или там жестко прописано?

Кольцевой буфер, он должен быть в виде файлов, я так понимаю?

Изменено пользователем Brainiac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На каком этапе были задержки?

На старте или заикалось уже во время просмотра?

Если первое - то возможно потому что лайт не держит каналов на которых нет клиентов, и когда приходит первый клиент ему приходится немного подождать.

 

Можно, но нужна будет перекомпиляция.

Лайт демонстрирует основной принцип и плюс конфиг у него по проще - не все хотят читать мануалы а профит от зерокопи показать охота :)

В полной версии с кольцевым буфером сложнее:

- можно выключить ZeroCopyOnSend и тогда он будет всегда в памяти, на всех системах, но нагрузка на систему как минимум немного вырастет и вероятно чуть меньше будут использоваться оффлоадинги вида TSO в сетевухах

при включённом ZeroCopyOnSend

- на фре начиная с 10 оно создаёт "файлы" в памяти (не tmp и не md фс) (shm вариант)

- на линуксе shm всегда падает в tmpfs раздел который система сама создаёт

- вместо shm можно указать любой путь на фс, я обычно /tmp указываю

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На каком этапе были задержки?

На старте или заикалось уже во время просмотра?

Если первое - то возможно потому что лайт не держит каналов на которых нет клиентов, и когда приходит первый клиент ему приходится немного подождать.

Во время просмотра такие микрозатыки, картинка не сыпется, а на милисекунду притормаживается что-ли со звуком.

Что-то сразу не додумался, надо еще на маге будет потестить.

 

Под влц более-менее сносно время задержки между переключениями каналов,

на дюне довольно существенно дольше, до 7-10 секунд доходит.

Но это скорее всего ограничения лайт версии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Во время просмотра такие микрозатыки, картинка не сыпется, а на милисекунду притормаживается что-ли со звуком.

Наблюдал похожую проблему давненько уже на реалтеках, возникала когда стример кидал данные большими блоками, те по 64к было нормально а по 1м оно затыкалось на этапе когда данные в приставку пришли и она копировала их из сокета в плеер, я так думаю.

Чуть позже напишу какие крутилки крутить в мсд.

 

Можно в качестве временной меры повесить wget чтобы канал стримил всегда в /dev/null и проверить, тогда кольцевуй буфер будет всегда доступен и задержек быть не должно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если используется конфиг http://www.netlab.linkpc.net/download/software/msd/lite/msd_lite.conf

<hubProfileList> / <hubProfile> /

<sndBlockSize> = 1

<ringBufSize> = 32768

 

<sourceProfileList> / <sourceProfile> / <skt> /

<rcvLowat> = 16

 

Это выровняет исходящий траф но увеличит нагрузку на проц.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, ткните носом в документацию, как разложить MPTS потоки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никак.

Лайт версия в содержимое вообще даже не смотрит, не говоря о модификации.

В полной версии в планах, сразу после работы с тюнерами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, Иван, ждём, готовы приобрести платную версию. Сейчас сравниваем с астрой, скорость переключениея каналов у msd быстрее в среднем на 30-40%

По срокам не сообщите?

Изменено пользователем gebs

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.