Avanti 2.1.1 logfile stottert

Thomas Berger ThB at gymel.com
Di Dez 2 12:39:16 CET 2003


Martin Butkus wrote:
> 
> Lieber Herr Berger, liebe Liste,
> 
> > (und ich habe den Eindruck, dass das exzessive Loggen Einfluss
> > auf die Performance hat bzw. dass hier Dinge Zeichenweise
> 
> Das kann sein. Verbessert sich denn die Performance, wenn man
> das Logging abschaltet?
> 
> > transportiert werden, die besser bufferweise transportiert
> 
> Eigentlich nicht. Das Frontend buffert grundsätzlich alle Transfers,
> auch diejenigen für den stderr-Kanal des Kindprozesses.
> 
> Das Problem scheint vielmehr zu sein, daß die Stderr-Pipe von Seiten
> des Kindprozesses nur häppchenweise gefüllt wird, der Parent-Prozeß
> erwartet aber (unberechtigterweise), mindestens eine ganze Zeile aus
> der Pipe lesen zu können.  Offenbar hatte ich Glück, mein Rechner
> ist scheinbar so schnell (oder langsam?) daß das immer geklappt hat.

bei Einprozessormaschinen: "so langsam". bei Mehrprozessormaschinen:
"so schnell" ?

> Dieses Verhalten des Kindprozesses liegt darin begründet, daß für
> die Kommunikation via Pipes das normale stdio-Buffering abgeschaltet
> wurde. Macht man das nicht, gibt es u.a. Probleme mit Clients, die
> nach "AVANTI:EOJ" kein Zeilenende "\n" senden, aber dennoch sofort
> eine Antwort erwarteten. Es gab einige User auf der Liste, die
> dieses für ihre Skripte benötigen.

das AVANTI:EOJ wurde spaeter eingefuehrt, um solche Probleme
zu beheben. Es gab aber Client-Skripte, die das nicht verstanden
haben, der alte avanti hat das tolieriert (bzw. der rappelte
ja sowieso los, sobald der erste Bufferinhalt angekommen war,
egal ob der Job komplett war oder nicht). 

 
> Für stdout und stderr kann man das Buffering natürlich dennoch
> einschalten, stdin muß dagegen weiter ungebuffert bleiben [Alternativ
> könnte man das Protokoll ändern, dann müßten die betroffenen Benutzer
> aber ihre Skripte anpassen.

Ich finde, der Uebergang auf avanti2 ist *die* Gelegenheit,
das Avanti-Pseudoprotokoll von etwas komplett undefinierten
auf "zeilenweise" umzustellen (Wobei die Zeilen manchmal
eklig gross werden, evtl. sollte man auch noch ueber
"Fortsetzungszeilen" nachdenken, also etwa

find # 1,2,3,4,...,1000\
1001,1002,....,2000\
...

(zu wissen, dass eine Zeile maximal 8192 Bytes oder so gross
ist, waere vermutlich fuer alle beteiligten Komponenten hilfreich).

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro