abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:33 | Nová verze

    Byla vydána (𝕏) nová verze 24.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 24.7 je Thriving Tiger. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    včera 05:11 | Bezpečnostní upozornění

    Binarly REsearch upozorňuje na bezpečnostní problém PKFail (YouTube) v ekosystému UEFI. Stovky modelů zařízení používají pro Secure Boot testovací Platform Key vygenerovaný American Megatrends International (AMI) a jeho privátní část byla při úniku dat prozrazena. Do milionů zařízení (seznam v pdf) po celém světě tak útočníci mohou do Secure Bootu vložit podepsaný malware. Otestovat firmware si lze na stránce pk.fail. Ukázka PoC na Linuxu na Windows na YouTube.

    Ladislav Hagara | Komentářů: 11
    včera 02:22 | Nová verze

    Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.2 (Mastodon, 𝕏). Přehled novinek na GitLabu. Vypíchnuta je rodičovská kontrola.

    Ladislav Hagara | Komentářů: 2
    včera 01:22 | IT novinky

    Společnost OpenAI představila vyhledávač SearchGPT propojující OpenAI modely umělé inteligence a informace z webů v reálném čase. Zatím jako prototyp pro vybrané uživatele. Zapsat se lze do pořadníku čekatelů.

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

    Distribuce Linux Mint 22 „Wilma“ byla vydána. Je založená na Ubuntu 24.04 LTS, ale s desktopovým prostředím Cinnamon (aktuálně verze 6.2), příp. MATE nebo Xfce, balíkem aplikací XApp, integrací balíčků Flatpak a dalšími změnami. Více v přehledu novinekpoznámkách k vydání.

    Fluttershy, yay! | Komentářů: 2
    25.7. 17:44 | Zajímavý článek Ladislav Hagara | Komentářů: 2
    25.7. 17:22 | Nová verze

    Byla vydána nová verze 14 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu. Vypíchnout lze podporu rozšíření v Lua.

    Ladislav Hagara | Komentářů: 0
    25.7. 17:11 | Nová verze

    Byla vydána verze 1.80.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    25.7. 14:11 | IT novinky

    Apple oznámil, že v beta verzi spustil své Apple Maps na webu. Podporován je také webový prohlížeč Chrome. Ne však na Linuxu.

    Ladislav Hagara | Komentářů: 23
    25.7. 13:11 | IT novinky

    Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 65 tisíc vývojářů. Z Česka jich bylo 710. Ze Slovenska 246.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: CPU vytížení procesu

    14.9.2013 15:39 pavel
    CPU vytížení procesu
    Přečteno: 1331×
    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.