Portál AbcLinuxu, 4. května 2025 13:23
(Bohuzel knizku, v ktere by to mohlo byt, mam v praci a tam ted nemuzu.)libgen?
$ time stress-ng --cpu 2 stress-ng: info: [8790] defaulting to a 86400 second run per stressor stress-ng: info: [8790] dispatching hogs: 2 cpu ^Cstress-ng: info: [8790] successful run completed in 4.92s real 0m4.934s user 0m9.807s sys 0m0.012s
time
" (což je builtin bashe) použijete "/usr/bin/time
", tak tam místo "real" bude "elapsed", což je možná trochu názornější.
mike@unicorn:~> time sleep 3 real 0m3,002s user 0m0,001s sys 0m0,000s mike@unicorn:~> /usr/bin/time sleep 3 0.00user 0.00system 0:03.00elapsed 0%CPU (0avgtext+0avgdata 2016maxresident)k 0inputs+0outputs (0major+98minor)pagefaults 0swaps
# cd /usr/src/linux;time make -j26
DESCEND objtool
CALL scripts/atomic/check-atomics.sh
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
Building modules, stage 2.
MODPOST 36 modules
Kernel: arch/x86/boot/bzImage is ready (#9)
real 0m2.157s
user 0m11.164s
sys 0m5.057s
Především by se muselo definovat, co jsou to "základní nástroje". Můžu udělat třeba
mike@unicorn:~> yes aes-128-cbc | head -24 | time xargs -P 24 -n 1 openssl speed ... 431.96user 0.02system 0:18.02elapsed 2397%CPU (0avgtext+0avgdata 5420maxresident)k 0inputs+0outputs (0major+7052minor)pagefaults 0swaps
ale je to dost "základní"?
$ yes aes-128-cbc | head -24 | time xargs -P 24 -n 1 openssl speed bash: time: príkaz nenájdenýVsetko co pojde v normalne vychodiskovom nainstalovanom systeme alebo LIVE.
$ type time time je kľúčové slovo shellu $ which time $
Já ho tu mám:
mike@lion:~> type time time is a shell keyword mike@lion:~> which time /usr/bin/time mike@lion:~> rpm -qf `which time` time-1.9-lp152.3.5.x86_64
Abych pravdu řekl, příkaz time
jsem vždycky bral jako jednu ze zcela základních utilit (podobně jako třeba true
, false
nebo test
, které má bash také jako builtin) a nenapadlo mne, že by někde mohl nebýt.
make
taky umí paralelizovat docela pěkně. :-)
/usr/bin/time bash -c "yes > /dev/null& yes > /dev/null& yes > /dev/null"
A time reportuje čas včetně dětí.Proč tedy ten můj příklad s openssl dole time nereportuje?
Pravděpodobně kvůli tomuhle: (je to citát z times(2)
):
Times for terminated children (and their descendants) are added in at the momentwait(2)
orwaitpid(2)
returns their process ID. In particular, times of grandchildren that the children did not wait for are never seen.
Podle strace
to vypadá, že rodičovský openssl
proces wait()
ani waitpid()
na potomky nezavolá.
openssl speed -multi 4 aes-128-cbcale samozřejmě si za openssl může dosadit něco co považuje za „základní“
$ time openssl speed -multi 4 aes-128-cbc Forked child 0 Forked child 1 Forked child 2 Forked child 3 +DT:aes-128 cbc:3:16 +DT:aes-128 cbc:3:16 +DT:aes-128 cbc:3:16 +DT:aes-128 cbc:3:16 +R:4880758:aes-128 cbc:3.000000 +DT:aes-128 cbc:3:64 +R:4901158:aes-128 cbc:3.000000 +DT:aes-128 cbc:3:64 +R:4908932:aes-128 cbc:3.010000 +DT:aes-128 cbc:3:64 +R:5261213:aes-128 cbc:3.020000 +DT:aes-128 cbc:3:64 ^C real 0m3,953s user 0m0,010s sys 0m0,001s
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.