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