Re: performance 4GL and Workgroup server
Posted in 1997
>From: Sood_Niraj/SO@instru.fi
>Date: Tue, 6 May 97 17:04:56 +0300
>X-Informix-List-Id: <list.14359>
>
>I have a 4gl app. running with wgs 7.2 on intel sco openserver 5. The
>machine has memory 64 meg.
>
>4gl application is really slow for some reason. It seems that the
>database isn't slow because the awnser comes very fast with dbaccess.
>
>The same 4gl app. is very fast with online 5.
>
>The 4gl application is version 4.x.
>
>If somebody knows what to do, please help.
There was only one reason why the 6.0x versions of I4GL were produced, and
that was because the performance of 4.1x I4GL when connecting to the 6.00
and later engines was too poor to be acceptable.
With the 5.00 engine, the 4.1x application forks and execs the engine.
There are two processes talking to each other, so it is relatively
efficient.
With the 7.2x engine, the 4.1x application fork and execs the relay module,
which then talks to the engine on behalf of the application. There are
three processes involved, with all of the conversation going through the
intermediary relay module. Think of it this way: the message is written to
a pipe in the application; the relay module reads the message from the pipe
into its internal buffer; the relay module then writes the message into the
area where the engine expects to get it (location varies depending on
connection protocol); the engine reads the message, works on it, and writes
an answer back to the relay module; the relay module reads the message into
its buffers, and then writes it back to the pipe to the application; and
the application then reads the message. There are 2 extra copies in each
direction with the relay modules, plus to extra process switches. It is
bound to be slower than the more direct connection.
With a 6.0x I4GL application, the application talks to the engine directly
again, using the same connectivity as the relay module would. There are
only two processes involved, so it is relatively efficient.
The moral of the story is: if you are using a 7.x engine, use 6.0x I4GL.
Yours,
Jonathan Leffler (johnl@informix.com) #include <disclaimer.h>