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 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

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

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 1
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 24
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

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

Dotaz: CPU vytížení procesu

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