[GRASS5] network traffic
Glynn Clements
glynn.clements at virgin.net
Mon Jan 28 09:21:36 EST 2002
Glynn Clements wrote:
> Roger Miller wrote:
>
> > I run GRASS (5.0.0pre2) through ssh on a ppp connection to my installation at
> > the office. I used the command line interface. When I start a monitor the
> > lag between keystrokes and displayed results often increases. Starting a
> > second monitor virtually stops everything. The lag between the time a key is
> > pressed and the time it appears on the screen sometimes exceeds 30 seconds.
> >
> > I started pppstat on my local machine to see what was going on, and found
> > that the first monitor generated a continuous stream of network traffic at
> > about 8kb/second incoming and 4-5 kb/s outgoing. Somewhat bizzarly, starting
> > a second monitor dropped that stream to about 5 kb/second incoming and about
> > 200 bytes/s outgoing. The command shell slowed to a near halt.
> >
> > After I stopped the second monitor the network traffic initially stayed at
> > about 4 kb/s incoming and 200 bytes/s outgoing, but the traffic later rose
> > fairly gradually back to about 8 kb/s incoming and 4-5 kb/s outgoing.
> >
> > All of this behavior is with a blank monitor--nothing at all in the display.
> > The behavior is the same regardless of whether the monitor is raised or not.
>
> I think I know what's going on. XDRIVER is continuously polling the X
> display connection and the GRASS monitor socket alternately. It should
> really be doing a select() on both descriptors.
>
> I'll look into a fix; in the meantime, you may be able to reduce the
> traffic by increasing the timeout in get_connection_sock() in
> display/devices/lib/connect_sock.c.
OK, I've committed a fix to XDRIVER, so that it waits until either the
GRASS monitor socket or the X connection is readable. This should
eliminate the busy wait.
However, it may impact upon the libW11 version; likely consequences
are either:
a) a busy wait, or
b) the monitor becoming unresponsive
when no client is connected. It depends upon whether the descriptor
obtained from ConnectionNumber() is readable (according to select()).
--
Glynn Clements <glynn.clements at virgin.net>
More information about the grass-dev
mailing list