abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 17:02 | Pozvánky

Přijďte si popovídat o open source obecně a openSUSE konkrétně s dalšími uživateli a vývojáři. Oslava nového vydání openSUSE Leap se uskuteční 16. prosince od 17:00 v nových prostorách firmy SUSE v Praze. K dispozici bude nějaké občerstvení a DVD pro ty, kdo je sbírají nebo ještě mají mechaniku. Po párty v kanceláři se bude pokračovat v některé z hospod v okolí.

Miška | Komentářů: 7
včera 14:55 | Zajímavý software

Byla vydána verze Alpha 1.0 otevřeného operačního systému pro chytré hodinky AsteroidOS. Podporovány jsou hodinky LG G Watch, LG G Watch Urbane, Asus ZenWatch 2 a Sony Smartwatch 3. Ukázka ovládání hodinek na YouTube. Jaroslav Řezník přednášel o AsteroidOS na chytrých hodinkách (videozáznam) na letošní konferenci OpenAlt.

Ladislav Hagara | Komentářů: 0
včera 13:30 | Zajímavý software

Byly uvolněny zdrojové kódy známé rogue-like hry DoomRL. Počátky hry jsou v roce 2002. Je napsána ve FreePascalu a zdrojový kód je nyní k dispozici na GitHubu pod licencí GNU GPL 2.0. Autor pracuje na nové hře Jupiter Hell, která je moderním nástupcem DoomRL a na jejíž vývoj shání peníze prostřednictvím Kickstarteru.

Blaazen | Komentářů: 0
včera 13:15 | Pozvánky

Přijďte s námi oslavit vydání Fedory 25. Na programu budou přednášky o novinkách, diskuse, neřízený networking atd. Release Party se bude konat 16. prosince v prostorách společnosti Etnetera. Na party budou volně k dispozici také propagační materiály, nová DVD s Fedorou 25 a samozřejmě občerstvení. Přednášky budou probíhat v češtině. Pro více informací se můžete podívat na web MojeFedora.cz. Jen připomínám, že tentokrát jsme zavedli

… více »
frantisekz | Komentářů: 0
9.12. 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
9.12. 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 4
9.12. 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

Ladislav Hagara | Komentářů: 0
9.12. 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (23%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 810 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Jak napsat aplikaci realtime bez realtime kernelu?

11.1.2015 21:55 Jiri K. | skóre: 1
Jak napsat aplikaci realtime bez realtime kernelu?
Přečteno: 976×
Ahoj,

chápu to správně, že můžu napsat realtime aplikaci, pokud ji nějakým způsobem dostanu do na roveň modulů, tedy že moduly běží realtime? Chci docílit toho, psát podle potřeby realtime aplkiace aniž bych musel použít realtime kernel. Jaká existuje nejjednodušší cesta k tomu to provést?

Příklad: ovládat třeba realtime gpio na Raspberry Pi - např. udělat si vlastní komunikační protokol mezi dvěmi RPi přes GPIO (ať už softwarově, nebo HW, to je jedno, prostě to musí běžet realtime).

Díky

Odpovědi

11.1.2015 22:31 NN
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Zajimavy clanek ohledne RTC na RPi..
13.1.2015 00:35 Jiri K. | skóre: 1
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Super díky.
rADOn avatar 13.1.2015 11:13 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Nechápeš to správně. Specializované realtime kernely existují proto že jinak to udělat nejde. Pokud nemáš moc velké nároky a rychlý HW – což by dnes neměl být problém – tak se dá předpokládat že moc prodlev nebude a přiměřené robustní protokol se s tím nějak vypořádá. Ale není to totéž jako mít jistotu že prodlevy prostě nebudou.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
13.1.2015 12:48 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Nechápeš to správně. Specializované realtime kernely existují proto že jinak to udělat nejde.
Ale samozrejme ze to jde - v linuxu si vypne pozadovany pocet jader a pusti si na nich real-time aplikaci napsanou primo pro to zelezo bez kernelu. Celkem bezny postup v embedded.
13.1.2015 17:48 Radovan
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Co považuješ za "rychlý HW"? Americké jaderné elektrárny řídí a minimálně do roku 2025 budou řídit PDP-11, a řekl bych že tam je potřeba být zatraceně realtime :-D

Stále také shánějí lidi kteří to dokážou programovat v assembleru, práce zajištěná na roky dopředu...
13.1.2015 20:36 rastos | skóre: 60 | blog: rastos
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Realtime neznamená "proklatě rychle". Realtime znamená, že je garantovaná odozva do času T. Či je čas T=10ms alebo 1 minuta, o tom realtime nehovorí.
13.1.2015 20:50 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Akporát rychlém HW ale je větší pravděpodobnost, že se to stihne... :-)
-- OldFrog
13.1.2015 22:58 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?

tu nejde o pravdepodobnst ze se to stihne ale o zarucnou odpoved do daneho casu ....

USE="-gnome -kde";turris
14.1.2015 00:29 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?

tu nejde o pravdepodobnst ze se to stihne ale o zarucnou odpoved do daneho casu ....

