[Allegro] acon/avanti : Performance unter Linux
Bernhard Eversberg
ev at biblio.tu-bs.de
Mi Feb 2 11:32:49 CET 2011
Am 02.02.2011 11:14, schrieb Thomas Berger:
>
> Unter Windows benutzen Sie "Sleep(1)", das ist eine Millisekunde
> (oder Mikrosekunde: Das waere sehr knapp), unter Linux "sleep(1)"
> das ist eine Sekunde und damit deutlich zu lang.
>
Sicher, aber bei Linux/Unix ist an der Stelle keine Millisekunde
möglich, der Befehl sleep() kann da nur Sekunden.
> Wenn Sie da zu einheitlich gesunden Werten (ich wuerde vorschlagen:
> irgendwo zwischen 1 und 10 Millisekunden) gelangen,
nur wie?
>
> Auch koennten Sie das Setzen von "idle = 0" nicht davon abhaengig
> machen, dass erfolgreich Daten verschoben wurden, sondern dass
> es I/O-Conditions gab.
Falls hier wirklich der casus cnaxus liegt, was nach meinen neuerlichen
Versuchen eher nicht so ist.
>> Sicher, haben wir auch vor langer Zeit alles mal durchdacht. Scheiterte
>> dann aber doch an Komplexität, und es wurde acon als separates und
>> relativ schlankes Jobverarbeitungsprogramm geschaffen (zunächst
>
> Das Starten eines Prozesses ist teuer genug und auf meinem Linux-
> System finde ich wenige Binaries, die noch groesser sind als acon:
> Soviel zu "schlank".
Es hatte "relativ schlank" geheißen, und das meint etwa im Vergleich
zu a99, das ja auch ein Jobverarbeitungsprogramm ist.
> Das ~Oeffnen~ einer Datenbank mit dem dazu
> erforderlichen Oeffnen einer Vielzahl von Dateien wird allerdings
> wesentlich teurer sein als das reine Aufstarten von acon.
Eben. Deshalb raten wir immer, die oft gebrauchten Dateien (Index-
parameter, bestimmte Jobs u.a.) nicht ohne Not in allzuviele
Includes zu zerlegen.
> ... Innerhalb
> der Klassenbibliothek muesste sich eigentlich die Stelle
> ausfindig machen, wo die grundlegende Initialisierung (.CFG
> Lesen, .api Lesen, Datenbankdateien oeffnen) in die eher
> als dynamisch aufzufassende (Anzeige/Export/Druck-Parameter laden,
> Arbeitsspeicher initialisieren, Flexe und Jobs ausfuehren)
> uebergeht...
>
Sicher, das ist ganz klar. Erst in einer Jobausführung werden die
"eher als dynamisch aufzufassenden" Dinge gemacht: Satz- und
Exportobjekte, Ergebnislisten anlegen.
B.E.
Mehr Informationen über die Mailingliste Allegro