[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