Festplattenzugriffe beschleunigen

Aus YaCyWiki
Wechseln zu: Navigation, Suche

Hier findest du Tipps, um durch deine System Konfiguration vielleicht ein bisschen mehr Geschwindigkeit zu bekommen.

Auf Systemen mit "Desktop-Hardware" wird bei YaCy ein grosser Teil der Zeit für die Fesplattenzugriffe und Kommunikation verbraucht. Je grösser die Datenbank wird, desto mehr Zugriffe werden nötig. Dies ist vor allem der Grund dafür, dass YaCy nach wenigen Tagen nicht mehr soviele Seiten pro Minute (pages per minute, PPM) indexiert, wie zu Beginn einer Installation. Das Problem ist den Entwicklern bekannt, aber die Software ist in diesem Bereich nicht einfach zu optimieren.

Ein auf günstig und viel CPU MHz getrimmter PC ist nicht auf hohen Datendurchsatz geeicht. Sobald man viel Datendurchsatz haben möchte, muss man entweder teure PC Hardware oder gleich andere Hardware Architekturen einsetzen. Als Stichworte zu dem Thema fallen mir ein: SCSI, RAID, SUN & IBM Server, Netzwerkkarten mit eigenem Prozessor und mehrere GB Ram.


Festplatten

Da viele kleine, zufällige Zugriffe auf die Festplatte erfolgen, ist eine Festplatte mit kurzen Zugriffszeiten sehr von Vorteil. Die Zugriffszeiten hängen u.a. von der Umdrehungszahl ab, je schneller die Platte dreht, desto kürzer sind die Zugriffszeiten. Insbesondere bei einer schneller CPU, viel Ram und einer im Verhältnis langsamen Platte ist die Festplatte ein schwerer Klotz am Bein des Rechners, den man vielleicht mit einer Installation in einer Ramdisk umgehen kann.

Wenn man nur eine Festplatte im Rechner hat, ist es eine Möglichkeit, eine 2. Festplatte in den Rechner einzubauen und Daten von YaCy auf dieser zu lagern. Das hat einigen Benutzern Verbesserungen gebracht.

hdparm unter Linux

Mit hdparm kann man unter Linux insbesondere IDE Festplattenzugriffe beschleunigen.

Viele Infos gibt hdparm mit

hdparm -vi /dev/hda

Es gibt Parameter, die noch mehr Details anzeigen, aber -vi bringt auch für unterschiedliche Systeme erstmal ein relativ einheitliches Bild.

/dev/hda:
 multcount    = 16 (on)
 IO_support   =  1 (32-bit)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 59598/16/63, sectors = 60074784, start = 0
.
 Model=WDC WD307AA, FwRev=05.05B05, SerialNo=WD-WMA111073205
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
 BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=60074784
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 *udma2 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4

Tuning mit hdparm

sichere Optionen:

hdparm -d 1 /dev/hdX

schaltet DMA ein. Mit DMA ist die Festplatte um ein vielfaches schneller, und der Prozessor wird bei Zugriffen nicht belastet. Sollte DMA nicht verfügbar sein, findet man im dmesg log eine Fehlermeldung, weiter sollte nichts passieren. Der Chipsatz des IDE Kontrollers muss im Kernel unterstützt werden. Mit lspci bekommt man einen Überblick über die eingebaute Hardware.

hdparm -a xy /dev/hdX

schaltet read-ahead ein, und kann eventuell Beschleunigung bringen.


---> Was mache ich wenn DMA fehlschlaegt?

 /dev/sda1:
  setting using_dma to 1 (on)
  HDIO_SET_DMA failed: Inappropriate ioctl for device
  HDIO_GET_DMA failed: Inappropriate ioctl for device


experimentelle Optionen

Seit einiger Zeit unterstützen IDE Festplatten das acoustic managment mit dem man die Festplate auf schnell oder leise stellen kann.

hdparm -M 254 /dev/hda

Dateisystem

Im Laufe der Zeit hat sich unter Linux das Dateisystem XFS als äußerst performant im Zusammenspiel mit YaCy gezeigt. Mit den nachfolgenden Mount-Optionen kann man die Performance noch ein wenig steigern: logbufs=8, noatime, nodiratime - Hier ein Beispiel für etc/fstab (Ubuntu 7.04)

UUID=c346ac61-cb2e-4d41-8d8b-736baae5963d     /media/Data     xfs     rw,barrier,nosuid,exec,nodev,noatime,nodiratime,logbufs=8     0    0

Weiterhin kann man XFS Partitionen auch defragmentieren - einfach an der Konsole: xfs_fsr -v eingeben. (benötigt Root rechte - unter Ubuntu also: sudo xfs_fsr -v verwenden)

Ebenfalls unter Linux kann der Inhalt des Ordners DATA/HTCACHE auf eine eigene Partition oder in einen Container (Image-Datei) mit dem Dateisystem ReiserFSabgelegt werden. ReiserFS ist sehr schnell bei vielen, kleinen Dateien, wie dies beim Proxy-Cache der Fall ist.

Ram

Viel Ram kann YaCy sehr beschleunigen. Der Ram kann unterschiedlich genutzt werden. Man kann ihn YaCy und der Java Umgebung direkt zuweisen oder man kann eine Ramdisk erstellen und dort die YaCy DB oder die Logfiles ablegen. Je nach Konfiguration müssen die Daten regelmässig auf die Festplatte gesichert werden, damit bei einem Rechnerabsturz nicht die ganze Arbeit umsonst war. Es gibt eine Anleitung für YaCy in einer Ramdisk (Windows).

Die meisten modernen Betriebssystem verwenden automatisch nicht von Programmen genutzten Speicher für die Zwischenspeicherung von Dateien.