Performance/CPU-Last

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

Performance/CPU-Last

Beitragvon flyingcat » Mo Sep 29, 2008 5:15 pm

Hallo zusammen,

wir fahren zwei YaCy's, beide im Senior-Modus:

flyingcat2: Läuft auf einem Dell PowerEdge 2900 mit VMWare ESXi in einer virtuellen Maschine unter Ubuntu. Der VM sind 2 Prozessoren (2 x 2500 MHz), 2 GB RAM und knapp 1 TB auf einem Dell PowerVault MD1000-RAID zugeteilt. Aktuell: 635'000 Seiten, 1'998'000 RWIs. Speicherverwendung in YaCy ist auf 1,6 GB gesetzt.

flyingcat3: Läuft unter Windows Server 2003 (auf dem sonst nichts läuft) auf einer Maschine mit 2 QuadCore 1,86 GHz-Prozessoren (insgesamt also 8 Kerne), 4 GB RAM und einem 700 GB Hardware-RAID. Aktuell: 132'000 Seiten, 416'000 RWIs. Speicherverwendung in YaCi ist auf 1,0 GB gesetzt.

Beide arbeiten nahezu gleiche Crawler-Jobs ab.

Auf beiden fällt auf, dass keine System-Resource voll genutzt wird:

flyingcat2 nutzt im Mittel knapp 14% der CPU-Resourcen, hat laut YaCy 1,2 GB Java-RAM frei, mittlere Disk-Transferrate liegt bei 4 MBps (System hat Reserven bis zu 100 MBps), genutzte LAN-Bandbreite sind im Mittel 32 KBps (LAN und Netzwerk können etliche Zehnerpotenzen mehr).

flyingcat3 nutzt im Mittel 7% der CPU-Resourcen, hat laut YaCy 500 MB Java-RAM frei, mittlere Disk-Transferrate kenne ich hier nicht kann aber unmöglich ausgeschöpft sein, genutzte LAN-Bandbreite ebenfalls zwischen 25 und 50 KBps.

Wir hatten vor etwa einem Jahr mit eigener Software sowie nutch, lucene, hadoop und anderen herumexperimentiert und haben - auf gleicher Hardware wie flyingcat3 und gleichem Netzwerk - damals, je nach Software, zwischen 300 und 700 PPM erreicht.

Was mich wundert: in der Standardkonfiguration brachten es flyingcat2 und flyingcat3 mit YaCy über längere Zeit nicht über 10 PPM. Eine drastische Reduktion der Wartezeiten nach remote search-Zugriffen führte dann zeitweilig zu 200-300 PPM (flyingcat2) bzw. 100-200 PPM (flyingcat3) - selbst das reizte die vorhandenen Resourcen nicht aus - , die aber recht schnell wieder stark absanken. Im Moment liegt flyingcat2 bei 2-40 PPM und flyingcat3 bei 5-40 PPM. Wenn ich YaCy neu starte, sehe ich kurz Werte um 100 PPM, die aber rasch wieder sinken. Indexer- und Loaderqueue sind bei beiden meist völlig leer. RWI RAM ist auf flyingcat2 schwankend zwischen 0 und 100%, meist aber um 10%, auf flyingcat3 kaum über 5%. Die Crawls umfassen so viele Domains, dass Wartezeiten wegen Zugriffe auf gleiche Domains kein Problem sein können.

Ich will nicht glauben, dass YaCy die Maschinen nicht auslasten kann. Wie können wir herausfinden, was das Bottleneck ist?

Herzlichen Dank und freundliche Grüße,

Christian Korn
http://www.flying-cat.de
flyingcat
 
Beiträge: 3
Registriert: So Sep 28, 2008 1:39 pm

Re: Performance/CPU-Last

Beitragvon flyingcat » Mo Sep 29, 2008 6:13 pm

Ergänzung:

