Es gibt mehrere time (1) -Befehle auf einem typischen Linux-System; Der Standard ist ein bash (1) Built-in, der etwas grundlegend ist. Es gibt auch /usr/bin/time
, die Sie ausführen können, indem Sie es entweder genau so aufrufen oder bash (1) anweisen, keine Aliase und Built-Ins zu verwenden, indem Sie ihm einen Backslash voranstellen: \time
. Debian hat es im "time" -Paket, das standardmäßig installiert wird, Ubuntu ist wahrscheinlich identisch und andere Distributionen werden sich sehr ähneln.
es in ähnlicher Weise an der Schale builtin Aufrufe ist bereits ausführliche und informativ, wenn auch vielleicht undurchsichtige, wenn Sie bereits vertraut sind mit dem, was die Zahlen bedeuten wirklich:
$ \time df
[output elided]
0.00user 0.00system 0:00.01elapsed 66%CPU (0avgtext+0avgdata 864maxresident)k
0inputs+0outputs (0major+261minor)pagefaults 0swaps
Allerdings würde ich Ihre Aufmerksamkeit auf die man-Seite zu ziehen, die die -f
Option listet das Ausgabeformat, und insbesondere das %w
Format, das zählt die Anzahl, wie oft der Prozess gab seine CPU-Zeitscheibe für I/O anpassen:
$ \time -f 'ios=%w' du Maildir >/dev/null
ios=184
$ \time -f 'ios=%w' du Maildir >/dev/null
ios=1
Beachten Sie, dass der erste Lauf 184 Mal für E/A gestoppt wurde, der zweite jedoch nur einmal gestoppt wurde.Die erste Zahl ist glaubwürdig, da es 124 Verzeichnisse in meinem ~/Maildir
gibt: das Lesen des Verzeichnisses und der Inode ergeben ungefähr zwei IOPS pro Verzeichnis, weniger ein bisschen, weil einige Inodes wahrscheinlich nebeneinander lagen und in einer Operation gelesen wurden, plus einige extra noch einmal für das Mapping in du (1) binär, gemeinsam genutzte Bibliotheken und so weiter.
Die zweite Zahl ist natürlich niedriger aufgrund des Festplatten-Cache von Linux. Das letzte Stück ist also, den Cache zu leeren. sync (1) ist ein bekannter Befehl, der schmutzige Schreibvorgänge auf die Festplatte löscht, den Lese-Cache jedoch nicht löscht. Sie können diese löschen, indem Sie 3 an /proc/sys/vm/drop_caches
schreiben. (. Andere Werte sind auch gelegentlich nützlich, aber Sie wollen 3 hier) als Nicht-Root-Benutzer, der einfachste Weg, dies zu tun ist:
echo 3 | sudo tee /proc/sys/vm/drop_caches
Die Kombination, dass mit /usr/bin/time
sollten Sie die Skripte, die Sie bauen lassen müssen die Befehle zur Benchmark sind Sie interessiert in
Als kleineren beiseite, T-stück (1) verwendet wird, da dies nicht funktionieren.
sudo echo 3 >/proc/sys/vm/drop_caches
der Grund? Obwohl das Echo (1) als root ausgeführt wird, entspricht die Umleitung Ihrem normalen Benutzerkonto, das keine Schreibberechtigungen für drop_caches
hat. tee (1) führt die Umleitung effektiv als root aus.
Mögliches Duplikat von [dieser SO Frage] (http://stackoverflow.com/questions/249570/how-can-i-record-what-process-orkernel-activity-is-using-the-disk- in-gnu-linux) oder [diese Serverfehlerfrage] (http://serverfault.com/questions/586774/getting-iops-of-the-processes-on-linux) Kann aufgrund von Bounty nicht als Duplikat markieren – Appleman1234
Was ist dein Betriebssystem? Haben Sie [DTrace] (http://www.brendangregg.com/dtrace.html) überprüft, was für Unix/MacOS X/Solaris oder [SystemTap] (https://sourceware.org/systemtap/examples/keyword-index) gilt .html) welches kann für Linux verwendet werden? – VolenD