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/