Linux Analyse der Ausführungszeit mit time
Unter Linux kann das time Kommando verwendet werden, um die Ausführungszeit für ein Kommandozeilenprogramm zu messen. Dieser Artikel zeigt dies am Beispiel des updatedb Programms.
Aufruf
Das time
Kommando wird einfach vor dem auszuführende Programm beim Aufruf angeführt:
[root@tpw ~]# time updatedb real 1m5.682s user 0m0.543s sys 0m2.823s [root@tpw ~]#
Das Programm updatedb ist hier ein schönes Beispiel. Es durchsucht nämlich das gesamte Filesystem nach allen Dateien und schreibt die Informationen dazu in eine kleine Datenbank. Mit Hilfe dieser Datenbank kann man mit dem locate Befehle dann später sehr rasch nach Dateien suchen. Diese Suche ist weitaus schneller als eine normale Suche mit dem find Kommando. Allerdings spiegelt das Ergebnis auch nicht den aktuellen Stand, sondern den Stand der Datenbank (letztes Aufrufen des updatedb Kommandos) wider.
Da udpatedb das gesamte Filesystem durchsucht, und somit sehr zufällige I/O Zugriffe entstehen, wartet beim Ausführen von updatedb die CPU die meiste Zeit auf den I/O.
Analyse
Die einzelnen Werte haben dabei die folgende Bedeutung:
- real: Elapsed real time - also die gesamte tatsächliche Ausführungszeit.
- user: Total number of CPU-seconds that the process spent in user mode - also jene Zeit, in der die CPU tatsächlich den (User-)Code des Programms ausführt.
- sys: Total number of CPU-seconds that the process spent in kernel mode - jene Zeit, in der die CPU mit Ausführung von Kernel-Code für das Programm beschäftigt ist.
Die restliche Zeit verbringt die CPU entweder mit anderen Programmen oder mit Warten auf I/O. Dies zeigt auch ein parallel ausgeführtes vmstat (siehe dazu auch Linux Performance Messungen mit vmstat#Beispiel: CPU wartet auf IO:
[user@tpw ~]$ vmstat 1 10 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 1 3276 17544 109672 869900 0 0 62 180 812 1340 17 6 75 2 0 1 1 3276 17000 110144 869900 0 0 464 76 815 1594 17 5 0 78 0 2 1 3276 16556 110552 869892 0 0 408 20 670 1415 2 5 0 93 0 0 1 3276 15980 111060 869936 0 0 508 0 844 1775 9 6 0 85 0 1 1 3276 15408 111524 869944 0 0 464 0 717 1592 5 4 0 91 0 0 1 3276 15000 111904 869976 0 0 372 12 627 1461 2 5 0 93 0 0 1 3276 15700 112788 869956 0 0 876 40 960 2177 5 7 0 88 0 0 1 3276 14420 113968 870136 0 0 1180 28 850 2020 5 11 0 84 0 0 1 3276 14628 115560 868288 0 0 1600 0 1281 2602 3 17 0 80 0 0 1 3276 14744 116996 866704 0 0 1696 0 1426 2806 7 19 0 74 0 [user@tpw ~]$
Autor: Werner Fischer Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.
|