Wenn ich mir die YaCy Statistik anschaue, dann stehen da im Mittel über die letzten Stunden 430 PPM (flyingcat2) bzw. etwa 900 PPM (flyingcat3). Kann es sein dass die PPM-Anzeige im Crawler-Puffer schlichtweg falsche Werte liefert?

Nichtsdestotrotz wundere ich mich immer noch darüber, dass weder CPU, noch Disk oder Netzwerk am Limit sind. Sollte die Speichertransferrate das Limit sein?
flyingcat
 
Beiträge: 3
Registriert: So Sep 28, 2008 1:39 pm

Re: Performance/CPU-Last

Beitragvon Orbiter » Mo Sep 29, 2008 6:54 pm

hallo flyingcat!
ja so ist das .. den einen saugt YaCy zu viel Performance, den anderen zu wenig. Es kann ganz viele Gründe geben. Einer beispielsweise, dass YaCy zu nett zu den Servern ist und ein konservatives Crawl-Delay hat (0.5 Sekunden, also 2 Seiten pro Sekunde default). Ich sehe aber auch schon mal das eine robots.txt ein crawl-delay von 10 Sekunden oder sogar 1 Minute will, und das kann den ganzen Crawler blockieren.
Hierzu gibts ab Version 0.601 einen besseren Balancer, der ein wenig besser mit solchen Blockaden umgehen kann. (gibts über auto-updater)

Andererseits kann auch das IO ein Bottleleck sein. Wenn dein RWI RAM Cache am Limit ist, dann ist das ein Hinweis das es da bei dir klemmt. Abhilfe ist, den Cache zu vergrößern (Performance Memory)

Am besten guckst du mal ins log, vielleicht siehst du da was verdächtiges?
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Performance/CPU-Last

Beitragvon lulabad » Mo Sep 29, 2008 7:05 pm

flyingcat hat geschrieben:Ich will nicht glauben, dass YaCy die Maschinen nicht auslasten kann. Wie können wir herausfinden, was das Bottleneck ist?

Ich bin mir ziemlich sicher dass man mit yacy nahezu jedes System in die Knie zwingen kann. Zumindest wenn man weiss wo man drehen muss ;)


Die Stellschrauben findet man unter dem Performance Menu. Allerdings verstecken sich die wirklich Interessanten Einstellmöglichkeiten seit neuhestens unter dem unscheinbaren Link "show expert settings".
Also fangen wir mal an.

DHT Distribution: Für sehr schnelle Festplatten und viel Speicher kann man hier mal mit 1000/100 starten. Das bringt schon mal die Festplatte in schwitzen.
Local Crawl: Idle auf 1000 (weniger geht nicht) und busy auf 0.
Indexing: wie Local Crawl.

Dazu kann man dann auch noch die Werte für "Minimum of required memory" anpassen. Hier sollte man yacy eine Zeitlang laufen lassen und sich dann die Werte unter "Memory use per busy-cycle" anschauen und entsprechen anpassen. Achtung. Nicht mehr vergeben als Ram vorhanden. Ausserdem braucht java selber auch noch speicher.

Dazu noch unter dem Menüpunkt "Network Configuration" in der Admin-console bei IndexDistribution beides auf enabled setzen.

So, damit erstmal einen Crawl starten und schauen wie lange es die Kiste aushält.
lulabad
 
Beiträge: 709
Registriert: Mi Jun 27, 2007 11:40 am
Wohnort: Im Herzen Bayerns

Re: Performance/CPU-Last

Beitragvon Huppi » Mo Sep 29, 2008 9:09 pm

Mal ein Beispiel von einem Themensuche-Peer (ähnlich wie im ct' Artikel).
1.6 GHz AMD Duron, 1 GB RAM, alte PATA-Festplatte.
Dateianhänge
PerformanceGraph.png
PerformanceGraph.png (11.11 KiB) 762-mal betrachtet
Huppi
 
Beiträge: 898
Registriert: Fr Jun 29, 2007 9:49 am
Wohnort: Kürten

Re: Performance/CPU-Last

Beitragvon Nathan » Di Sep 30, 2008 5:21 am

Hm, klingt ja richtig gut die Hardware, die sollte einiges vertragen. 2.000ppm sind durchaus realistisch zu erreichen.
Ich tipp vornehmlich auch auf die Einstellungen wie oben beschrieben, die bremsend wirken.
Man sollte aber auch im Hinterkopf haben, dass Yacy massiv I-/O-Last erzeugt (weit weniger als früher zwar, aber dennoch ordentlich) und je mehr Platten man einbindet umso höher wird die Latenz, was Yacy nicht ganz so gefällt. Desweiteren kommt es auch auf verwendete Hardware an. Ich glaube zwar nicht dass du irgendwelches Billigstzeug hast, aber ich hatte auch schon einen Raid-Controller (SCSI) der zwar 320er SCSI konnte aber bei 8 Platten mit Yacy total einbrach. Keine Ahnung woran das lag, ob Hardware oder eventuell Treiberprobleme - anderen Controller (komplett anderer Hersteller, aber gleiche Größenordnung) genommen, dann rannte es. Hatte leider nicht genug Zeit zum weiteren Testen, da es nur eine Leihstellung von einem guten Freund war ^^

Aber schauen wir mal, was rauskommt wenn du die obigen Sachen umstellst. Ich will 3.000ppm sehen! :D
Nathan
 
Beiträge: 38
Registriert: Mi Jun 27, 2007 6:26 pm

Re: Performance/CPU-Last

Beitragvon flyingcat » Di Sep 30, 2008 2:58 pm

Die beschriebenen Einstellungen habe ich gestern noch vorgenommen - ohne eine sichtbare Änderung. Jetzt ist http://www.yacystats.de/ kaputt, so dass die anscheinend einzig brauchbare PPM-Zahl nicht zur Verfügung steht.

Ich bin sicher, dass sich auf der Hardware 2000 PPM erreichen lassen würden. Java ist nunmal nicht die beste Plattform für solche Anwendungen.

Ich vermute auch, dass YaCy ein massives Threading-Problem hat.

Indizien:
- die PPM-Zahl in der Anzeige "Crawler Puffer" hat mit der Realität nichts zu tun
- "Leistung" -> "Thread Pool Settings" behauptet oft, es würden 0 Threads laufen, obwohl der Crawler tut
- Gelegentlich läuft die Index-Queue voll und kein Indexing-Thread tut was, da hilft nur Neustart

Demnächst ersetzen wir die SATA-Disks im MD1000, die flyingcat2 verwendet, durch SAS-Disks. Mal sehen, ob das einen Einfluß hat. Den größten Einfluß hätte es sicher, wenn man YaCy mindestens nach .NET, besser C++, portieren würde und dabei das Zusammenspiel von Threads und Locks/Resources überdenken würde.

Wenn ich mal in Rente bin...

Viele Grüße,
Christian
flyingcat
 
Beiträge: 3
Registriert: So Sep 28, 2008 1:39 pm

Re: Performance/CPU-Last

Beitragvon Huppi » Di Sep 30, 2008 4:41 pm

Hallo Christian,

es gibt immer noch und immer wieder ein paar Bedenken, ob Java die ideale Plattform ist. Mindestens Orbiter ist überzeugt, daß die Wahl nicht SOOO schlecht war und auch ich habe den Eindruck, daß Java kein Performance-Problem verursacht. Ich denke, die Limitierungen liegen einfach in der Art (und Fülle) an Daten, die hier verarbeitet werden müssen.
Ich bin immer wieder überrascht, daß mein Celeron 400 MHz mit 160MB RAM durchaus für manche YaCy-Anwendungen geeignet ist.
Huppi
 
Beiträge: 898
Registriert: Fr Jun 29, 2007 9:49 am
Wohnort: Kürten


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 2 Gäste