markb@ea.ucla.edu (sundance) (03/11/89)
On my Sun4/280 with SunOS 4.0, we have numerous remote logins. We run out of pseudo tty's and receive the following error: ldtermopen: open fails, can't allocate state structure ldtermopen: open fails, can't allocate state structure So we look at the /dev/tty[p,q,r][0-e] entries created by MAKEDEV and find: crw--w---- 1 miriam 20, 0 Feb 27 09:25 /dev/ttyp0 crwx-w---- 1 candida 20, 1 Feb 27 10:40 /dev/ttyp1* . . . crw--w---- 1 maria 20, 38 Feb 27 10:44 /dev/ttyr6 crwx-w---- 1 winifred 20, 39 Feb 27 10:32 /dev/ttyr7* crw-rw-rw- 1 root 20, 40 May 27 1988 /dev/ttyr8 crw-rw-rw- 1 root 20, 41 May 27 1988 /dev/ttyr9 crw-rw-rw- 1 root 20, 42 May 27 1988 /dev/ttyra crw-rw-rw- 1 root 20, 43 May 27 1988 /dev/ttyrb crw-rw-rw- 1 root 20, 44 May 27 1988 /dev/ttyrc crw-rw-rw- 1 root 20, 45 May 27 1988 /dev/ttyrd crw-rw-rw- 1 root 20, 46 May 27 1988 /dev/ttyre crw-rw-rw- 2 root 20, 47 May 27 1988 /dev/ttyrf This means that only 40 pseudo terminals are supported; the last eight devices are never accessed. In the system configuration file we have MAXUSERS = 90. I looked all over the place in param.c and elsewhere for something that would be in charge of pseudo tty's. I even grepped for 40 to find it that way. No luck. Does anyone know where I'd find the parameter to increase the number of pseudo tty's? Thanks -- Mark Bell UCLA Engineering School markb@ea.ucla.edu [[ Since you are getting that particular error message, you must have already bumped up the number of available streams (the define for NSTREAM in param.c). Turns out that that isn't enough. Try the command "netstat -m". For some weird reason, this command also tells you about stream allocations (seems inappropriate for "netstat" to me). If your machine is like ours, it will probably tell you that you have a very large number of allocation failures for 128-sized dblocks. If this is the case, try doubling the number that is defined to be NBLK128 in (kernelname)/param.c. We have not tried this last step yet, but the guy from the answer center (who finally called us five weeks after we logged the call on this one) seemed to think that that would do the trick. The problem is that the memory pools for these blocks are statically allocated and their sizes are not dependent on anything (not even "MAXUSERS"). A rather reliable source tells me that under 4.1 these blocks will be dynamically allocated, thus fixing the general problem. While you're looking at that file, make sure that NSTREAM is at least 64. --wnl ]]