• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Strategie využívání video cache
#21
Ono to tak nedůležité není. Readfactor ovlivňuje, kolik si z propustnosti zabere pro sebe Kodi. Pokud to někdo natáhne natolik, že se v NB při puštěném streamu manželka ani nepodívá na Seznam.cz, pak to vědění význam má. Tedy v případě, že to nemá ještě ošetřené v routeru
Tak a teď už jen ten trojnásobek. 4 Ale to asi nedáme. Nic bližšího jsem nevyčetl.
X96max plus 4/32 + CE 21 RC2 + skin Confluence SCC / TV Samsung QE55Q6FNA
X96max plus 4/32 + CE 20.5 + skin Confluence SCC

AVR Denon 1600H / Dali Spektor 5.1
Win10pro + Kodi19.5
NAS Synology 215j 3TB Raid1
Router Turris 1.1
 
Citovat
#22
@jkmh Prosím tě, v tom mám naprostou nevědomost.
Jakým způsobem jste zjistili, že na zápus 1Byte do video cache se spotřebují 3Bytes?
Kodi 20 -LibreELEC/LinuxMint/Win/Android -RPi4/3/2/ IntelPC/xMiStick4K -Router 1Gbit 2.4+5GHz
 
Citovat
#23
@meda Tak to doporučení nezní tak přesně, jako ho napsal @jkmh:, ale v zásadě to odpovídá. Wiki Kodi uvádí u parametru memorysize doslova:
 
Kód:
For the memory size set here, Kodi will require 3x the amount of RAM to be free.

My jsme si k tomu ještě přidali jakýsi bezpečnostní koeficient s hodnotou obvykle udávanou mezi 0,8 a 0,9, takže se doporučuje nastavit cache na 1/3 volné paměti krát ten bezpečnostní koeficient. Ono samozřejmě hodně záleží na typu operačního systému a na jeho dalších aplikacích a funkcích, které mohou i při spuštěném Kodi, pokud běží na pozadí, nějakou další paměť dynamicky sežrat.

Jinak, jak už jsme napsal, nějak pro tu 1/3 nemámn vysvatlení. Proto jsem se ostatně tou cache začal tak zabývat, protože mě oslovilo pár lidí s HW s malou kapacitou operační paměti, abych jim to nastavení vyladil. Zkoušel jsem v některých případech pro cache alokovat více, a většinou se nic nestalo. Ale kde je ten skutečný limit, to si netroufám generalizovat. Proto raději zůstávám u toho výše uvedeného dopručení, jen ten koeficient nastavuji na 0,9.

Na druhou stranu šponovat cache na maximum za každou cenu, protože u některých streamů dochází soustavně k načítání bufferu přehrávače nebo k hlášce "pomalý zdroj", může být tak trochu zoufalství. Uživatel by si raději měl sehnat lepší připojení a pokud to nejde, tak se prostě spokojit s tím, že si bude přehrávat pouze videa s nižším datovým tokem. To jde např. u SCC nastavit velmi dobře. Je třeba si uvědomit, že cache tu není proto aby vyřešila problém s trvale pomalým připojením, ale zejména pro to, aby vyřešila problémy s občasným zpomalením komunikace nebo přehrávání těch částí streamu, kdy se krátkodobě, díky vysoké dynamice scény, zvýší jeho datový tok. V drtivé většině postačí cache na úrovni 10 až 20 násobku default hodnoty, tedy 200 - 300 MB. Ale obecně platí, zejména pro HW s malou pamětí (TV Android např.), že každá desítka MB nad default hodnotu může pomoci. To platí hlavně pro ty, kteří se nastavení cache vůbec neobtěžovali a stále tedy jedou na default nastavení. Někdy stačí opravdu jen málo.

@jkmh Tak i ona ta default nastavení v routerch jsou taková, že to zatížení rozdělí. Nesetkal jsem se zatím s tím, že by vysoká hodnota readfactory nějak zásadně ostatní uživatele v domácí omezila. S tímhle si routery poradí.
 
Citovat
#24
@JiRo To vše už bylo několkrát napsáno a je jasné.

Jde tedy o *VÝKLAD* těch vět:
The number is the buffer size in bytes (20971520 is the default, which is 20MB, which requires 60MB of free RAM). Kodi will not buffer ahead more than this.
(20.8.2023, 23:23)JiRo Napsal(a):
Kód:
For the memory size set here, Kodi will require 3x the amount of RAM to be free.

