Linux Analyse der Ausführungszeit mit time

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

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 ~]$


Foto Werner Fischer.jpg

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.


Das könnte Sie auch interessieren

Apache Internal Server Error aufgrund htaccess bad flag delimiters beheben
Linux Cluster Management Console (LCMC)
Linux Root Passwort wiederherstellen