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:
Benedict Reuschling 2015-06-04 12:19:09 +00:00
parent b33959ed08
commit 3c23f349b1
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46757

View file

@ -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;&nbsp;10 &dtrace;-Werkzeugsatz beschaffen. Wenn Sie &os;&nbsp;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>