Což zřejmě nemusí znamenat ani to, co psal @jkmh
(20.8.2023, 15:37)jkmh Napsal(a): 1) Proč si video cache zabere trojnásobek nastavené hodnoty. Jaký je mechanizmus zápisu/čtení, že pro 1B dat potřebuje 3B prostoru v RAM.

...ani to z mého dotazu
(20.8.2023, 22:38)meda Napsal(a): Jakým způsobem jste zjistili, že na zápus 1Byte do video cache se spotřebují 3Bytes?

...možná si video cache nezabere trojnásobek - ale pokud se podíváme jinak na překlad:
Kodi do vyrovnávací paměti nebude ukládat více. Při hodnotě vedeo cache nastavené zde potřebuje Kodi trojnásobné množství volné paměti,
tedy že:
pro práci Kodi počítejte ještě s 2x takovou velikostí volné paměti, kterou zabíráte pro video cache.

Proč si to myslím? Kodi musí mít místo v paměti pro obsluhu video cache, data dekodérů, pro data modulů informujících o stavu cashovaného videa, pro práci doplňků titulků a kdo ví jakých ještě modulů a závislostí, které tam něco uloží v souladu s pointry a časovou osou přehrávače.

Takže, uvažuji, požívá ty 2/3 "dostatečné RAM" na aktuální běh, než se možná stane - jak napsal
(20.8.2023, 17:48)jkmh Napsal(a): ... začne swapovat momentálně nepotřebné aplikace, ... a při nedostatku RAM nestíhá odkládat a následně načítat to, co aktuálně k běhu potřebuje...
Kodi 20 -LibreELEC/LinuxMint/Win/Android -RPi4/3/2/ IntelPC/xMiStick4K -Router 1Gbit 2.4+5GHz
 
Citovat
#25
@meda Tak chápu a rozumím tvé snaze tomu přijít na kloub. Uvažuješ tvořivě, nicméně je to stále jen "já si myslím že...". Nic proti tomu, ale pro nás (tedy pro mne určitě) je důležité to mít někde napsané jasněji (do čehož se zřejmě autorům Kodi nechce nebo nevidí důvod k tomu se tomu věnovat konkrétně) a nebo si ověřit, jaká hodnota (maximální, protože nám jde o to i z malé paměti dostat pokud možno maximum pro cache) je ještě únosná. Jak jsem už napsal osobně mi to vychází spíše než na trojnásobek na ten dvojnásobek, ale zase, je to jen dlouhodobě neověřená zkušenost a jen na některých typech systémů. Nevlastním Android TV (kde ta potřeba nafouknout cachce co možná nejvíce je asi s ohledem na velikosti operační paměti asi nejčastější), takže si s nastavením u tohoto typu sytsému nemůžu hrát.

Moc nesouhlasím s tím, co píšeš (tedy pokud jsem to správně pochopil):
(21.8.2023, 11:27)meda Napsal(a): Proč si to myslím? Kodi musí mít místo v paměti pro obsluhu video cache, data dekodérů, pro data modulů informujících o stavu cashovaného videa, pro práci doplňků titulků a kdo ví jakých ještě modulů a závislostí, které tam něco uloží v souladu s pointry a časovou osou přehrávače.
a to proto, že tohle všechno, co Kodi ještě potřebuje při přehrávání, potřebuje bez ohledu na to, na jakou hodnotu je cache nastavená. Takže tohle bych určitě s velikostí cachce nespojoval. Ta spotřeba paměti na to bude vždy (+/-) konstatní, ať je cache jak veliká chce. Možná tam bude nižší potřeba v případě, kdy bude cache úplně vypnutá (právě o modul, který obsluhuje funkci cache), ale pokudu bude zapnutá, tak to konstantní bude.

Jestli jsi to ale myslel tak, že při těch default 20 MB (pro double buffer tedy krát 2) to ostatní zabere právě těch 20 MB, takže ten trojnásobek je vlastně výsledek 2x20 MB + 20 MB, Tak si nejsme jistý, jestli je to správná úvaha. Tady samozřejmě už fabulujeme, jak to ten, kdo to napsal myslel a to je už hodně nejisté a je to spíše o subjektivních pocitech a tom, jak chápeme ten text... 8

Hele, já bych tu veskrze zajímavou diskusi už dál nešponoval. Zkusím si ještě pohrát s různými mezními nastaveními cache, a zjišťovat, co ještě projde a jak bude při tom vypadat obsazení paměti a log Kodi, ale tahle metoda zjišťování jak to v Kodi vlastně funguje, je podle mne hodně závislá na typu operačního systému. Na mém CoreELEC to vypadá, že je ještě průchozí ten dvojnásobek. Tedy nastavit cache ma polovinu volné paměti. Ale netestoval jsme to ještě s oheldem na různé porovzní podmínky (běží mi tam na pozadí Tvheadend i WebGrab++ a ty umí, bez oheldu na to, co se děje v Kodi, ukousnout pořádný flák paměti) a to ty výsledky samozřejmě zkresluje.
 
