[Vienna-pm] hash in shared memory?

LAUN Wolfgang wolfgang.laun at alcatel.at
Mon May 24 00:45:48 CDT 2004


> -----Original Message-----
> From: peter pilsl [mailto:pilsl at goldfisch.at]
> Sent: Friday, May 21, 2004 4:18 PM
> To: vienna-pm at mail.pm.org
> Subject: Re: [Vienna-pm] hash in shared memory?
> 
> 
> 
> Warum shared memory?
> 
> Ich verwende shm in folgendem szenario:
> 
> beliebig viele prozesse (zB eine threaded serverapplikation wie 
> apache/mod_perl) wollen gemeinsame daten sehr effizient sharen (zB 
> caching aufwändiger Datenbankabfragen etc.)

Das ist doch ein anderes Szenario als das ursprünglich mit einem
Produzenten und einem Konsumenten beschriebene.

> Ich komme bei kaum einer mod_perl-applikation ohne aus. Irgendwo ist 
> immer die Situation, dass ein Prozess Daten zeitaufwändig 
> gewinnen muss 
> und dann über shm bequem den anderen zur Verfügung stellen muss.
> 
> Wenn man es einmal gemacht hat, ist es so komplex auch wieder nicht.
> semaphoren sind für ein simplex locking bestens geeignet und es muss 
> einen Allocation-Table geben, damit alle Prozesse den Überblick 
> behalten, was eigentlich gespeichert ist.
> Wichtig natürlich immer ein monitor, der die shm-segmente 
> wieder löscht, 
> wenns nötig ist.

Eben doch ein wenig viel Aufwand, wenn's eine Pipe (oder eine
entsprechende Einbahn-Verbindung) von A nach B auch tut.

> 
> Sockets sind für diese Art der Anwendung nach meinem Wissen 
> nicht geeignet.

Klar, denn (wie oben gesagt) das ist ja eine andere Situation. 

-W

> 
> peter
> 
> 
> LAUN Wolfgang wrote:
> > Zu den Hinweisen auf die CPAN-Module, die zum Thema SM gekommen
> > sind, möchte ich eine grundlegende Frage stellen: Warum soll
> > überhaupt Shared Memory verwendet werden? Damit handelt man
> > sich eine ganze Reihe von Problemen ein.
> > 
> > (1) Shared memory segmente müssen angelegt und initialisiert
> > werden. Damit muss man zwischen einem Cold start (SM
> > anlegen und initialisieren) und einem Restart (z.B. nach
> > Ausfall eines oder beider Programme) unterscheiden.
> > 
> > (2) Weiters wird Synchronisation zwischen dem Produzenten
> > (dem Sammler-Prozess) und dem Konsumenten (der DB-Client)
> > notwendig.
> > 
> > (3) Ein Hash wächst i.a. dynamisch; SM-Segmente sind dafür
> > nicht unbedingt gut geeignet.
> > 
> > Ich habe in einer Reihe ähnlicher Fälle immer Sockets für
> > die Weitergabe von Daten verwendet und bin damit recht gut
> > gefahren. Neben dem Wegfallen aller Nebenbedingungen für SM
> > gewinnt man gratis dazu, dass Produzent und Konsument auch
> > auf verschiedenen Systemen laufen können. Speichern der
> > Daten ist natürlich nur mehr im Kosument notwendig.
> > 
> > Ich habe für das Socket-Handling das Package Msg.pm
> > aus dem Buch "Advanced Perl Programming" von Sriram
> > Srinivasan verwendet. Der Code ist auf 
> > http://examples.oreilly.com/advperl/
> > zu finden.
> > 
> > (Zusatzfrage: Warum müssen es überhaupt 2 Prozesse sein?)
> > 
> > Für weitere Auskünfte stehe ich gerne zur Verfügung!
> > 
> > Wolfgang Laun
> > Transport Solutions Division
> > Alcatel Austria AG
> > Phone +43 1 27722 5662
> > Fax   +43 1 27722 1173
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> >>-----Original Message-----
> >>From: Josef Bergmann [mailto:joe at bec.at]
> >>Sent: Wednesday, May 19, 2004 5:54 PM
> >>To: vienna-pm at mail.pm.org
> >>Subject: [Vienna-pm] hash in shared memory?
> >>
> >>
> >>Hi!
> >>
> >>Ich möchte das zwei Linux-Programme auf gemeinsame Daten 
> >>zugreifen. Konkret, 
> >>ein Programm sammelt Informationen aus Netzwerkverbindungen 
> >>und legt diese 
> >>(z.Z.) in Hashes ab. Nun soll ein anderer Prozess diese Daten 
> >>periodisch 
> >>auslesen und in einer Datenbank ablegt.
> >>
> >>Die beiden Teilproblem habe ich ja gelöst, nur wie/wo lege ich die 
> >>Daten/Hashes ab damit der zweite Prozess darauf zugreifen 
> >>kann. Gibt es so 
> >>eine Art Shared-Memory-Modul?
> >>
> >>bye Josef
> >>-- 
> >>BERGMANN engineering & consulting  http://bec.at
> >>_______________________________________________
> >>Vienna-pm mailing list
> >>Vienna-pm at mail.pm.org
> >>http://mail.pm.org/mailman/listinfo/vienna-pm
> >>
> > 
> > _______________________________________________
> > Vienna-pm mailing list
> > Vienna-pm at mail.pm.org
> > http://mail.pm.org/mailman/listinfo/vienna-pm
> > 
> 
> _______________________________________________
> Vienna-pm mailing list
> Vienna-pm at mail.pm.org
> http://mail.pm.org/mailman/listinfo/vienna-pm
> 




More information about the Vienna-pm mailing list