Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Tuning Tuning Wissen, wo der Schuh »

Unterabschnitte
  • Überfüllung der Dateisysteme vermeiden
  • Blockgrö"se
  • Verteilung auf mehrere Platten
  • Eigenes Dateisystem für /tmp
  • Übervolle Verzeichnisse entsorgen

Optimierung des Dateisystems

Der Einfluss des Dateisystems auf den Gesamtdurchsatz ist natürlich davon abhängig, für welchen Einsatz die Maschine gedacht ist. Eine CAD-Workstation und auch eine Entwicklungsmaschine für einen Softwareentwickler werden von der Beschleunigung eines Dateisystems nicht profitieren. Dagegen werden alle Programme, die in größerem Umfang mit Daten arbeiten, dadurch zentral beeinflusst.

Überfüllung der Dateisysteme vermeiden

Ist die Platte über 90% gefüllt, wird das die Performance beeinflussen. Da nur wenig Platz ist, werden alle Lücken aufgefüllt, die sich durch das Löschen von Dateien im Laufe der Zeit gebildet haben. Nach einiger Zeit sind diejenigen Dateien, die regelmäßig geändert werden, die Lückenfüller der Platte und verursachen heftige Bewegungen des Schreib-/Lesekopfs. Man spricht in diesem Falle von Fragmentierung oder Zerclusterung eines Dateisystems.

Auf einer zentralen Servermaschine wird man die Belegung der Dateisysteme, auf denen Daten bewegt werden, möglichst unter 80%, besser unter 70% halten.

Defragmentierungssoftware, wie man sie vom PC her kennt, wird der eine oder andere unter UNIX vielleicht vermissen. Der Grund dafür ist, dass man sie unter UNIX normalerweise nicht braucht. Gibt es tatsächlich Grund zu der Annahme, dass die Platte durch Fragmentierung zu langsam ist, wird man über kurz oder lang eine größere Platte kaufen und die Daten beispielsweise per tar auf die neue Platte kopieren. Bei diesem Neuaufspielen der Daten werden alle Fragmentierungen beseitigt. Alternativ können Sie natürlich auch eine Bandsicherung durchführen, mit mkfs oder newfs ein neues Dateisystem erstellen und die Bandsicherung zurückholen.

Blockgrö"se

Auf älteren Systemen kann man die Blockgröße noch als Parameter beim Erzeugen des Dateisystems mit mkfs festlegen. Typischerweise liegt sie zwischen 512 Byte und 4 KByte. Je größer der Block ist, den das System mit einem Mal liest, desto geringer wird der Einfluss der langsamen Plattenzugriffe auf die gesamte Dateioperation. Das Lesen eines größeren Blocks kostet nur geringfügig mehr Zeit, da der Lesekopf schon an der richtigen Stelle ist. Beim nächsten Dateizugriff befindet sich dann der angeforderte Bereich schon im Puffer und man kann den Zugriff auf die Platte komplett sparen. Ab einer gewissen Blockgröße allerdings kippt dieser Wert wieder, wenn zu oft mehr geladen wird, als tatsächlich benötigt wird.

Der Platzbedarf der kleinsten Datei entspricht der Größe eines Blocks, da die Platte immer blockweise belegt wird. Bei vielen kleinen Dateien wird der verschwendete Speicherraum entsprechend groß.

Moderne Dateisysteme sind in der Lage, durch dynamische Caches und Aufspaltung von Blöcken für kleine Dateien diese Tuningmaßnahmen selbst zu übernehmen.

Verteilung auf mehrere Platten

Besitzt man mehrere physische Platten, kann man durch geschicktes Verteilen der Dateien einen Performancegewinn erzielen. Wenn zwei Dateien auf einer Platte liegen, auf die ständig wechselnd zugegriffen wird, muss der Schreib-/Lesekopf des Laufwerkes ständig zwischen diesen beiden Dateien hin- und herpositioniert werden. Kann man die beiden Dateien auf zwei Platten verteilen, werden diese Positionierungen eingespart. Gerade unter UNIX ist das Verteilen auf mehrere Platten extrem einfach. Durch einen symbolischen Link merken die zugreifenden Programme nicht einmal, dass eine Datei nicht mehr an der ursprünglichen Stelle liegt. Der zusätzliche Aufwand durch den Link ist minimal und wird auch nur einmal beim Öffnen benötigt. Danach arbeitet das Programm mit einem Dateihandle direkt auf der Datei.

Es versteht sich eigentlich von selbst, dass ein Verteilen der Dateien auf mehrere Partitionen der gleichen Platte kontraproduktiv ist und das Laufzeitverhalten verschlechtert.

Eigenes Dateisystem für /tmp

Das Verzeichnis /tmp kann auf eine eigene Platte gelegt werden. Dies bringt auf Systemen etwas, die das Verzeichnis intensiv nutzen, wie beispielsweise bei der Kompilierung. Es wird eine höhere Geschwindigkeit erreicht, da das ständige Schreiben und Löschen zu einer starken Zerclusterung führt. Da /tmp aber jederzeit gelöscht werden kann, ist es möglich, durch rekursives Löschen des kompletten Verzeichnisses mit einem zusammenhängenden System weiterzuarbeiten. Da im Bereich des /tmp-Verzeichnisses bei einem Absturz häufig ein unzusammenhängendes Dateisystem entsteht, ist es von Vorteil, wenn das komplette Dateisystem /tmp bedenkenlos gelöscht werden kann.

Ist ein eigenes Dateisystem für /tmp nicht praktikabel, sollte man von Zeit zu Zeit im Single-User-Modus das Verzeichnis komplett entfernen und wieder neu anlegen, da so auch das Verzeichnis wieder geleert wird. Insbesondere wenn die Größe des Verzeichniseintrags in der Ausgabe von ls -ld auffallend groß ist, sollte man diese Maßnahme ergreifen.

Bei den eben erwähnten Entwicklermaschinen, bei denen der Compiler oft das Verzeichnis /tmp benutzt, wird manchmal zur Beschleunigung das Verzeichnis in eine RAM-Disk gelegt. Natürlich macht das nur Sinn, wenn die Maschine üppig mit Speicher ausgestattet ist.

Übervolle Verzeichnisse entsorgen

Verzeichnisse sind lineare Strukturen. Wird eine Datei angelegt, wird sie hinten im Verzeichnis angelegt. Die Einträge sind also nicht alphabetisch geordnet, wie es bei der Anzeige erscheint. Also wird bei der Suche nach einer Datei die Liste von vorn nach hinten durchgegangen. Da die Suche nach dem Dateinamen nur relevant wird, wenn die Datei immer wieder geöffnet und geschlossen wird, fallen Probleme in diesem Bereich nicht so sehr auf. Wenn Verzeichnisse aber sehr voll werden, werden die Zugriffe immer langsamer. Besonders kritisch wird es, wenn in Verzeichnissen regelmäßig gelesen und geschrieben wird.

Ein Merkmal dafür, dass ein Verzeichnis überlastet ist, ist seine Größe. Man kann dies leicht durch den Befehl ls -ld prüfen. Im Allgemeinen werden die meisten Verzeichnisse gleich groß sein. Bei den Verzeichnissen /dev und /tmp dürfte man bereits sehen, dass sich darin deutlich mehr Dateien befinden. Verzeichnisse werden aber normalerweise nicht von selbst wieder kleiner. Um ein Verzeichnis, in dem viel geschrieben und gelöscht wurde, wieder auf eine normale Größe zu bringen, sollte man zunächst eine Sicherung der Daten per tar (siehe S. tar) durchführen. Anschließend löscht man per rm -r den gesamten Ast inklusive Verzeichnis und holt dann die gesicherten Dateien wieder an den Ort zurück. Dabei wird das Verzeichnis neu angelegt.



« Tuning | Tuning | Wissen, wo der Schuh »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de