Citovat
#26
Taky myslím, že pokud chybí popis know-how, pomůže jen zpětný ingeneering.
Jak řekl Sedící Býk: Howgh (Domluvil jsem 21 )
Kodi 20 -LibreELEC/LinuxMint/Win/Android -RPi4/3/2/ IntelPC/xMiStick4K -Router 1Gbit 2.4+5GHz
 
Citovat
#27
Jak jsem slíbil, tak jsem, v tropické noci před usnutím, provedl test postupného navyšování cache.

Test spočíval v tom, že jsem nastavoval cache v postupných krocích po 100 000 000 B a sledoval, na jaké hodnotě se ustálí zaplnění dopředného bufferu video cache (hodnota položky forward v Player Debug Info). Testoval jsme to na přehrávání streamu Top Gun - Maverick, 65,70 GB, průměrný datový tok podle databáze SCC je 68,88 Mbps, kódování HEVC, který jsem si uložil do Oblíbených, abych ho mohl spustit hned po startu Kodi. Připojení mám stabilní, skutečná maximální rychlost downloadu se pohybuje na hranici tarifu (150/10 od Vodafone/UPC). HW je Beelink GT King se 4 GB operační paměti a Gigabit Ethernet, instalace Kodi CoreELEC 20.2.

Výchozí sastavení v advanceedsettings.xml:, které používám, tedy pokud mám cache zapnutou, je:
 
Kód:
    <cache>
        <buffermode>0</buffermode>
        <memorysize>700000000</memorysize>
        <readfactor>40</readfactor>
    </cache>
Ta hodnota memorysize = 700 000 000 B je obvyklá, kterou používám. Po spuštění Kodi mám volné paměti lehce pod 3 000 MB, takže použiji-li klasický vzorec:
 
Kód:
3 000 / 3 * 0,85
dostávám se k doporučované hodnotě 850 MB, což je v byte 891 289 600. Takže mých 700 000 000 je bezpečně pod doporučovaným limitem. S testem jsem pak začal na hodnotě parametru memorysize = 1 000 000 000.

Při testu jsme postupoval tak, že jsem spustil Kodi, a hned vzápětí přehrávání streamu. Pak jsme na Player debug Info sledoval postupné obsazení dopředného bufferu. Při nižších hodnotách nastavení video cache nikdy dopředný buffer více jak 75 % alokované paměti nedosáhl, ale jakmile jsem nastavil vyšíš hodnoty, cca od 1 300 000 000, tak obsazení dopředného bufferu tento limit přesáhlo. Přeci je, ta dynamika scén v úvodu filmu není příliš veliká, tedy i datový tok přehrávaného obsahu je spíše nižší než je průměr celého steramu, takže se zpětný buffer nenaplní tak rychle a tím pádem si ten dopředný zpočátku něco z toho zpětného ukousne.

On-line jsem na PC přes SSH terminál sledoval Kodi log, takže jsme měl přehled o případných chybách a problémech v Kodi. Až do hodnoty memorysize 1 700 000 000 vše běželo bez jakýchkoliv problémů. Od  následující testované hodnoty (1 800 000 000) se při otevření seznamu streamů v SCC začala objevovat chybová hláška SCC, ale i přesto se přehrávání spustilo a běželo bez problémů.

Viditelnější problém začal při memorysize 2 000 000 000. Přehrávání běželo, ale při návratu do hlavního menu, kde se ještě stále načítaly widgety, a já je začal, jeden po druhém, zobrazovat, už bylo vidět, že Kodi gui nestíhá. Úmyslně jsem při tom nechal nastaveno zobrazení většího počtu widgetů, což má samozřejmě na spotřebu paměti také značný vliv. Současně s tím se v logu objevovaly hlášky, že některé jednoduché service služby (u kterých mám naprogramovánu kontrolu délky běhu), překročily nastavený limit této kontroly. Pokud jsme ale tyto pokusy dělal v situaci, kdy jsem nejdříve nechal načíst všechny widgety, tak i při této hodnotě memorysize Kodi běželo bez problémů.

