Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Lukáš Vlček 20 Února 2013, 18:59:29

Název: Jak dlouho trvá uloha/kolik si bere CPU time
Přispěvatel: Lukáš Vlček 20 Února 2013, 18:59:29
Ahoj,
Chtěl bych poprosit o radu.
Potřebuji jak dlouho trval nějaký proces a dále kolik si vzdal procesorového času. Dá se to nějak zjistit?
Děkuji za každou radu/připomínku.
Název: Re:Jak dlouho trvá uloha/kolik si bere CPU time
Přispěvatel: Martin Šácha 20 Února 2013, 19:35:22
Kód: [Vybrat]
man time
Název: Re:Jak dlouho trvá uloha/kolik si bere CPU time
Přispěvatel: Lukáš Vlček 21 Února 2013, 14:38:02
Díky =) To mě nenapadlo... :D Ještě bych se chtěl zeptat jestli jde nějak ověřit jestli proces(job) stále běží nebo už skončil.
Dělám jednu úlohu a potřebuji jí volat znovu s vyšším parametrem poté co ta původní skončí... Nevíte jak to ověřit?
Moje myšlenka je že do nějaké proměnné ukládat daného ID procesu(jobu) a pak se pomocí cronu ověřovat zda běží nebo už skončil...
Název: Re:Jak dlouho trvá uloha/kolik si bere CPU time
Přispěvatel: Martin Šácha 21 Února 2013, 14:50:33
Kouknout - vidět (a případně uložit...)
Kód: [Vybrat]
ps -A | grep <program>Co kdyby ta úloha na konci forknula (spustila v jiném procesu) sama sebe s jiným parametrem?

Pokud je ten řetěz krátký, tak stačí napsat script který je sekvenčně zavolá...hledej základy příkazového řádku...
Název: Re:Jak dlouho trvá uloha/kolik si bere CPU time
Přispěvatel: Cuore 21 Února 2013, 20:26:06
Citace
Ještě bych se chtěl zeptat jestli jde nějak ověřit jestli proces(job) stále běží nebo už skončil
no já bych ten program spouštěl pomocí scriptu, kde bych napsal něco jako
Kód: [Vybrat]
ps -e | cut -c -5 > $PWD/ps.log to by mi mělo vytáhnout ID procesu a uložit do logu. Taky se chráníš před sledováním nesprávného programu (pokud by jich běželo víc současně). Pak bych si ho vytáhl ze všech běžících programů podle názvu
Kód: [Vybrat]
#ps | grep program | cut -c -5 > $PWD/psall.log a pak porovnáváním jen čekal, kdy zmizí. Ale je to střeleno jen narychlo od pasu  ::)
Název: Re:Jak dlouho trvá uloha/kolik si bere CPU time
Přispěvatel: Lukáš Vlček 21 Února 2013, 22:09:38
Asi takhle mám napsaný program který spouštím na clusteru kde se vytvoří x paralelních jobů (záleží kolik je vstupních souborů - pro každý soubor jeden job) tady ten program počítá průchodnosti elektrických obvodů pomocí log. hradel přes vektory(který jsou ve vstupním souboru) a pak následně generuje reporty...
Vesměs všechno mám(teď už i ten CPU time + real time :D)

Jen toto musím ještě dodělat:
Ten program má udělaný tak že se nastavuje hodnota do které testuje vektor... Tak a když je hodnota 1 tak vyhodí hromadu vektorů který nejdou vyřešit... tak se zvedne hodnota např 100* teď už job trvá delší dobu(testuje více do hloubky) a už vyhodí méně vektorů které nejdou vyřešit a pořád se to opakuje dokud nezbudou jen opravdu neřešitelné vektory + chybné vektory.
Dělá se to proto že je to rychlejší než nastavit hodnotu na 100.000 a čekat protože by se testoval každý vektor do hloubky 100.000 což by bylo náročnější i na výpočetní výkon.

Měl jsem myšlenku(jako jsem psal nahoře v příspěvku... třeba po 5 min kontrolovat ID jobu) a když už není tak spustit znovu s větší hodnotou

Kouknout - vidět (a případně uložit...)
Kód: [Vybrat]
ps -A | grep <program>Co kdyby ta úloha na konci forknula (spustila v jiném procesu) sama sebe s jiným parametrem?

Pokud je ten řetěz krátký, tak stačí napsat script který je sekvenčně zavolá...hledej základy příkazového řádku...

To co píšete zní velmi zajímavě určitě vyzkouším

Vesměs to spouštím tímto jednoduchým sh
Kód: [Vybrat]
for fname in `ls ~/projekt/BENCH/`
do
  fn=`basename "$fname" .bench`
  echo "Job pro: $fname = $fn"

  qsub -cwd -b y -j y ./ATALANTA -N -b 1 -B 0 -Z -W 2 -X -n ~/BENCH/$fname -F ~/projekt/PROCESSED/$fn".processed" -t ~/projekt/TEST/$fn".test" -U ~/projekt/ABORTED/$fn".aborted" -P ~/projekt/REPORT/$fn".report"
done