Já vím - pouze rozvádím co napsal výšed rADOn (že lze na RT rezignovat).
-- OldFrog
14.1.2015 10:12 Sid
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Zda sa, ze naozaj to nechapete. bud potrebujete nieco co povacsine funguje do urciteho casu (a nic sa nestane ak nie) alebo potrebujete nieco co urcite funguje v nejakych casovych mantineloch. To co napisal on hore je v kontexte RT (ziadatel asi chape preco chce RT a nie nieco ine) samozrejme blbost. Ked na tom zariadeni bude zavisiet nieco dolezite tak uz vidim ako to skladate stylom tak dame tam silnejsi procak snad sa to stihne vzdy vykonat.
14.1.2015 16:05 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Vím co je RT.
-- OldFrog
14.1.2015 00:03 Filip Jirsák
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Když budete mít mezi brzdovým pedálem v autě a brzdami realtime aplikaci, nebudete chtít vysokou pravděpodobnost, že brzdy zareagují rychle (a nízkou pravděpodobnost, že to bude trvat pár sekund, když budete mít opravdu smůlu, i desítky sekund), ale jistotu, že vždy zareagují nejdéle do x milisekund.
16.1.2015 10:53 Erbureth | skóre: 20
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Takže po x milisekundách se čas reakce krátí?
16.1.2015 13:49 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Vsechno se dela na vysokou pravdepodnobnost, na jistotu to nikdo neumi.
13.1.2015 22:05 Jiri K. | skóre: 1
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Když děláš třeba na ARM, tak tam má Linux kernel dán frekvenci 100Hz pro scheduler, oproti Desktopu, kde je default 1000Hz. Těch 100Hz je málo, když potřebuješ něco řídit, v mém případě kvadrokoptéru.

Ale první příspěvek už mi dal zajímavé řešení přes časovače. Domnívám se, že nevýhoda realtime aplikace bez realtime kernelu je, že se nedokáží realtime využívat různé běžící služby, jako např. pro odesílání paketů po wifi. Ale spustit realtime třeba přečtení dat z I2C sběrnice by jít mohlo.
13.1.2015 23:01 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?

tak default je i u desktopu 100Hz .. ale vetsina jader je distribuci/uzovatelem nakonfigurova jinak a nic ti nebrani si jadro pro tvuj arm prelozit s vlastnim nastavenim ...

ale mam pocit ze vubec netusis co RT znamena ..

USE="-gnome -kde";turris
14.1.2015 00:21 Jiri K. | skóre: 1
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Když napíšu "Ovládat třeba realtime GPIO mezi dvěma RPi" tak asi vím co znamená RT.
14.1.2015 07:20 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Domnívám se, že nevýhoda realtime aplikace bez realtime kernelu je, že se nedokáží realtime využívat různé běžící služby, jako např. pro odesílání paketů po wifi. Ale spustit realtime třeba přečtení dat z I2C sběrnice by jít mohlo.

To není tak úplně pravda, problém je i v tom, že bez realtime jádra nemůžete mít ani jistotu, že vám jádro v nevhodnou chvíli neodscheduluje váš proces na dobu delší, než by se vám líbilo. Pomineme-li poněkud extrémní triky typu výše zmíněného dedikovaného procesoru, dá se to riziko omezit nastavením realtime priority, ale pak je potřeba být velmi opatrný. (Oblíbená zábava je nastavit realtime prioritu procesu, který vůbec nespí, a pak se divit, proč je celý systém mrtvý.)

14.1.2015 08:57 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Oblíbená zábava je nastavit realtime prioritu procesu, který vůbec nespí, a pak se divit, proč je celý systém mrtvý.
A toto se vam stalo nebo jste si to vymyslel? Kernel totiz bude tu RT aplikaci postupne prerusovat. Vizte kernel.sched_rt_period_us a kernel.sched_rt_runtime_us a taky RTFM!
14.1.2015 09:55 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
A toto se vam stalo nebo jste si to vymyslel?

Mně ne, protože realtime priority používám jen výjimečně a dávám si pozor, abych je nepřiřazoval CPU intensive procesům. Ale několika našim zákazníkům se to podařilo (a to vím jen o těch, u kterých se to coby bugreport dostalo ke mně; ve skutečnosti jich asi bylo víc).

Vizte kernel.sched_rt_period_us a kernel.sched_rt_runtime_us a taky RTFM!

Takhle jednoduše to bude fungovat na jednoprocesorovém systému. Na víceprocesorovém si může "vypůjčit" nevyužitý čas z ostatních procesorů. Ve výsledku sice udusí "jen" jeden procesor, ale protože na něm spolehlivě odblokuje kernel threads, dříve či později to znefunkční celý systém nobo jeho podstatnou část, např. jakmile někdo zavolá schedule_on_each_cpu() nebo něco podobného.

14.1.2015 10:01 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Na víceprocesorovém si může "vypůjčit" nevyužitý čas z ostatních procesorů.

Viz balance_runtime() and do_balance_runtime().

