Michael Ganz
2010-09-07 13:59:16 UTC
I don't know if this is the right list, but I didn't found a better one for
the problem.
At the moment I'am developing an application-server with different services
in C++ on Linux, Windows and Solaris.
The server-admin can implement own servicefunctions by configuring and
implementing perl-scripts using XS-functions for interaction with server
(XML-DOM, call other servicefunctions, logging, etc.). This works great, but
there are memory leaks and sometimes the server crashed in the
perl-interpreter depended on the used modules (I guess a multithreaded
issue).
So, I decided to implement a special perl-corba-server for running the
scripts.
Each perl script is parsed and stored in an interpreter instance using a
stl-map.
For faster running, I decided to parse the scripts at startup of the
perlserver.
To make it stable I fork the server process.
I saw that every interpreter-instance will allocate about 1MB of RAM
(Linux).
So dealing with about 250 scripts, this allocates about 250 MB of RAM.
Now my questions:
Did I understood or implemented something wrong (interpreter
per script - one interpreter for all) ?
Why does an Interpreter-instance not running, uses this memory amount
(environment) ?
Is it possible to compile and store the scripts without an
complete interpreter instance ?
.
Regards Michael Ganz
the problem.
At the moment I'am developing an application-server with different services
in C++ on Linux, Windows and Solaris.
The server-admin can implement own servicefunctions by configuring and
implementing perl-scripts using XS-functions for interaction with server
(XML-DOM, call other servicefunctions, logging, etc.). This works great, but
there are memory leaks and sometimes the server crashed in the
perl-interpreter depended on the used modules (I guess a multithreaded
issue).
So, I decided to implement a special perl-corba-server for running the
scripts.
Each perl script is parsed and stored in an interpreter instance using a
stl-map.
For faster running, I decided to parse the scripts at startup of the
perlserver.
To make it stable I fork the server process.
I saw that every interpreter-instance will allocate about 1MB of RAM
(Linux).
So dealing with about 250 scripts, this allocates about 250 MB of RAM.
Now my questions:
Did I understood or implemented something wrong (interpreter
per script - one interpreter for all) ?
Why does an Interpreter-instance not running, uses this memory amount
(environment) ?
Is it possible to compile and store the scripts without an
complete interpreter instance ?
.
Regards Michael Ganz