Obsazení paměti jsme sledoval ve dvou fázích. Po spuštění přehrávání a načtění celé cache, byla nejnižší hodnota volné paměti při memorysize = 2 000 000 000 cca 840 MB, a pak poté, co jsem v této situaci zobrazil hlavní menu a postupně projel všechny jeho položky a zobrazil všechny widgety. V tomto případě se hodnota volné paměti v Kodi dostala až na 210 MB.

Zkusil jsem ještě i 2 100 000 000, ale tam už při návratu do hlavního menu Kodi začalo stávkovat ještě více a nakonec gui, při pohybu po položkách, kdy se měly zobrazit další, dosud nezobrazené widgety, přestalo reagoval úplně a nakonec přestal reagoval (přes SSH terminál) i systém.

Jinak se potvrdilo, že relace mezi nastavenou hodnotou video cache a ustálenou hodnotou obsazení dopředného bufferu (položka forward v Player Debug Info) byla vždy dodržena. Ve všech případech nastavení memorysize to bylo 75 %.

Shrnul bych to asi takto:
  • je velmi pravpěpodobně možné dosáhnou i vyšší hodnoty nastavení video cache, než jsme doposud uváděli
  • limit v takovém případě ale není jednoduché stanovit, a to z mnoha důvodů, protože při tom záleží na mnoha aspektech:
    • typ operačním systému
    • nastavení Kodi a jeho doplňků
    • použitý skin a jeho nastavení (zejména počet widgetů)
    • způsob využívání Kodi - tady mám na mysli to, že pokud někdo bude přehrávat video  a nebude se přitom vracet do menu, může si patrně dovolit cache nafouknout o něco málo více, ale to je asi stav, na který bych se nikdo neměl spoléhat
    • další využívání systému, na které Kodi běží
Musím se přiznat, že jsem se na ten test moc dobře nepřipravil a nepromyslel jeho scénář, zejména postup a časování jednotlivých kroků, do všech důsledků. Pokud bych se k tomu ještě někdy vrátil, určitě ho budu provádět daleko exaktnějši a komplexněji. Nějaká data sice mám, ale nejsou konzistentní, protože jsem ne úplně právě ten postup a časové odstupy mezi jednotlivými kroky dodržel. Takže je není dost dobře možné je srovnávat a tím pádem je ani nepublikuji.

Zakončím to tedy tam, že si nyní v Kodi nastavím memorysize na hodnotu, která se mi při testu jevila jako poslední bezproblémová, což je tedy 1 700 000 000, a budu s ní Kodi delší dobu provozovat. Budu o zkušenostech informovat.
   
Začínám...
 
Citovat
#28
Dostal jsme několik dotazů, jaké je tedy konečné doporučení. Zda se tedy držet zavedeného vzorečku (1/3 volné paměti * 0,85) nebo místo 1/3 zvolit nejaké větší číslo (např. 1/2).

Tady je asi odpověď složitější. Jak jsem již napsal, záleží na typu operčního systému, formátu přehrávaného kontejneru a pak také na tom, jak by ten vzorec měl vypadat. Řekl bych, že čím menší paměť, tím spíše bychom měli pro výpočet vycházet z modelu, že si z volné paměti alokujeme nějakou hodnotu (např. 200 MB) jako absolutní rezervu a teprve z toho zbytku si stanovíme podíl, který věnujeme pro cache. Já bych klidně šel do 1/2.

U mne je to zatím tak, že pro volných 3 000 MB mám nastaveno těch 1 700 000 000 (1 621 MB), což je samozřejmě o hodně více než výše uvedený výpočet, a zatím mi to funguje bez problémů. Takže ta 1/2 je podle mne (pokud se neukáže nějaký zatím neidentifikovaný problém) stále ještě poměrně bezpečná.

Bude dobré, pokud se takových pokusů zúčastní větší počet uživatelů a budou tady sdílet své zkušenosti. Já sám to mohu vyzkoušet jen na *ELEC a Windows, zajímavé pro všechny budou samozřejmě zkušenosti s Android a hlavně s Android TV.
 
Citovat
#29
Moje nastavení na všech obhospodařovaných instalacích je dlouhodobě dle vzorce (1/3 volné paměti * 0,65).
X96max plus 4/32 + CE 21 RC2 + skin Confluence SCC / TV Samsung QE55Q6FNA
X96max plus 4/32 + CE 20.5 + skin Confluence SCC

AVR Denon 1600H / Dali Spektor 5.1
Win10pro + Kodi19.5
NAS Synology 215j 3TB Raid1
Router Turris 1.1
 
Citovat
#30
Doporučuji čtenářům toho tématu podívat se sem. Najdou tam pokračování úvahy o způsobu určení maximální hodnoty alokace paměti pro video cache.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)