Update to r40686:
This revision is a whitespace change for the whole chapter. Do the same for the translated version and fix a typo while passing through. Obtained from: The FreeBSD German Documentation Project
This commit is contained in:
parent
b33959ed08
commit
3c23f349b1
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46757
1 changed files with 177 additions and 135 deletions
|
@ -10,7 +10,7 @@ that might make this chapter too large.
|
|||
The FreeBSD Documentation Project
|
||||
$FreeBSD$
|
||||
$FreeBSDde: de-docproj/books/handbook/dtrace/chapter.xml,v 1.4 2009/08/22 18:54:15 bcr Exp $
|
||||
basiert auf: r39795
|
||||
basiert auf: r40686
|
||||
-->
|
||||
<!-- XXXTR: Should probably put links and resources here. I'm
|
||||
nervous about this chapter as it may require a partial
|
||||
|
@ -19,12 +19,28 @@ that might make this chapter too large.
|
|||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="dtrace">
|
||||
<info><title>&dtrace;</title>
|
||||
<authorgroup>
|
||||
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Written by </contrib></author>
|
||||
<author>
|
||||
<personname>
|
||||
<firstname>Tom</firstname>
|
||||
<surname>Rhodes</surname>
|
||||
</personname>
|
||||
<contrib>Written by </contrib></author>
|
||||
</authorgroup>
|
||||
|
||||
<authorgroup>
|
||||
<author><personname><firstname>Benedict</firstname><surname>Reuschling</surname></personname><contrib>Übersetzt von </contrib></author>
|
||||
<author><personname><firstname>Christoph</firstname><surname>Sold</surname></personname></author>
|
||||
<author>
|
||||
<personname>
|
||||
<firstname>Benedict</firstname>
|
||||
<surname>Reuschling</surname>
|
||||
</personname>
|
||||
<contrib>Übersetzt von </contrib>
|
||||
</author>
|
||||
<author>
|
||||
<personname>
|
||||
<firstname>Christoph</firstname>
|
||||
<surname>Sold</surname>
|
||||
</personname>
|
||||
</author>
|
||||
</authorgroup>
|
||||
</info>
|
||||
|
||||
|
@ -37,20 +53,23 @@ that might make this chapter too large.
|
|||
<see>&dtrace;</see>
|
||||
</indexterm>
|
||||
|
||||
<para>&dtrace;, auch bekannt als Dynamic Tracing, wurde von &sun; als ein
|
||||
Werkzeug zur Analyse von Performance-Problemen in Produktiv- und
|
||||
Entwicklungssystemen entwickelt. Es ist kein Debugging-Werkzeug, sondern
|
||||
ein Hilfsmittel für Echtzeit-Systemanalysen.</para>
|
||||
<para>&dtrace;, auch bekannt als Dynamic Tracing, wurde von &sun;
|
||||
als ein Werkzeug zur Analyse von Performance-Problemen in
|
||||
Produktiv- und Entwicklungssystemen entwickelt. Es ist kein
|
||||
Debugging-Werkzeug, sondern ein Hilfsmittel für
|
||||
Echtzeit-Systemanalysen.</para>
|
||||
|
||||
<para>&dtrace; ist ein bemerkenswertes Werkzeug zur Profilerstellung, mit
|
||||
einer beeindruckenden Palette von Eigenschaften zur Diagnose von
|
||||
Systemereignissen. Es kann auch dazu verwendet werden, bestehende
|
||||
Skripte ablaufen zu lassen, um einen Nutzen aus deren Möglichkeiten
|
||||
zu ziehen. Nutzer können mittels der Programmiersprache D von
|
||||
&dtrace; ihre eigenen Hilfsmittel schreiben, was es ermöglicht, die
|
||||
eigenen Profile nach Ihren Bedürfnissen anzupassen.</para>
|
||||
<para>&dtrace; ist ein bemerkenswertes Werkzeug zur
|
||||
Profilerstellung, mit einer beeindruckenden Palette von
|
||||
Eigenschaften zur Diagnose von Systemereignissen. Es kann auch
|
||||
dazu verwendet werden, bestehende Skripte ablaufen zu lassen, um
|
||||
einen Nutzen aus deren Möglichkeiten zu ziehen. Nutzer können
|
||||
mittels der Programmiersprache D von &dtrace; ihre eigenen
|
||||
Hilfsmittel schreiben, was es ermöglicht, die eigenen Profile
|
||||
nach Ihren Bedürfnissen anzupassen.</para>
|
||||
|
||||
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie Folgendes wissen:</para>
|
||||
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie
|
||||
Folgendes wissen:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
|
@ -59,12 +78,14 @@ that might make this chapter too large.
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Unterschiede zwischen der &solaris; &dtrace; Implementierung und
|
||||
derjenigen, die &os; bereitstellt.</para>
|
||||
<para>Unterschiede zwischen der &solaris; &dtrace;
|
||||
Implementierung und derjenigen, die &os;
|
||||
bereitstellt.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Wie man &dtrace; auf &os; aktiviert und verwendet.</para>
|
||||
<para>Wie man &dtrace; auf &os; aktiviert und
|
||||
verwendet.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
|
@ -72,11 +93,13 @@ that might make this chapter too large.
|
|||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>&unix; und &os; Grundlagen verstehen (<xref linkend="basics"/>).</para>
|
||||
<para>&unix; und &os; Grundlagen verstehen (<xref
|
||||
linkend="basics"/>).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Einen Kernel konfigurieren und kompilieren können (<xref linkend="kernelconfig"/>).</para>
|
||||
<para>Einen Kernel konfigurieren und kompilieren können (<xref
|
||||
linkend="kernelconfig"/>).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
@ -85,8 +108,9 @@ that might make this chapter too large.
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Verstehen, wie man den Quellcode von &os; beziehen und das
|
||||
Betriebssystem neu erstellen kann (<xref linkend="updating-upgrading"/>).</para>
|
||||
<para>Verstehen, wie man den Quellcode von &os; beziehen und
|
||||
das Betriebssystem neu erstellen kann (<xref
|
||||
linkend="updating-upgrading"/>).</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
|
@ -96,90 +120,100 @@ that might make this chapter too large.
|
|||
-->
|
||||
<warning>
|
||||
<para>Diese Funktion ist als experimentell anzusehen. Manche
|
||||
Einstellungen enthalten möglicherweise nicht alle
|
||||
Funktionalitäten, andere Teile könnten gar nicht laufen. Mit
|
||||
der Zeit, wenn diese Funktion als für den Produktivbetrieb
|
||||
geeignet erscheint, wird auch diese Dokumentation geändert, um
|
||||
diesem Umstand gerecht zu werden.</para>
|
||||
Einstellungen enthalten möglicherweise nicht alle
|
||||
Funktionalitäten, andere Teile könnten gar nicht laufen. Mit
|
||||
der Zeit, wenn diese Funktion als für den Produktivbetrieb
|
||||
geeignet erscheint, wird auch diese Dokumentation geändert, um
|
||||
diesem Umstand gerecht zu werden.</para>
|
||||
</warning>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="dtrace-implementation">
|
||||
<title>Unterschiede in der Implementierung</title>
|
||||
|
||||
<para>Obwohl &dtrace; in &os; sehr ähnlich zu dem in &solaris; ist,
|
||||
existieren doch Unterschiede, die vorher erklärt werden müssen.
|
||||
Der Hauptunterschied für die Anwender besteht darin, dass in &os;
|
||||
&dtrace; explizit aktiviert werden muss. Es existieren Kerneloptionen
|
||||
und Module, die aktiviert sein müssen, damit &dtrace; korrekt
|
||||
arbeitet. Diese werden später genauer erlätert.</para>
|
||||
<para>Obwohl &dtrace; in &os; sehr ähnlich zu dem in &solaris;
|
||||
ist, existieren doch Unterschiede, die vorher erklärt werden
|
||||
müssen. Der Hauptunterschied für die Anwender besteht darin,
|
||||
dass in &os; &dtrace; explizit aktiviert werden muss. Es
|
||||
existieren Kerneloptionen und Module, die aktiviert sein müssen,
|
||||
damit &dtrace; korrekt arbeitet. Diese werden später genauer
|
||||
erlätert.</para>
|
||||
|
||||
<para>Die Kerneloption <literal>DDB_CTF</literal> wird dafür
|
||||
verwendet, um die Unterstützung im Kernel für das Laden von
|
||||
<acronym>CTF</acronym>-Daten aus Kernelmodulen und dem Kernel selbst zu
|
||||
ermöglichen. <acronym>CTF</acronym> ist das Compact C Type Format
|
||||
von &solaris;, welches eine reduzierte Form von Debug-Informationen
|
||||
kapselt, ähnlich zu <acronym>DWARF</acronym> und den antiken Stabs.
|
||||
Diese <acronym>CTF</acronym>-Daten werden dem Binärcode von den
|
||||
<command>ctfconvert</command> und <command>ctfmerge</command> Befehlen
|
||||
den Werkzeugen zum Bauen des Systems hinzugefügt. Das
|
||||
<command>ctfconvert</command>-Dienstprogramm parst die vom Compiler
|
||||
erstellten <acronym>DWARF</acronym> <acronym>ELF</acronym>
|
||||
Debug-Abschnitte und <command>ctfmerge</command> vereint
|
||||
<acronym>CTF</acronym> <acronym>ELF</acronym>-Abschnitte aus Objekten,
|
||||
entweder in ausführbare Dateien oder Shared-Libraries. In
|
||||
Kürze erfahren Sie, wie Sie dies für den Kernel und den Bau von
|
||||
&os; aktivieren.</para>
|
||||
<acronym>CTF</acronym>-Daten aus Kernelmodulen und dem Kernel
|
||||
selbst zu ermöglichen. <acronym>CTF</acronym> ist das Compact C
|
||||
Type Format von &solaris;, welches eine reduzierte Form von
|
||||
Debug-Informationen kapselt, ähnlich zu <acronym>DWARF</acronym>
|
||||
und den antiken Stabs. Diese <acronym>CTF</acronym>-Daten
|
||||
werden dem Binärcode von den <command>ctfconvert</command> und
|
||||
<command>ctfmerge</command> Befehlen den Werkzeugen zum Bauen
|
||||
des Systems hinzugefügt. Das
|
||||
<command>ctfconvert</command>-Dienstprogramm parst die vom
|
||||
Compiler erstellten <acronym>DWARF</acronym>
|
||||
<acronym>ELF</acronym> Debug-Abschnitte und
|
||||
<command>ctfmerge</command> vereint <acronym>CTF</acronym>
|
||||
<acronym>ELF</acronym>-Abschnitte aus Objekten, entweder in
|
||||
ausführbare Dateien oder Shared-Libraries. In Kürze erfahren
|
||||
Sie, wie Sie dies für den Kernel und den Bau von &os;
|
||||
aktivieren.</para>
|
||||
|
||||
<para>Einige Provider in &os; unterscheiden sich von der
|
||||
&solaris;-Implementierung. Am deutlichsten wird das beim
|
||||
<literal>dtmalloc</literal>-Provider, welcher das Aufzeichnen von
|
||||
<function>malloc()</function> nach Typen im &os;-Kernel
|
||||
<literal>dtmalloc</literal>-Provider, welcher das Aufzeichnen
|
||||
von <function>malloc()</function> nach Typen im &os;-Kernel
|
||||
ermöglicht.</para>
|
||||
|
||||
<para>In &os; darf &dtrace; wegen unterschiedlicher Sicherheitskonzepte
|
||||
nur von <systemitem class="username">root</systemitem> verwendet werden. &solaris;
|
||||
besitzt ein paar Audit-Funktionen auf den unteren Ebenen, die noch nicht
|
||||
in &os; implementiert sind. Deshalb kann nur <systemitem class="username">root</systemitem>
|
||||
auf <filename>/dev/dtrace/dtrace</filename> zugreifen.</para>
|
||||
<para>In &os; darf &dtrace; wegen unterschiedlicher
|
||||
Sicherheitskonzepte nur von <systemitem
|
||||
class="username">root</systemitem> verwendet werden. &solaris;
|
||||
besitzt ein paar Audit-Funktionen auf den unteren Ebenen, die
|
||||
noch nicht in &os; implementiert sind. Deshalb kann nur
|
||||
<systemitem class="username">root</systemitem> auf
|
||||
<filename>/dev/dtrace/dtrace</filename> zugreifen.</para>
|
||||
|
||||
<para>Zum Schluss muss noch erwähnt werden, dass die &dtrace;-Software
|
||||
unter &sun;s <acronym>CDDL</acronym> Lizenz fällt. Die
|
||||
<literal>Common Development and Distribution License</literal> wird von
|
||||
&os; mitgeliefert, sehen Sie sich dazu
|
||||
<para>Zum Schluss muss noch erwähnt werden, dass die
|
||||
&dtrace;-Software unter &sun;s <acronym>CDDL</acronym> Lizenz
|
||||
fällt. Die <literal>Common Development and Distribution
|
||||
License</literal> wird von &os; mitgeliefert, sehen Sie sich
|
||||
dazu
|
||||
<filename>/usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE</filename>
|
||||
an, oder lesen Sie die Online-Version unter <uri xlink:href="http://www.opensolaris.org/os/licensing">http://www.opensolaris.org/os/licensing</uri>.</para>
|
||||
an, oder lesen Sie die Online-Version unter <uri
|
||||
xlink:href="http://www.opensolaris.org/os/licensing">http://www.opensolaris.org/os/licensing</uri>.</para>
|
||||
|
||||
<para>Diese Lizenz bedeutet, dass ein &os;-Kernel mit den &dtrace;-Optionen
|
||||
immer noch <acronym>BSD</acronym>-lizenziert ist; allerdings tritt die
|
||||
<acronym>CDDL</acronym> in Kraft, wenn Module in Binärform
|
||||
vertrieben werden oder die Binärdateien geladen werden.</para>
|
||||
<para>Diese Lizenz bedeutet, dass ein &os;-Kernel mit den
|
||||
&dtrace;-Optionen immer noch <acronym>BSD</acronym>-lizenziert
|
||||
ist; allerdings tritt die <acronym>CDDL</acronym> in Kraft, wenn
|
||||
Module in Binärform vertrieben werden oder die Binärdateien
|
||||
geladen werden.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="dtrace-enable">
|
||||
<title>Die &dtrace; Unterstützung aktivieren</title>
|
||||
|
||||
<para>Um Unterstützung für &dtrace; zu aktivieren, fügen Sie
|
||||
die folgenden Zeilen zu Ihrer Kernelkonfigurationsdatei hinzu:</para>
|
||||
<para>Um Unterstützung für &dtrace; zu aktivieren, fügen Sie die
|
||||
folgenden Zeilen zu Ihrer Kernelkonfigurationsdatei
|
||||
hinzu:</para>
|
||||
|
||||
<programlisting>options KDTRACE_HOOKS
|
||||
options DDB_CTF</programlisting>
|
||||
|
||||
<note>
|
||||
<para>Besitzer der AMD-Architektur werden wahrscheinlich noch die
|
||||
folgende Zeile zur Kernelkonfigurationsdatei hinzufügen:</para>
|
||||
<para>Besitzer der AMD-Architektur werden wahrscheinlich noch
|
||||
die folgende Zeile zur Kernelkonfigurationsdatei
|
||||
hinzufügen:</para>
|
||||
|
||||
<programlisting>options KDTRACE_FRAME</programlisting>
|
||||
|
||||
<para>Diese Option liefert die Unterstützung für die
|
||||
<acronym>FBT</acronym>-Eigenschaft. &dtrace; wird auch ohne diese
|
||||
Option funktionieren; jedoch wird dann Function Boundary Tracing nur
|
||||
eingeschränkt unterstützt.</para>
|
||||
<acronym>FBT</acronym>-Eigenschaft. &dtrace; wird auch ohne
|
||||
diese Option funktionieren; jedoch wird dann Function Boundary
|
||||
Tracing nur eingeschränkt unterstützt.</para>
|
||||
</note>
|
||||
|
||||
<para>Der gesamte Quellcode muss neu gebaut und mit der
|
||||
<acronym>CTF</acronym>-Option installiert werden. Um das zu erreichen,
|
||||
bauen Sie &os; aus dem Quellcode mittels:</para>
|
||||
<acronym>CTF</acronym>-Option installiert werden. Um das zu
|
||||
erreichen, bauen Sie &os; aus dem Quellcode mittels:</para>
|
||||
|
||||
<!-- XXXTR: WITH_CTF has been reported to leave a user with a
|
||||
broken system when used with buildworld. Until this is
|
||||
|
@ -193,16 +227,17 @@ options DDB_CTF</programlisting>
|
|||
<!-- &prompt.root; <userinput>make WITH_CTF=1 installworld</userinput>
|
||||
&prompt.root; <userinput>mergemaster -Ui</userinput></screen> -->
|
||||
|
||||
<para>Das System muss im Anschluss daran neu gestartet werden.</para>
|
||||
<para>Das System muss im Anschluss daran neu gestartet
|
||||
werden.</para>
|
||||
|
||||
<para>Nachdem das System neu gestartet und der neue Kernel in den
|
||||
Hauptspeicher geladen wurde, sollte die Unterstützung für die
|
||||
Korn-Shell hinzugefügt werden. Dies wird benötigt, da die
|
||||
Sammlung von &dtrace;-Werkzeugen mehrere Dienstprogramme enthält,
|
||||
die in <command>ksh</command> implementiert sind. Installieren
|
||||
Sie <package>shells/ksh93</package>. Es ist auch möglich, diese
|
||||
Werkzeuge unter <package>shells/pdksh</package> oder
|
||||
<package>shells/mksh</package> laufen zu lassen.</para>
|
||||
Hauptspeicher geladen wurde, sollte die Unterstützung für die
|
||||
Korn-Shell hinzugefügt werden. Dies wird benötigt, da die
|
||||
Sammlung von &dtrace;-Werkzeugen mehrere Dienstprogramme
|
||||
enthält, die in <command>ksh</command> implementiert sind.
|
||||
Installieren Sie <package>shells/ksh93</package>. Es ist auch
|
||||
möglich, diese Werkzeuge unter <package>shells/pdksh</package>
|
||||
oder <package>shells/mksh</package> laufen zu lassen.</para>
|
||||
|
||||
<para>Zum Schluss sollten Sie noch den aktuellen
|
||||
&dtrace;-Werkzeugsatz beschaffen. Wenn Sie &os; 10
|
||||
|
@ -216,35 +251,36 @@ options DDB_CTF</programlisting>
|
|||
<sect1 xml:id="dtrace-using">
|
||||
<title>&dtrace; verwenden</title>
|
||||
|
||||
<para>Bevor die &dtrace;-Funktionaltät benutzt werden kann, muss das
|
||||
&dtrace;-Gerät existieren. Um das Gerät zu laden, geben Sie
|
||||
<para>Bevor die &dtrace;-Funktionaltät benutzt werden kann, muss
|
||||
das &dtrace;-Gerät existieren. Um das Gerät zu laden, geben Sie
|
||||
das folgende Kommando ein:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>kldload dtraceall</userinput></screen>
|
||||
|
||||
<para>Die &dtrace;-Unterstützung sollte jetzt verfügbar sein. Um
|
||||
alle Sonden anzuzeigen, kann der Administrator nun den folgenden Befehl
|
||||
eingeben:</para>
|
||||
alle Sonden anzuzeigen, kann der Administrator nun den folgenden
|
||||
Befehl eingeben:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>dtrace -l | more</userinput></screen>
|
||||
|
||||
<para>Alle Ausgaben werden an das <command>more</command>-Programm
|
||||
übergeben, da der Bildschirmpuffer sehr schnell überlaufen
|
||||
wird. Ab diesem Punkt kann &dtrace; als einsatzbereit angesehen werden.
|
||||
Jetzt ist es an der Zeit, sich näher mit dem Satz von Werkzeugen zu
|
||||
beschäftigen.</para>
|
||||
übergeben, da der Bildschirmpuffer sehr schnell überlaufen wird.
|
||||
Ab diesem Punkt kann &dtrace; als einsatzbereit angesehen
|
||||
werden. Jetzt ist es an der Zeit, sich näher mit dem Satz von
|
||||
Werkzeugen zu beschäftigen.</para>
|
||||
|
||||
<para>Der Werkzeugsatz ist eine Sammlung von vorgefertigten Skripten, die
|
||||
von &dtrace; ausgeführt werden können, um Systeminformationen
|
||||
zu sammeln. Es gibt Skripte, die offene Dateien überprüfen,
|
||||
den Speicher, <acronym>CPU</acronym>-Verbrauch und noch viel mehr.
|
||||
Entpacken Sie die Skripte mit dem folgenden Befehl:</para>
|
||||
<para>Der Werkzeugsatz ist eine Sammlung von vorgefertigten
|
||||
Skripten, die von &dtrace; ausgeführt werden können, um
|
||||
Systeminformationen zu sammeln. Es gibt Skripte, die offene
|
||||
Dateien überprüfen, den Speicher,
|
||||
<acronym>CPU</acronym>-Verbrauch und noch viel mehr. Entpacken
|
||||
Sie die Skripte mit dem folgenden Befehl:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>gunzip -c DTraceToolkit* | tar xvf -</userinput></screen>
|
||||
|
||||
<para>Wechseln Sie mit dem <command>cd</command>-Kommando in dieses
|
||||
Verzeichnis und ändern Sie die Berechtigung zum Ausführen von
|
||||
allen Dateien, deren Name klein geschrieben ist, auf
|
||||
<para>Wechseln Sie mit dem <command>cd</command>-Kommando in
|
||||
dieses Verzeichnis und ändern Sie die Berechtigung zum Ausführen
|
||||
von allen Dateien, deren Name klein geschrieben ist, auf
|
||||
<literal>755</literal>.</para>
|
||||
|
||||
<para>All diese Skripte müssen inhaltlich verändert werden.
|
||||
|
@ -252,39 +288,42 @@ options DDB_CTF</programlisting>
|
|||
müssen in <filename>/usr/local/bin/ksh</filename> geändert
|
||||
werden und die Anderen, welche <filename>/usr/bin/sh</filename>
|
||||
verwenden, müssen so angepasst werden, dass sie
|
||||
<filename>/bin/sh</filename> verwenden. Schliesslich müssen noch
|
||||
diejenigen, die <filename>/usr/bin/perl</filename> enthalten, auf
|
||||
<filename>/usr/local/bin/perl</filename> umgeschrieben werden.</para>
|
||||
<filename>/bin/sh</filename> verwenden. Schliesslich müssen
|
||||
noch diejenigen, die <filename>/usr/bin/perl</filename>
|
||||
enthalten, auf <filename>/usr/local/bin/perl</filename>
|
||||
umgeschrieben werden.</para>
|
||||
|
||||
<important>
|
||||
<para>Zu diesem Zeitpunkt ist es klug, den Leser noch einmal daran zu
|
||||
erinnern, dass die Unterstützung von &dtrace; in &os; noch
|
||||
<emphasis>unvollständig</emphasis> und
|
||||
<emphasis>experimentell</emphasis> ist. Viele dieser Skripte werden
|
||||
nicht funktionieren, da diese entweder zu sehr &solaris;-spezifisch
|
||||
sind oder Sonden verwenden, die zur Zeit noch nicht unterstützt
|
||||
werden.</para>
|
||||
<para>Zu diesem Zeitpunkt ist es klug, den Leser noch einmal
|
||||
daran zu erinnern, dass die Unterstützung von &dtrace; in &os;
|
||||
noch <emphasis>unvollständig</emphasis> und
|
||||
<emphasis>experimentell</emphasis> ist. Viele dieser Skripte
|
||||
werden nicht funktionieren, da diese entweder zu sehr
|
||||
&solaris;-spezifisch sind oder Sonden verwenden, die zur Zeit
|
||||
noch nicht unterstützt werden.</para>
|
||||
</important>
|
||||
|
||||
<para>Zum Zeitpunkt, an dem dieses Dokument geschrieben wurde, existieren
|
||||
nur zwei Skripte im &dtrace;-Werkzeugsatz, die von &os; komplett
|
||||
unterstützt werden: die Skripte <filename>hotkernel</filename> und
|
||||
<filename>procsystime</filename>. Diese beiden werden in den folgenden
|
||||
Teilen dieses Abschnitts genauer untersucht.</para>
|
||||
<para>Zum Zeitpunkt, an dem dieses Dokument geschrieben wurde,
|
||||
existieren nur zwei Skripte im &dtrace;-Werkzeugsatz, die von
|
||||
&os; komplett unterstützt werden: die Skripte
|
||||
<filename>hotkernel</filename> und
|
||||
<filename>procsystime</filename>. Diese beiden werden in den
|
||||
folgenden Teilen dieses Abschnitts genauer untersucht.</para>
|
||||
|
||||
<para><filename>hotkernel</filename> wurde entworfen, um zu identifizieren,
|
||||
welche Funktion die meiste Kernelzeit beansprucht. Normal
|
||||
ausgeführt, wird es Ausgaben ähnlich der Folgenden
|
||||
produzieren:</para>
|
||||
<para><filename>hotkernel</filename> wurde entworfen, um zu
|
||||
identifizieren, welche Funktion die meiste Kernelzeit
|
||||
beansprucht. Normal ausgeführt, wird es Ausgaben ähnlich der
|
||||
Folgenden produzieren:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/share/dtrace/toolkit</userinput>
|
||||
&prompt.root; <userinput>./hotkernel</userinput>
|
||||
Sampling... Hit Ctrl-C to end.</screen>
|
||||
|
||||
<para>Der Systemadministrator muss die Tastenkombination <keycombo action="simul"><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>
|
||||
<para>Der Systemadministrator muss die Tastenkombination <keycombo
|
||||
action="simul"><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>
|
||||
drücken, um den Prozess zu stoppen. Nach dem Abbruch wird das
|
||||
Skript eine Liste von Kernelfunktionen und Zeitmessungen ausgeben,
|
||||
aufsteigend sortiert nach den Zeiten:</para>
|
||||
Skript eine Liste von Kernelfunktionen und Zeitmessungen
|
||||
ausgeben, aufsteigend sortiert nach den Zeiten:</para>
|
||||
|
||||
<screen>kernel`_thread_lock_flags 2 0.0%
|
||||
0xc1097063 2 0.0%
|
||||
|
@ -318,8 +357,8 @@ kernel`sched_idletd 137 0.3%
|
|||
how we should look that up. -->
|
||||
|
||||
<para>Dieses Skript funktioniert auch mit Kernelmodulen. Um diese
|
||||
Eigenschaft zu verwenden, starten Sie das Skript mit dem Parameter
|
||||
<option>-m</option>:</para>
|
||||
Eigenschaft zu verwenden, starten Sie das Skript mit dem
|
||||
Parameter <option>-m</option>:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>./hotkernel -m</userinput>
|
||||
Sampling... Hit Ctrl-C to end.
|
||||
|
@ -344,12 +383,13 @@ kernel 874 0.4%
|
|||
|
||||
<para>Das <filename>procsystime</filename> Skript fängt die
|
||||
Systemaufruf-Zeiten ab und zeigt diese für eine gegebene
|
||||
<acronym>PID</acronym> oder einen Prozessnamen an. Im folgenden Beispiel
|
||||
wurde eine neue Instanz von <filename>/bin/csh</filename> erzeugt.
|
||||
<filename>procsystime</filename> wurde ausgeführt und verbleibt so,
|
||||
während ein paar Befehle in die andere Instanz von
|
||||
<command>csh</command> eingegeben werden. Dies sind die Ergebnisse
|
||||
dieses Versuchs:</para>
|
||||
<acronym>PID</acronym> oder einen Prozessnamen an. Im folgenden
|
||||
Beispiel wurde eine neue Instanz von
|
||||
<filename>/bin/csh</filename> erzeugt.
|
||||
<filename>procsystime</filename> wurde ausgeführt und verbleibt
|
||||
so, während ein paar Befehle in die andere Instanz von
|
||||
<command>csh</command> eingegeben werden. Dies sind die
|
||||
Ergebnisse dieses Versuchs:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>./procsystime -n csh</userinput>
|
||||
Tracing... Hit Ctrl-C to end...
|
||||
|
@ -378,20 +418,22 @@ Elapsed Times for processes csh,
|
|||
read 3988049784</screen>
|
||||
|
||||
<para>Wie aus der Ausgabe ersichtlich ist, verbraucht der
|
||||
<function>read()</function>-Systemaufruf die meiste Zeit in Nanosekunden,
|
||||
während der Systemaufruf <function>getpid()</function> hingegen am
|
||||
schnellsten läft.</para>
|
||||
<function>read()</function>-Systemaufruf die meiste Zeit in
|
||||
Nanosekunden, während der Systemaufruf
|
||||
<function>getpid()</function> hingegen am schnellsten
|
||||
läuft.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="dtrace-language">
|
||||
<title>Die Sprache D</title>
|
||||
|
||||
<para>Der &dtrace; Werkzeugsatz enthält viele Skripte in der
|
||||
speziellen Sprache von &dtrace;. Diese Sprache wird als <quote>die D
|
||||
Sprache</quote> in der Dokumentation von &sun; bezeichnet und ist C++
|
||||
sehr ähnlich. Eine tiefergehende Betrachtung dieser Sprache
|
||||
würde den Rahmen dieses Dokuments sprengen. Ausführlich wird
|
||||
diese Sprache unter <uri xlink:href="http://wikis.sun.com/display/DTrace/Documentation">http://wikis.sun.com/display/DTrace/Documentation</uri>
|
||||
speziellen Sprache von &dtrace;. Diese Sprache wird als
|
||||
<quote>die D Sprache</quote> in der Dokumentation von &sun;
|
||||
bezeichnet und ist C++ sehr ähnlich. Eine tiefergehende
|
||||
Betrachtung dieser Sprache würde den Rahmen dieses Dokuments
|
||||
sprengen. Ausführlich wird diese Sprache unter <uri
|
||||
xlink:href="http://wikis.sun.com/display/DTrace/Documentation">http://wikis.sun.com/display/DTrace/Documentation</uri>
|
||||
behandelt.</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
|
Loading…
Reference in a new issue