On Mon, 31 May 2004, 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 ?

10 secunde procesor nu inseamna 10 secunde de process lifetime. Un proces 
intr-un sistem de operare multitasking nu ruleaza decat foarte "rar" 
(bine, depinde de proces) adica doar din cand in cand primesti de la OS 
procesorul sa se execute, el de obicei fiind blocat (in stare S) in 
asteptarea intoarcerii unui system call (de genul read/write/select/etc). 
Limita de CPU time de la ulimit se refera la timpul total procesor cat a 
avut procesul. Un proces care face sleep are cateva milisecunde timp 
procesor deoarece consuma putin pana cand apeleaza usleep().

Pt o clarificare mai buna vezi pagina de manual de la getitimer. Ca o 
comparatie, tu te asteptai ca ulimit sa limitezi la ITIMER_REAL pe cand el 
limiteaza la ITIMER_VIRTUAL:
       ITIMER_REAL    decrements in real time, and delivers SIGALRM upon expi-
                      ration.

       ITIMER_VIRTUAL decrements  only  when  the  process  is  executing, and
                      delivers SIGVTALRM upon expiration.

-- 
Mihai RUSU                                    Email: [EMAIL PROTECTED]
GPG : http://dizzy.roedu.net/dizzy-gpg.txt    WWW: http://dizzy.roedu.net
                       "Linux is obsolete" -- AST

--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui