Vb.162: avanti-w verbessert

Volker Bachschneider V.Bachschneider at t-online.de
Mo Jan 6 18:13:18 CET 2003


Am Mon, 6 Jan 2003 09:12:48 +0100 schrieb
"Bernhard Eversberg" <EV at buch.biblio.etc.tu-bs.de> 

>... 
> Die Zahl 20 ist vorerst mal fest eingestellt, evtl. kann sie
> auf 100 oder mehr eingestellt werden, das bleibt abzuwarten.
> Es duerfte sicherer sein, diese Zahl nicht zu hoch zu setzen!
> Die Maximalzahl von Threads war bisher auf 4 gesetzt, dies
> wurde versuchsweise auf 8 geaendert. Mit dem Problem als solchem
> hat das aber nichts zu tun.

Wie Herr Höppner vor einiger Zeit geschrieben hat, habe ich im letzten
Jahr recht ausfuehliche Versuche mit Avanti-cl gemacht.
Die Idee war - wenn schon keine Language-Bindings für Avanti-cl da sind
:(, so doch das Antwortverhalten dadurch zu verbessern, das man eine Art
Preload macht, naeherhin eine Anzahl Avanti-cl in einem Threadpool im
Vorab startet. Sieht man von den Problemen mit popen2 unter Win ab (kaum
sicher zu implementieren, unter Python nur die Win-Erweiterung von Mark
Hammond), haben sich Threadpools oberhalb von 4 Threads nicht bewährt.
Bei meinen Testläufen (bis zu 100000 kurze Jobs) blieb oberhalb dieser
Grenze immer mal wieder ein Thread hängen. Ich rate daher von einem
Hochsetzen des Wertes ab.

Ein solches Verfahren wie oben genannt bringt nebenher nicht wirklich
grosse Geschwindigkeitsvorteile, dazu es wäre für Avanti-Cl nötig auch
schon die *.cfg und nach Möglichkeit auch die Export-Parameterdatei im
Vorab laden zu können. So wie es jetzt ist, reicht es den Avanti-Cl
Prozeß in einem neuen Tread zu starten, wenn er benötigt wird. In der
Regel kostet eh der Job am meisten. Auf Seiten eines vorgeschalteten
Socketservers gibt es durch die Arbeitsweise von Avanti (erst alles
fertigmachen, dann rausschicken) keine Optimierungsmöglichkeiten, soll
heißen es ist schnuppe ob asynchron oder nicht.

Für vielversprechend hingegen halte ich die Idee, nach einer
Mengenbildung im Server zu cachen, eine CacheID zu vergeben und damit
typische Anwendungfälle (Batching über Indices der Menge, z.B. bei
Registerauszügen) aus den abzuarbeitenden Avanti-Jobs herauszunehmen.
Sobald schreibend zugegriffen wird kann man den Cache ja verwerfen. Dies
betrifft allerdings vermutlich auch wieder nur Lösungen mit Avanti-Cl,
Avanti hat ja sicher eigene Caching-Strategien.


MfG

Volker Bachschneider




Mehr Informationen über die Mailingliste Allegro