3 Stimmen

Verwendung des Zeitbefehls für das Benchmarking

Ich versuche, die time Befehl als einfache Lösung für das Benchmarking einiger Skripte, die viel Text verarbeiten und eine Reihe von Netzwerkaufrufen tätigen. Um herauszufinden, ob es eine gute Lösung ist, habe ich es versucht:

/usr/bin/time -f "\n%E elapsed,\n%U user,\n%S system, \n %P CPU, \n%M
max-mem footprint in KB, \n%t avg-mem footprint in KB, \n%K Average total
(data+stack+text) memory,\n%F major page faults, \n%I file system
inputs by the process, \n%O file system outputs by the process, \n%r
socket messages received, \n%s socket messages sent, \n%x status"  yum
install nmap

und bekam:

1:35.15 elapsed,
3.17 user,
0.40 system,
 3% CPU,
0 max-mem footprint in KB,
0 avg-mem footprint in KB,
0 Average total (data+stack+text) memory,
127 major page faults,
0 file system inputs by the process, 
0 file system outputs by the process,
0 socket messages received,
0 socket messages sent,
0 status

was nicht genau das ist, was ich erwartet habe - insbesondere die 0-Werte. Selbst wenn ich den Befehl ändere und sage ping google.com sind die Socketmeldungen 0. Was ist los? Gibt es eine Alternative?

[Und ich bin verwirrt, ob es hier bleiben oder in serverfault gepostet werden sollte]

1voto

Alexander Janssen Punkte 1574

Ich glaube, es funktioniert nicht mit Linux; ich nehme an, Sie benutzen Linux, da Sie "strace" sagten. Die Handbuchseite sagt:

Bugs

Not all resources are measured by all versions of Unix,
so some of the values might be reported as zero. The present
selection was mostly inspired by the data provided by 4.2 or
4.3BSD.

Ich habe "wget" auf einem OSX-System (das BSD-ähnlich ist) ausprobiert, um zu prüfen, ob es Socket-Statistiken meldet, und dort funktioniert zumindest Socket:

0.00 user,
0.01 system, 
 1% CPU, 
0 max-mem footprint in KB, 
0 avg-mem footprint in KB, 
0 Average total (data+stack+text) memory,
0 major page faults, 
0 file system inputs by the process, 
0 file system outputs by the process, 
151 socket messages received, 
8 socket messages sent, 
0 status

Ich hoffe, das hilft, Alex.

0voto

PaulDaviesC Punkte 1101

Nicht verwenden time zum Benchmarking. Einige der Felder des time Befehl wie in [1] beschrieben gebrochen wird. Die Grundfunktionalität der Zeit (Real-, Benutzer- und CPU-Zeit) ist jedoch weiterhin intakt.

[1] Maximale Größe des residenten Sets ist nicht sinnvoll

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X