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í
×
    dnes 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 2
    dnes 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 4
    dnes 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 7
    dnes 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    dnes 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    dnes 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 0
    včera 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    včera 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 8
    včera 16:33 | Zajímavý software

    Strands Decider 2B je malý open-source model s 2 miliardami parametrů, určený k rychlé klasifikaci vstupů a rozhodování mezi možnostmi, generující odpovědi ve stylu modelu Jev. Strands dosáhl přibližně 72% shody s Jevem na veřejné testovací sadě JevBench (tento benchmark pochopitleně nepředstavuje přímé srovnání s modelem Jev). Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache-2.0, váhy modelu na Hugging Face.

    ❗Červivý Hřib krade❗ | Komentářů: 4
    včera 16:22 | Upozornění

    Ve věku 90 let zemřela americká softwarová inženýrka Margaret Hamiltonová, která vedla tým, jenž vyvíjel letový software pro program Apollo amerického Národního úřadu pro letectví a vesmír (NASA).

    Ladislav Hagara | Komentářů: 7
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2818 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Čekání na volnou paměť

    Jan Zahornadsky avatar 10.1.2014 05:05 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Čekání na volnou paměť
    Přečteno: 840×
    Zdravím!

    Řeším následující problém: z různých zdrojů přichází na jeden stroj asynchronně požadavky na jistý (paměťově náročný) výpočet, inicializovaný z bash skriptu. Chtěl bych, aby pokud je paměti dost, tak se samotný výpočet pustil přímo, jinak počkal chvíli, než se paměť uvolní.

    Naivní přístup (v cyklu kontrolovat free a případně sleep) neuspěl, protože pokud přijde padesát požadavků najednou, tak se všechny vesele pustí a v polovině výpočtu jim všem dojde paměť. Proto navíc požaduji, aby paměť byla volná několik testů po sobě a taky testuji, jestli už neběží nějaké velké množství výpočtů (ony ty potvory alokují paměť až řádově během desítek vteřin, takže když vidím deset procesů a kopec volné paměti, je lepší čekat než se mezi ně pouštět).

    Současný kód vypadá zhruba takto:
    function get_freemem() {
        # "our" free memory = free RAM + buffers/cache - used swap
        # minus "give way" (custom list of simple command names and
        # amount of memory they might grow)
        reserve=0
        progs="`ps -eo comm | tail -n +2`"
        for i in $@; do
            cmd="`sed 's/=.*$//' <<< "$i"`"
            res="`sed 's/^.*=//; s/[^0-9]//g' <<< "$i"`"
            [ -z "$res" ] && continue
    
            reserve=$(( $reserve + `grep "$cmd" <<< "$progs" | wc -l` * $res ))
        done
    
        f="`free`"
        mem="`tail -n 2 <<< "$f" | head -n 1 | sed 's/^.* //'`"
        swap="`tail -n 1 <<< "$f" | sed 's/ \+/ /g' | cut -d ' ' -f 3`"
    
        echo $mem - $swap - $reserve | bc
    }
    
    function wait_freemem() {
        counter=0
        max_timeout=36000
    
        timein_counter=0
        timein_required=5
    
        mem_needed=1048576
    
        # we reserve additional 512M for each "java" we find in ps
        reserves="java=524288"
    
        while [ $counter -lt $max_timeout ]; do
            mem="`get_freemem $reserves`"
            [ $mem -gt $mem_needed ] && timein_counter=$(( $timein_counter + 1 )) || timein_counter=0
            [ $timein_counter -ge $timein_required -a $(( $counter % $timein_required )) == 0  ] && return 0
    
            sleep 1
            timeout_counter=$(( $timeout_counter + 1 ))
        done
    
        return 1
    }
    
    Každopádně i přes tyto opatření pokud přijde hodně dotazů, je schopno se jich kvůli race condition dost pustit najednou (ono asi bych mohl zvednout timein_required na nějakou velkou hodnotu a pak prostě doufat, že to bude stačit, ale to taky prodlouží čekání jediného procesu pokud je stroj nečinný).

    Tak bych se rád zeptal, jestli někdo neví o spolehlivé metodě, jak potenciálně velké množství procesů zesynchronizovat tak, aby se v případě dostatku paměti pustily paralelně, ale pokud je paměti míň, tak se většina z nich zablokovala a pouštěli se po jednom (dvou, třech, atd., podle volné paměti)? Ideálně v bashi, ale nebráním se jiným metodám.

    Díky!
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.

    Odpovědi

    Jan Zahornadsky avatar 10.1.2014 06:23 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    V tom kódu je timeout_counter a counter jedna a ta samá proměnná, jde o mou nepozornost při úpravě :-)
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    10.1.2014 07:00 CandySan | skóre: 11 | blog: bonzacek
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Zkus si vytvorit frontu. Jednotlive pozadavky stosuj do fronty tak, ze kazdy prichozi se tam rovnou zaradi a zustava v ni viset dokud neni obslouzen. Bud napevno urcis pocet paralelnich vypoctu a jen tolik jich dovolis, nebo tomu jeste predradis nejakou logiku tesne pred obslouzeni dalsiho pozadavku.

    Obsluha fronty bude muset mit prehled o poctu bezicich procesu a vzdy kdyz jeden skonci, tak spusti dalsi, pokud stale bude platit, ze je povoleny takovy pocet vypoctu (tedy zde se muze zase porovnat stav pameti, ale popisujes to jako tezko predvidatelne, takze bych se spis uchylil k pevnemu poctu).

    Chce to samozrejme doladit. Ja to strelil jen od boku jako smer, kterym bych se nejspis vydal ja.
    Jan Zahornadsky avatar 10.1.2014 08:28 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Fronta jako taková není špatný nápad, dokonce by stálo za úvahu nechat běžět nějakého "workera" na té mašině, který třeba na nějakém portu poslouchá požadavky a vykonává je v rozumném kompromisu na počet současně běžících úloh a jejich paměťovou náročnost.

    Ale to bych asi musel dost přepsat současný stav věcí, kde vstupním bodem výpočtu je bash skript, který může pustit kdekdo, ať už z terminálu, nebo zprostředkovaně přes apache...

    Pokud bych nehleděl na paměť, ale jenom chtěl zajistit, že jich nepoběží víc než X najednou, tak můžu vytvářet zámky někde v tmp typu /tmp/muj_program_lock_0 až /tmp/muj_program_lock_X...
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    10.1.2014 08:42 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Možná by bylo jednodušší udělat to tak, že program si potřebnou paměť zkusí naalokovat hned na začátku (pokud ví, kolik bude potřebovat) a pokud to selže, tak se prostě vrátí do fronty.
    Jan Zahornadsky avatar 10.1.2014 08:50 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Právě že ono to selhat nemusí. Jaderný OOM killer se může rozhodnout zabít jiný program a ten nově spuštěný nechat běžet (co může způsobit kdejaké problémy), většinou ale paměť dostane a bude se velmi aktivně swapovat, co zpomalí všechno, a tak by mnohem rychlejší bylo je pouštět po jednom.
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    10.1.2014 10:23 Sten
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Tak vypněte overcommit :-)
    rADOn avatar 10.1.2014 12:50 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Jestli se vejde do swapu, tak by se fronta dala zrealizovat jednoduse tak ze nejakej hlidaci proces bude rozesilat SIGSTOP pak to zase ozivovat az napeti klesne. Sice se ti to odswapuje, ale stopnutej proces je v bloku a nebude se snazit z toho swapu zase proboxovat ven nerkuli pretahovat o posledni kousek fyzicky pameti.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    10.1.2014 20:02 v
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Nebylo by nejjednodušší použít pojmenované roury? Vytvořit si další skript, který by se spustil jako daemon a pravidelně nějakou frekvecí zapisoval do nějaké pojmenované roury např. "1" nebo "0" podle dostupné paměti. V tom inicializačním skriptu pravidelně (v cyklu) přečítat rouru dokud nedostanu 1, pak skript poběží dál. V podstatě se pak dostane 1, 0 nebo nic podle toho, kolik skriptů najednou se snaží rouru přečíst - vždy se dostane na jednoho a ten má pak nárok, pokud dostane 1 běžet dál.
    Jan Zahornadsky avatar 11.1.2014 10:07 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Toto zní hodně zajímavě, jak bych mohl nějak zařídit spuštění takového démona? Na tom stroji to všechno běží pod obyčejným uživatelem a tak bych se rád vyhnul požadování nějakých vlastních initskriptů při startu...
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    rADOn avatar 11.1.2014 11:17 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Na to ani nepotrebujes psat do ty roury nuly - staci nezapsat nic a vsichni citatele zustanou viset v bloku.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    Josef Kufner avatar 11.1.2014 12:44 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Čekání na volnou paměť
    Na to není potřeba roura. Stačí posílat SIGSTOP a SIGCONT. A ani nejspíš nebude nutné jakkoliv upravovat aplikace (výchozí obsluha těchto signálů je jak název napovídá).
    Hello world ! Segmentation fault (core dumped)

    Založit nové vlákno • Nahoru

    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.