Subject | Re: Difference between Classic & SuperServer F1.5.2 |
---|---|
Author | Adam |
Post date | 2005-09-20T08:59:20Z |
--- In firebird-support@yahoogroups.com, "rekkod" <anton@d...> wrote:
direct link to the whitepaper.
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_ss_vs_classic
In a nutshell, Classic (CS from here on) spawns a new process for
every connection, Superserver (SS from here on) spawns a new thread
within the single server process for every connection.
CS will therefore consume more resources per connection than SS and
can not share a common cache. SS can also have a dedicated garbage
collection thread rather than relying on cooperative garbage collection.
There are a couple of problems with SS that mean that in some cases CS
is a better choice. Firstly, in multi processor machines, SS is
(currently) unable to send different threads to different CPUs, so in
multiple CPU systems (or even in hyperthreaded systems) at best the
server is executed only on a single CPU (which is a waste). At worst,
the OS goes silly and see saws the process from one CPU (or virtual
CPU) to the other, making it even slower than if there was only a
single CPU.
Adam
> Hi AllThere is a whole FAQ on the topic on the Firebird website, here is the
> what is the difference between Classic & SupperServer.
direct link to the whitepaper.
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_ss_vs_classic
In a nutshell, Classic (CS from here on) spawns a new process for
every connection, Superserver (SS from here on) spawns a new thread
within the single server process for every connection.
CS will therefore consume more resources per connection than SS and
can not share a common cache. SS can also have a dedicated garbage
collection thread rather than relying on cooperative garbage collection.
There are a couple of problems with SS that mean that in some cases CS
is a better choice. Firstly, in multi processor machines, SS is
(currently) unable to send different threads to different CPUs, so in
multiple CPU systems (or even in hyperthreaded systems) at best the
server is executed only on a single CPU (which is a waste). At worst,
the OS goes silly and see saws the process from one CPU (or virtual
CPU) to the other, making it even slower than if there was only a
single CPU.
Adam