Re: Mehr Speed?

"Jens W. Klein" <[email protected]>
Newsgroups gmane.comp.web.zope.german
Organization Klein & Partner KEG, BlueDynamics Alliance
Message-ID <1238401850.6818.21.camel@minime>
Hi!

Am Montag, den 30.03.2009, 10:07 +0200 schrieb Peter Zechmeister:
> Hallo,
> 
> (wieder mal) ein paar Fragen zu Caches, Ram, Threads...
> 
> Wir haben ZEO und jeweils 4 Worker-Threads und die Anzahl der Objekte im
> Cache ist sehr hoch eingestellt, dass die Clients durchaus 1-2 Gig Ram
> brauchen dürfen.

Ich habe sehr gute Erfahrung mit der Reduktion auf max 2 Threads
gemacht. Weniger gegenseitige Blockade führen zu besserer Performance.

> Soweit ich das verstehe, ist der Flaschenhals ja, dass Objekte, die
> nicht im Object(Ram)-Cache liegen, von der HD aus einem temporären
> Datenbankfile geholt werden müssen.

Der ZEO-client fährt 2 Strategien: zum einen den RAM-Cache, der über die
Objektanzahl limitiert wird, zum anderen den Disk-Cache, der über einen
Byte-Wert limitiert wird. Die gesamte Strategie ist mehr als fragwürdig
und entspricht definitiv nicht dem, was ich unter modernem
Cache-Management verstehe. 

> Was wäre nun, wenn ich dieses File nicht auf die HD, sondern in eine
> Ramdisk legen würde? Könnte man dann auf die großen Object-Caches
> verzichten?

Meiner Meinung nach sinnlos, s.u.

> Der Nebeneffekt wäre, da die Object-Caches ja redundant Ram fressen (pro
> Worker einer), dass man viel mehr Ram frei hätte, bzw. das temporäre
> File durchaus groß sein dürfte.

Soweit ich das verstanden habe, cached nicht jeder Worker-Thread
separat. Im Code angeschaut habe ich den Teil noch nicht (wir haben max
1-2 Worker-Threads, da ist das relativ nebensächlich).

> Was mich an der Idee aber irritiert ist, dass Linux ja eine sehr gute
> Ram-Caching-Strategie fährt, und dieses temporäre DB-File ja
> möglicherweise sowieso als ganzes im Ram liegt. Ist das so?

Bingo. Und deswegen macht die RAM-Disk wenig Sinn. Nutze den RAM lieber
geschickter aus.

> Oder ist der Flaschenhals eher der Zugriff auf die Objekte in der DB und
> nicht der Zugriff auf die HD?

Wenn die DB auf einer anderen Maschine liegt ist das der Flaschenhals,
sonst weniger (und man kann sich einen großen Diskcache sparen). Meine
Tests haben ergeben, dass primär das entpickeln der Objekte Performance
frisst. Alles was aus dem Disk-Cache oder von der DB geladen werden muss
wird entpickelt. Im RAM-Cache leben schon konkrete Objekte. Daher ist
die Maxime diesen möglichst gut zu nutzen. 

Die Strategie ist aber auch von Anwendung zu Anwendung völlig
unterschiedlich. Eine öffentliche Webseite ohne viele Logins muss man
völlig anders aufziehen wie ein Intranet. 

Ein weiteres Kriterium ist dann noch wie man die Caches füllt, wo man
zusätzlich noch mit memcached viel Zeit sparen kann usw. Grade bei
Intranets kann man da sehr viel Zeit sparen. Aber es gibt nicht das
perfekte vorgefertigte Rezept. An der Stelle kommt man um
applikationsspezifisches Profiling nicht herum. Zudem stellt in dem
Zusammenhang sich die Frage was günstiger ist: Arbeitszeit investieren
oder eine Maschine dazustellen...

beste gruesse Jens
-- 
Jens Klein
Software Architect
Managing Director, General Partner
+43 512 890077

BlueDynamics Alliance        WEB APPLICATIONS,  ZOPE,  PLONE, HOSTING
Klein & Partner KEG          production: concept, development, design
http://bluedynamics.com      consulting: analysis, coaching, training
http://zoplo.com             management: projects, process, community



_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.