[Allegro] Braucht avanti zuviel CPU?

Thomas Berger ThB at Gymel.com
Fr Feb 14 11:18:18 CET 2014


Lieber Herr Eversberg, liebe Liste,

> Ein Anwender meldete mir, daß auf seinem Windows-Server der Dienst
> avanti fast die ganze CPU-Leistung zu verbrauchen scheint. In der Folge
> sei a99 an den Workstations dann unerhört träge.
> Kann das sein? Hat sowas schon jemand erlebt?

Es kann nicht schaden, avanti einmal probeweise neu zu
starten, evtl. laeuft da etwas Amok.

Es gab Versionen, wo das CPU-Limit nicht funktionierte,
d.h. von avanti aufgestartete acons konnten ausser
Kontrolle geraten und wurden dann nicht automatisch
abgeschossen.

Es gab Versionen, wo /unbelastete/ avanti's stets einige
hundert Millisekunden abgewartet haben.

Auf virtuellen Servern kann 100% CPU-Auslastung ganz o.k.
sein, wenn der Host nur 1% "reale" CPU-Anteile zuweist.

Generell braucht avanti /im Leerlauf/ aber - zumindest unter
Linux - zu viel CPU: Avanti muss sowohl ein- und ausgehende
Verbindungen auf Sockets als auch ausgehenden Traffic ueber
Pipes beobachten bzw. weiterleiten, von jeder Sorte ggfls.
mehrere. Unter Linux lassen sich Sockets und Pipes gemeinsam
abfragen, d.h. theoretisch kann avanti sich vergleichsweise
lange schlafen legen und wird vom Betriebssystem geweckt,
wenn irgendetwas ansteht. Unter Windows geht das nicht,
da koennn nur Sockets oder nur Pipes beobachtet werden
(bzw. es wird wohl erwartet, dass mit Threads programmiert
wird), insofern legt sich Avanti vergleichsweise kurz
schlafen (und wird geweckt, wenn etwas ansteht), damit
es dann haeufig von sich aus die andere Sorte Ereignis
nachkontrollieren kann. Ich wollte das bei Gelegenheit
immer mal ueberarbeiten (damit es zumindest unter Linux
schneller und Ressourcensparender ist - hat man mehrere
avanti's auf einer Maschine macht sich das durchaus schon
bemerkbar).

viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro