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

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

Просто взять и собрать - нет.

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

Сделать можно но смысла поддерживать то что было 5 лет назад я не вижу.

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

MAP_ALIGNED_SUPER - сделаю чтобы не мешалось сборке в случае отсутствия.

Share this post


Link to post
Share on other sites

Просто взять и собрать - нет.

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

Сделать можно но смысла поддерживать то что было 5 лет назад я не вижу.

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

MAP_ALIGNED_SUPER - сделаю чтобы не мешалось сборке в случае отсутствия.

было бы супер.

Share this post


Link to post
Share on other sites

Иван приветсвую. Готов взять на себя полномасштабное тестирование под wive-ng под snr-cpe на чипах rt3052

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

Edited by atxnsk

Share this post


Link to post
Share on other sites

И я не собирал ничего линуксового под отличные от х86 архитектуры.

 

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

Share this post


Link to post
Share on other sites

Зараза в том, что в тулчайне wive-ng не нашел компилятора (как например в тулчайне dd-wrt).

Автор на контакт не выходит :(

 

Сегодня еще раз буду копать его тулчайн, может пойму что к чему

Share this post


Link to post
Share on other sites

Up!

 

Неужели никому не интересно эту няшку на домашнем роутере запустить?

Share this post


Link to post
Share on other sites

Для одного клиента там мизерный профит, а может даже наоборот мизерная просадка будет.

Для двух даже на разных каналах скорее всего заметный профит, ибо переключать процессы сильно накладнее чем ещё два дескриптора в евентпуле обработать...

 

А из тех кто может сам собрать я тут знаю только Нитро и ядрокота, им обоим оно не сильно то и надо.

Share this post


Link to post
Share on other sites

Собрался без проблем на:

Linux 3.4.4-2 i686 (Arch Linux)

Linux 4.0.5-gentoo #8 SMP x86_64 (gentoo)

 

Под нагрузкой пока не довелось проверить.

Vlc 2.0.1 (linux) подцепился отлично.

 

 

Возможно было бы удобно получить список кто смотрит какой канал в данный момент. Т.е.

 

session_time ip:port:user_agent | группа:port:interface

 

Можно всё и из "hubstat" выдернуть, не спорю. Разве что для упрощения.

 

Автору спасибо за разработку.

Edited by bomberman

Share this post


Link to post
Share on other sites

Под х86 линухом и я регулярно собираю, это не новость что там работает :)

 

Для кастомизации списка нужно поправить всего 3 файла:

1. msd_lite.c чтобы добавить новую комманду в урл

2. msd_lite_stat_text.h чтобы объявить новую функцию для обработки команды

3. msd_lite_stat_text.c саму функцию.

Фактически смотреть на hubstat и делать что хочется.

Share this post


Link to post
Share on other sites

Взялись поиграться.

Берём мультикаст и отдаём приставке в юникасте.

 

Исходное:

centos6

msdlite 1.08

mag 245

Плейлист с каналами скормлен с флешки.

 

На udpxy заметно подтормаживание, приходится секунд 5 ставить буфер в настройках.

Но переключение каналов при этом становится на редкость задумчивым.

На msd lite пока без тюнинга sysctl лучше, но буфер всёравно нужен.

Мультикастовые приставка щёлкает примерно секунды 2, тут же от 5 до 10.

 

В сторону чего стоит посмотреть для ускорения переключения каналов именно?

Share this post


Link to post
Share on other sites

wget .... -o /dev/null

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

Share this post


Link to post
Share on other sites

Гм, а нельзя некоторые каналы заставить например постоянно тянуть или же если один раз обращались то продолжать тянуть некоторое время?

Распространяется ли этот буфер в случае обращения на динамические ссылки udpxy стиля?

И с какого момента рекомендуется применение тюнинга?

 

Сейчас это маленькая вмка на esxi с гигом памяти и одним cpu, загрузка с виду меньше чем на udpxy.

 

Скажем у тогоже icecast в опциях relay есть опция on-demand, когда станцию он тянет постоянно, илиже только если на релей к нему обратились.

Share this post


Link to post
Share on other sites

Можно, либо вот так подвешивая клиента на каждый канал, либо правкой исходника либо переходом на msd.