14.1.2015 10:57 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
pravda, ve vanilce bezi worker thready v SCHED_OTHER, IMO pekna pitomost, zejmena koncept softirq.
14.1.2015 11:18 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Tak ze zvedavosti jsem to zkusil na vanilce pro 1 - 6 (pocet jader) FIFO vlaken s prioritou 99 a konzole se (az na lagovani umerne nastaveni) dala normalne pouzivat. Umrela ale sit.
14.1.2015 11:32 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?

Pokud to spustíte na všech procesorech, tak už není odkud půjčovat, takže začne účinkovat ten 95% limit. Problémová je situace, kdy běží např. jen jeden takový realtime proces "utržený ze řetězu". Různé věci v systému (od kterých by to člověk na první pohled nečekal) se pak postupně začnou blokovat.

Jeden z prvních příkladů, který jsem na toto téma viděl, vypadal tak, že se na jednom CPU proces s realtime prioritou točil v nekonečné smyčce a vedle druhý zavolá mlock(). (Původní testcase byl komplikovanější, oni tam volali v nekonečné smyčce ten mlock() a spustili to dvakrát, ale tahle zjednodušená verze je názornější.)

14.1.2015 12:38 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Asi jsem to nenapsal dost jasne, udelal jsem 6 testu postupne pro 1 az 6 procesu a ani jeden z nich nezpusobil "zasek" systemu (konzole byla porad pouzitelna).

Pouzivat libovolne syscally z RT procesu neni dobry napad, protoze v kernelu se casto pouzivaji mutexy, ktere nepodporuji priority inheritance a ani priority ceiling, takze to nemuze nikdy dost dobre fungovat. Rozumne reseni je RT procesem ovladat HW a syscally delat pres jiny thread.
14.1.2015 12:50 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
udelal jsem 6 testu postupne pro 1 az 6 procesu a ani jeden z nich nezpusobil "zasek" systemu (konzole byla porad pouzitelna)

Já taky netvrdil, že okamžitě nebude fungovat vůbec nic. Místo toho se postupně budou zasekávat různé procesy, které měly tu smůlu, že potřebovaly počkat na blokovaný procesor. Koneckonců, sám jste pozoroval, že při vašem testu začala zlobit síť - to může být u serveru docela zásadní problém.

Pouzivat libovolne syscally z RT procesu neni dobry napad,

Ten druhý proces, který volá mlock(), nemusí být realtime. Podstatné je, že se zasekne, protože čeká na worker z jiného CPU, který tam realtime CPU hog (ten žádný syscall volat nepotřebuje) nepustí na procesor. Skutečný problém je přiřazení realtime priority CPU intensive procesu. Realtime slouží k zajištění nízkých latencí, ne k tomu, aby CPU intensive proces mohl vyždímat procesor do poslední kapičky; od toho jsou úplně jiné nástroje.

14.1.2015 13:02 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Psal jste "celý systém mrtvý", ale ono vytuhne jen to, co potrebuje per core workery, coz treba konzole neni, takze neni problem ten RT proces z te konsole zabit.

System s RT procesy je lepsi nastavit tak, aby jaderna vlakna s omezenou afinitou mela vetsi prioritu nez pouzivane RT procesy. Ve vanilce je dokonce kompilacni volba, ktera umozni nastavit jadernym vlaknum prioritu vetsi, nez je mozne konfigurovat z uzivatelskeho prostoru.

14.1.2015 13:20 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
coz treba konzole neni, takze neni problem ten RT proces z te konsole zabit.

Jen pokud se k ní lze snadno dostat, což nemusí být vždy pravda. A i když ano, je problémem už to, že je to vůbec potřeba. Nebo taky dřív nějaký watchdog odstřelí celý systém, protože nebude dostupná klíčová služba.

aby jaderna vlakna s omezenou afinitou mela vetsi prioritu nez pouzivane RT procesy … kompilacni volba, ktera umozni nastavit jadernym vlaknum prioritu vetsi, nez je mozne konfigurovat z uzivatelskeho prostoru

To už jsou jen berličky, které umožňují omezit následky, neodstraňují problém. Navíc mnohdy nemusejí být ani žádoucí, protože pak může dojít k opačnému problému - kernel thread nepustí aplikaci na procesor tak rychle, jak by potřebovala.

14.1.2015 13:14 Jiri K. | skóre: 1
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Počkat, prioritu přece nastavuješ od -20 do 19, -20 je nejvyšší. Kde jsi teda nastavoval prioritu 99?
14.1.2015 13:19 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
bavime se o SCHED_FIFO, ne o SCHED_OTHER
14.1.2015 14:08 luky
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
ctete man sched_setscheduler
14.1.2015 10:19 Jiri K. | skóre: 1
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
Tak nastavit prioritu procesu na nejnižší jsem zkoušel bez jakékoliv změny v její frekvenci vykonávání a bez jakékoliv změny v tom, že frekvence nebyla vždy stabilní, protože se spustil nějaký jiný proces. Moje zkušenost je, že to nevyvolalo žádnou změnu.
14.1.2015 10:22 Jiri K. | skóre: 1
Rozbalit Rozbalit vše Re: Jak napsat aplikaci realtime bez realtime kernelu?
*resp. na nejvyšší

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.