[comp.windows.x] Resource limits and backing store.....

jonnyg@ROVER.UMD.EDU (Jon Greenblatt) (12/11/88)

	I have been having trouble with the server running out of memory when
running a large program using backing store. My default datasize is
set to 6 meg but this is not enough when running some realy hungry X programs
such as XPS. BTW XPS is available from expo.lcs.mit.edu via anonymous ftp in
/oldcontrib/xps.tar.Z. I am using xdm to start my server and have come up
with this temporary work around:

	I call xdm from the folowing program:

/* biglimit.c */

#include <sys/time.h>
#include <sys/resource.h>

main(argc,argv)
char *argv[];
	{
	struct rlimit dlimit, slimit;

	if (argc > 1) {
		getrlimit(RLIMIT_DATA,&dlimit);
		getrlimit(RLIMIT_STACK,&slimit);
		dlimit.rlim_cur = dlimit.rlim_max;
	        slimit.rlim_cur = slimit.rlim_max;
			/* The stack size does not realy need to
			   be changed but I do it anyway */
	        setrlimit(RLIMIT_DATA,&dlimit);
	        setrlimit(RLIMIT_STACK,&slimit);
		execvp(argv[1],argv+1); /* Call the program */
		}
	}


	The calling sequence is as follows:

		biglimit xdm


	If you want just the server to have the big limits and not every
thing called by xdm then just put biglimit on the call to the X server.
Maybe this should be included in the server initialization code? It
seems to me that turning on backing store in even a small 24 plane
color window would cause havock. In the meantime biglimit.c is excelent
for doing customizations with memory limits. Do a "man setrlimit" for
more info on this.

					JonnyG.
					(jonnyg@umd5.umd.edu)
					(jonnyg@rover.umd.edu)

dshr@SUN.COM (David Rosenthal) (12/12/88)

I don't want to sound too much like Cassandra,  but I hope the folks
pushing non-virtual-memory X terminals read this from Jon Greenblatt:

> 	I have been having trouble with the server running out of memory when
> running a large program using backing store. My default datasize is
> set to 6 meg but this is not enough when running some realy hungry X programs
> such as XPS.

I have pointed out for a long time:

-	that current X11 clients fail abruptly as soon as they get an Alloc
	failure from the server,
-	that making them survive Alloc errors is hard,  because of the
	asynchronous nature of error notification,
-	that current X11 clients make little use of the memory-consuming
	parts of the X11 protocol,  because these are the parts that weren't
	there in X10,
-	and that this is skewing our ideas of how much memory an X11 server
	in normal use will require.

Unless the X community works out how to write clients that don't simply
collapse at the first hint of resource exhaustion,  the suppliers of X
terminals are going to have a lot of VERY unhappy customers.  Remember,
my experiments over a year ago showed that even a 0.5% alloc failure
rate rendered the system totally unusable.

I have seen no discussion of this problem in the past year.  I hope you
all out there aren't just sticking your heads in the sand......

	David.