У msd_lite только динамические каналы и есть, с синтаксисом как у udpxy + немного доп параметров в урл.

С момента установки ОС :)

Хотя бы буфера сокета в линухе увеличить, и загрузить htcp модуль.

Share this post


Link to post
Share on other sites

Ivan_83

А есть какая-то табличка сравнительная с тем-же udpxy например?

Или как у тогоже мидлваре сталкера, типа на такое то количество клиентов например необходимо такое-то железо или такието ресурсы?

 

И возможно в личку, я полистал ценник обычной msd, в рамках этого ценника на какого-то уровня помощь в установке/настройках/анализе производительности при внедрении можно рассчитывать?

Share this post


Link to post
Share on other sites

Таблички нет, потребление ресурсов очень скромное, настолько что на проц можно особо не смотреть, только на сетевуху чтобы ширины канала хватало и на объём памяти, из расчёта по 40 метров на канал + 1, лучше 2 гб под систему и её нужды.

 

http://www.netlab.linkpc.net/wiki/ru:software:msd:price

Если доступ по ссш будет и описание откуда брать мультикаст и как/куда отдавать то сам могу настроить.

Share this post


Link to post
Share on other sites

Таблички нет, потребление ресурсов очень скромное, настолько что на проц можно особо не смотреть, только на сетевуху чтобы ширины канала хватало и на объём памяти, из расчёта по 40 метров на канал + 1, лучше 2 гб под систему и её нужды.

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

Это обусловлено только архитектурой сети и фантазиями клиентов или таки есть какое-то аппаратное ограничение что нельзя будет скажем тысячу юзеров одним демоном обслуживать?

Share this post


Link to post
Share on other sites

Сколько ни старайся, а количество 10Г адаптеров которое можно поставить в один тазик - величина конечная. (я слышал про железки с 12, на 120гб в сумме, но то было не для иптв)

Кроме того всякие резервы и прочие фантазии в области архитектуры.

В самом демоне нет никаких ограничений по клиентам/полосе, он ограничен только железом/лимитами ОС.

Share this post


Link to post
Share on other sites

Приветствую!

 

Заинтересовался. Скачал и поставил на FB 10.2. Запустил. Тыкнул влс, получил в логе такое вот:

 

[2016-05-31 14:56:31]: Multi stream daemon lite 1.08: started

[2016-05-31 14:56:31]: Build: May 31 2016 14:09:16, Release

[2016-05-31 14:56:31]: CPU count: 12

[2016-05-31 14:56:31]: descriptor table size: 707013 (max files)

[2016-05-31 14:56:31]: hostname: *

[2016-05-31 14:56:31]: Thread 1 started...

[2016-05-31 14:56:31]: Bind thread 1 to CPU 1

[2016-05-31 14:56:31] http_srv_acc_add, line 502: io_net_is_tcp_cc_avail() fail, this is not fatal. error 22: Invalid argument

[2016-05-31 14:56:31]: bind 192.168.0.1:4242, backlog = 2048, cc_name = htcp

[2016-05-31 14:56:31]: Thread 0 started...

[2016-05-31 14:56:31]: Bind thread 0 to CPU 0

[2016-05-31 14:56:44]: /udp/239.0.0.86:1234@vlan200: Created. (fd: 6)

[2016-05-31 14:56:44]: /udp/239.0.0.86:1234@vlan200 - 93.81.235.215:50615: attached, cli_count = 1

[2016-05-31 14:56:44] str_src_r_buf_alloc, line 985: ... error 12: Cannot allocate memory

[2016-05-31 14:56:44] str_src_recv_mc_cb, line 873: on receive error 12: Cannot allocate memory

[2016-05-31 14:56:44]: /udp/239.0.0.86:1234@vlan200 - 93.81.235.215:50615: deattached, cli_count = 0

[2016-05-31 14:56:44]: /udp/239.0.0.86:1234@vlan200: Destroyed.

 

Что ей мешает память выделить?

Share this post


Link to post
Share on other sites

Попробуйте sysctl vm.max_wired увеличить.

А оперативной памяти хватает?

Share this post


Link to post
Share on other sites

Попробуйте sysctl vm.max_wired увеличить.

А оперативной памяти хватает?

