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 12:55 | Nová verze

    CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.

    jardaIT | Komentářů: 1
    dnes 12:22 | Bezpečnostní upozornění

    Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Komunita

    Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.

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

    Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.

    Ladislav Hagara | Komentářů: 23
    včera 14:00 | Zajímavý projekt

    Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.

    Pinhead | Komentářů: 6
    včera 02:22 | Zajímavý software

    Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 0
    13.5. 21:22 | Bezpečnostní upozornění

    Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.

    Ladislav Hagara | Komentářů: 1
    13.5. 14:00 | Komunita

    Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.

    Ladislav Hagara | Komentářů: 12
    13.5. 12:55 | IT novinky

    Google na včerejší akci The Android Show | I/O Edition 2026 (YouTube) představil celou řadu novinek: Gemini Intelligence, notebooky Googlebook, novou generaci Android Auto, …

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (13%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1633 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: CPU vytížení procesu

    14.9.2013 15:39 pavel
    CPU vytížení procesu
    Přečteno: 1388×
    Dobrý den,

    potřebuji získat CPU vytížení procesu, který mi běží několik týdnů, takže příkaz "ps" je pro mně nepoužitelný. Existuje nějaká méně krkolomná konstrukce, než kterou mám teď?
    top -b -n 1 -p "$mujprocespid"|grep "$mujprocespid" |awk '{ print $9 }'
    

    Řešení dotazu:


    Odpovědi

    14.9.2013 19:09 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: CPU vytížení procesu

    Ja len ze ten grep je nepotrebny:

    top -b -n 1 -p "$pid" | awk '/'"$pid"'/{ print $9 }'

    Viem, ze si cakal viac, ale jednoduchsie ako to mas, to ja nepoznam.

    14.9.2013 19:59 pavel
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Čekal, přesto díky za odpověď.

    Nebylo by možné to získat jinak - mám strach z výběru toho devátého pole - něco jako "vyřízni sloupec, který obsahuje %CPU a z něj vyber to vytížení procesoru". Může se stát, že se změní číslo pole s vytížením procesu.

    Jinak to /'"$pid"'/ je pěkné, trochu mi to připomíná konstrukci pro úpravu datumu v mém skriptu:

    DATE1=$(echo $USERDATE1 | sed 's|\(.*\)/\(.*\)/\(.*\)|\3-\2-\1|') ...

    15.9.2013 19:33 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: CPU vytížení procesu

    Nic extra, ale aspon sa netreba spoliehat na 9. pole, co popravde aj mna napadlo este pred odoslanim prveho prispevku.

    pid=""; while $(ps "$pid" &>/dev/null); do top -d 0.1 -b -n 1 -p "$pid" | awk '/'%CPU'/{for (i = 1; i <= NF; i++) ( $i ~ "%CPU") && field=i; getline; print $field;}'; done
    15.9.2013 19:35 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: CPU vytížení procesu

    -d parameter pre top si samozrejme nastav sam, hoc to, co potato spominal, bude zrejme viac davat realne vysledky.

    15.9.2013 20:03 potato
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Celé spouštění topu tady dělá to počkání časový interval -d a vydělení jeho délkou.
    15.9.2013 22:30 pavel
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Kruci, teď jsem to dosmolil a vidím, že jsem si mohl ušetřit čas. Stejně to tu dám:
    #!/bin/bash
    
    myprogram="ipolldevd"
    pidmyprogram="$(pgrep -x $myprogram)"
    choosecolumn="%CPU"
    
    cpuloadmyprogram=$(top -b -n 1 -p "$pidmyprogram" | awk '
    NR==FNR { for(i=1;i<=NF;i++) if ($i ~ "'"$choosecolumn"'") { nrcolumn=""i""; next }}
    /'"$pidmyprogram"'/{ print $nrcolumn }')
    
    echo $cpuloadmyprogram
    
    Řešení 1× (mikky)
    15.9.2013 10:25 potato
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Dobře definovaná veličina je celkový spotřebovaný čas, tedy položka 14 a další v /proc/PID/stat. Vytížení procesoru v daný okamžik je nějaká vyhlazená derivace. Takže například přečíst jednou, počkat, přečíst podruhé, vydělit časovým intervalem a $(getconf CLK_TCK).
    16.9.2013 20:43 pavel
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Takže například přečíst jednou, počkat, přečíst podruhé, vydělit časovým intervalem a $(getconf CLK_TCK).
    Proč to ještě dělit getconf CLK_TCK?

    Nestačí jenom:
    (přečíst_jednou - přečíst_podruhé)/časový_interval 
    
    17.9.2013 17:15 potato
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    CPU čas v /proc/PID/stat se měří v jednotkách _SC_CLK_TCK-krát kratších než sekunda -- viz proc(1). Takže samozřejmě stačí vydělit, pokud v těchto jednotkách měříš i časový interval. Počítal jsem, že ho budeš měřit spíš v sekundách...
    17.9.2013 18:17 pavel
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Asi zatím zůstanu u toho příkazu "top" ...

    Takže asi nějak takto:
    #Total time spent for the process: total_time = utime + stime
    #If we want to include the time from children processes:
    #total_time = total_time + cutime + cstime
    #cpu_usage = 100 * ((total_time / Hertz) / seconds)
    
    #!/bin/bash
    
    myprogram="ipolldevd"
    pidmyprogram="$(pgrep -x $myprogram)"
    seconds="5"
    hertz="$(getconf CLK_TCK)"
    
    cputime1=$(cat /proc/$pidmyprogram/stat | awk '{print "(" , $14, " + ", $15, ")"}' | bc)
    sleep "$seconds"
    cputime2=$(cat /proc/$pidmyprogram/stat | awk '{print "(" , $14, " + ", $15, ")"}' | bc)
    cpuload=$(echo "100*(${cputime2} - ${cputime1})/$seconds/$hertz" | bc)
    echo $cputime
    
    Díky za radu s tím "getconf CLK_TCK". Podle tohoto "klíčového" slova se už na internetu zobrazí odkazy na měření zátěže CPU. Vyřešeno, díky.
    21.9.2013 20:58 pavel
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Ještě bych měl jeden dotaz.

    Ten příkaz "getconf CLK_TCK" ve skutečnosti zobrazí počet "tiků" procesoru za sekundu, tedy vlastně kmitočet v Hz.

    Ten je vždy stejný během měřeného časového intervalu? Platí to i pro tzv. "beztikové" kernely s nastaveným časovačem "dynamic ticks"?

    Pokud ne, neměl by se správně měřit:

    "getconf CLK_TCK" pro zadaný časový interval = počet "tiků" kernelu během měřeného časového intervalu / měřený časový interval?

    Pokud ano, tak jak to měřit?
    18.1.2014 23:55 pavel
    Rozbalit Rozbalit vše Re: CPU vytížení procesu
    Odpovím si sám. Tady je skript pro výpočet vytížení procesoru programem "ipolldevd".
    #!/bin/bash
    
    myprogram="ipolldevd"
    pidmyprogram="$(pgrep -x $myprogram)"
    seconds="2"
    CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null)
    
    START=`awk 'BEGIN {sum = 0} /^cpu /{ for (i = 1; i <= NF; ++i) { sum += $i } } END {print sum}' /proc/stat`
    cputime1=$(cat /proc/$pidmyprogram/stat | awk '{print "(" , $14, " + ", $15, ")"}' | bc)
    sleep "$seconds"
    cputime2=$(cat /proc/$pidmyprogram/stat | awk '{print "(" , $14, " + ", $15, ")"}' | bc)
    STOP=`awk 'BEGIN {sum = 0} /^cpu /{ for (i = 1; i <= NF; ++i) { sum += $i } } END {print sum}' /proc/stat`
    cpuload=$(echo "${CORES} * 100 * (${cputime2} - ${cputime1})/(${STOP} - ${START})" | bc)
    echo "Celkova zatez programu = $cpuload procent"
    
    

    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.