--- Adrian Popescu <[EMAIL PROTECTED]> wrote:
> On Tuesday 01 June 2004 07:51, Alin Nastac wrote:
> > costin wrote:
> > >$ulimit -t 10;/usr/bin/time --verbose sleep 15
> > >.......
> > > Elapsed (wall clock) time (h:mm:ss or m:ss): 0:15.02
> > >.......
> > >$ulimit -a
> > >....
> > >cpu time (seconds, -t) 10
> > >.....
> > >
> > >Dureaza mai mult de 10 secunde si nu e intrerupta.
> > >Unde e greseala ?
> >
> > Cum sa dureze un sleep 15 mai mult de 10 sec cpu? Atentie: timpul cpu =
> > user + sys, timpul real este t_end - t_start.
> > Ceea ce limiteaza ulimit este timpul cpu nu timpul real.
> >
>
> Timpul de executie al programului , difera de timpul de utilizare CPU.
> Chiar exemplul de mai sus ; in interval de 15 sec , se executa
> numai cateva instructiuni pe procesor, care "intuitiv" sunt de ordinul
> msec. (depinde si de procesor)
> (oricum, in interval de 1 sec ruleaza mai multe procese ;
> de aia se chema multi-tasking , si process scheduling :-)
>
> $time sleep 15
> real 0m15.005s ( ruleaza 15 sec)
> user 0m0.001s (timp utilizare CPU)
> sys 0m0.003s
>
>
> ---
> Detalii despre listele noastre de mail: http://www.lug.ro/
>
>
O intstructiune poate sa dureze mult mai putin de 1 microsecunde.
-t The maximum amount of cpu time in seconds => cantitatea de timp cpu in secunde.
Nu ar trebui exprimata in mai putin de o secunda ?
In exemplu
ulimit -t 5
for ((i=1;i<10000000;i++)); do cat fisier.txt>/dev/null ;done;
xterminalul e inchis dupa 5 secunde.
ulimit -t 5
while true; do cat /dev/zero>/dev/null;done
Killed
Killed
Killed
Killed
Killed
Killed
Killed
Killed
Killed
Killed
Killed
Killed
Killed
Killed
^C
$
ulimit -t 5
while true ; do read ;done #nu e afectat de loc
aa
aaa
aaa
aaa
aaa
aa
while true ; do echo aa;done #xterminaulul dispare pana la urma
aaa
Din man setrlimit
resource must be one of:
RLIMIT_CPU
CPU time limit in seconds. When the process reaches the soft
limit, it is sent a SIGXCPU signal. The default action for this
signal is to terminate the process. However, the signal can be
caught, and the handler can return control to the main program.
If the process continues to consume CPU time, it will be sent
SIGXCPU once per second until the hard limit is reached, at
which time it is sent SIGKILL. (This latter point describes
Linux 2.2 and 2.4 behaviour. Implementations vary in how they
treat processes which continue to consume CPU time after reach-
ing the soft limit. Portable applications that need to catch
this signal should perform an orderly termination upon first
receipt of SIGXCPU.)
Procesul primeste in cele din urma SIGKILL dupa ce depaseste CPU time .
> > Cum sa dureze un sleep 15 mai mult de 10 sec cpu? Atentie: timpul cpu =
> > user + sys, timpul real este t_end - t_start.
> > Ceea ce limiteaza ulimit este timpul cpu nu timpul real.
Deci CPU time pt user,adica procesul<->shelul curent , este timpul total rezultat in
urma
adunarii timpului in care este executata fiecare intructiune (80x86) din procesul
curent.
T_total=t_instructiune_1+t_instructiune_2+...+t_instructiune_n si instructiune_i
apartin
exclusiv procesului curent.
Cand T_total>T_Hard_limit prcocesul primeste SIGKILL
Corect ?
__________________________________
Do you Yahoo!?
Friends. Fun. Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/
---
Detalii despre listele noastre de mail: http://www.lug.ro/