Оперативка 24 Гбайт.

vm.max_wired: 2028623

Не думаю, что это причина...

 

udpxy вполне себе нормально работает на этой же машине. За малым исключением - некоторые каналы HD/mpeg4 непонятно почему ретранслируются с рассыпанием, подвисаниями и цыканием. Поэтому я и решил попробовать msd_lite, но пока что-то категорически безуспешно :( .

Edited by nemo_lynx

Share this post


Link to post
Share on other sites

ulimit -a что выдаёт?

cpu time (seconds, -t) unlimited

file size (512-blocks, -f) unlimited

data seg size (kbytes, -d) 33554432

stack size (kbytes, -s) 524288

core file size (512-blocks, -c) unlimited

max memory size (kbytes, -m) unlimited

locked memory (kbytes, -l) 64

max user processes (-u) 7390

open files (-n) 707013

virtual mem size (kbytes, -v) unlimited

swap limit (kbytes, -w) unlimited

sbsize (bytes, -b) unlimited

pseudo-terminals (-p) unlimited

Share this post


Link to post
Share on other sites

Попробуй:

sysctl vm.max_wired=4294967295

ulimit -l unlimited

 

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

Share this post


Link to post
Share on other sites
Попробуй:

sysctl vm.max_wired=4294967295

это привело вот к чему:

sysctl vm.max_wired: -1

 

ulimit -l unlimited

эта команда выполняется, но ничего не меняет:

locked memory (kbytes, -l) 64

 

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

Прописал в конфиге согласно доке /tmp (там 9Гбайт свободно) - результат тот же.

 

Может в конфиге что-то не так?

<?xml version="1.0" encoding="utf-8"?>
<msd>
       <log>
               <file>/var/log/msd_lite.log</file>
       </log>
       <threadPool>
               <threadsCount>2</threadsCount>
               <fBindToCPU>yes</fBindToCPU>
               <fCacheGetTimeSyscall>yes</fCacheGetTimeSyscall>
               <timerGranularity>100</timerGranularity>
       </threadPool>
       <systemResourceLimits>
               <maxOpenFiles>8192</maxOpenFiles>
               <maxCoreFileSize>unlimited</maxCoreFileSize>
               <maxMemLock>unlimited</maxMemLock>
               <processPriority>0</processPriority>
       </systemResourceLimits>
       <HTTP>
               <skt>
                       <rcvBuf>4</rcvBuf>
                       <sndBuf>256</sndBuf>
                       <rcvTimeout>30</rcvTimeout>
                       <sndTimeout>30</sndTimeout>
               </skt>
               <ioBufInitSize>4</ioBufInitSize>
               <ioBufMaxSize>4</ioBufMaxSize>
               <bindList>
                       <bind>
                               <address>192.168.1.1:4242</address>
                               <backlog>1024</backlog>
                               <fAcceptFilter>no</fAcceptFilter>
                               <congestionControl>htcp</congestionControl>
                       </bind>
               </bindList>
               <hostnameList>
                       <hostname>*</hostname>
               </hostnameList>
       </HTTP>
       <hubProfileList>
               <hubProfile>
                       <fDropSlowClients>no</fDropSlowClients>
                       <fSocketHalfClosed>no</fSocketHalfClosed>
                       <fSocketTCPNoDelay>yes</fSocketTCPNoDelay>
                       <fSocketTCPNoPush>yes</fSocketTCPNoPush>
                       <fZeroCopyOnSend>yes</fZeroCopyOnSend>
                       <precache>4096</precache>
                       <sndBlockSize>64</sndBlockSize>
                       <ringBufSize>32768</ringBufSize>
                       <ringBufStorePath>/tmp</ringBufStorePath>
                       <skt>
                               <sndBuf>512</sndBuf>
                               <congestionControl>htcp</congestionControl>
                       </skt>
                       <headersList>
                               <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>
               <sourceProfile>
                       <skt>
                               <rcvBuf>512</rcvBuf>
                               <rcvLowat>48</rcvLowat>
                               <rcvTimeout>2</rcvTimeout>
                       </skt>
                       <multicast>
                               <ifName>vlan200</ifName>
                       </multicast>
               </sourceProfile>
       </sourceProfileList>
</msd>

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