Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!harpo!seismo!hao!hplabs!sri-unix!Mike.Accetta@cmu-cs-ius From: Mike.Accetta%cmu-cs-ius@sri-unix.UUCP Newsgroups: net.unix Subject: Re: How can I get bigger processes on 4.1BSD ? Message-ID: <15394@sri-arpa.UUCP> Date: Thu, 12-Jan-84 11:28:09 EST Article-I.D.: sri-arpa.15394 Posted: Thu Jan 12 11:28:09 1984 Date-Received: Sun, 15-Jan-84 01:32:37 EST Lines: 46 Bill, What panic message are you getting? You probably also have to change the definition of NDMAP in h/dmap.h. The setup document mentions this file but neglects to describe what constants to change. We were able to use 12Mb data segment sizes after doubling this constant from 16 to 32. To explain, the paging system allocates chunks of paging space for the data segment geometrically beginning with a size of DMMIN up to a maximum of DMMAX. It stores the pointers to the beginning of each of these chunks in the dm_map array. Paging area memory for a large process would thus get allocated something like this: Chunk Size (sectors) 0 32 \ 1 64 | 2 128 | < .5 Mb 3 256 | 4 512 / 5 1024 \ 6 1024 | 7 1024 | 8 1024 | 9 1024 | 10 1024 | 5.5 Mb 11 1024 | 12 1024 | 13 1024 | 14 1024 | 15 1024 / Which as you can see causes the dm_map array to run out of room slightly before the process size can reach 6Mb. By adding another 16 elements to the the end of the array, you gain 16*.5Mb = 8Mb more process address space for a maximum of slightly under 14Mb (actually the minimum number which you need to increase NDMAP by is more like 12 or 13 for 12Mb data segments depending on how you define MAXDSIZ). When you change this constant it is also advisable to recompile the various user programs (w, ps and pstat are the ones that come to mind immediately) which include this file for examining the user area of a process and for grabbing the command line arguments from the paging area when a process is not resident. - Mike Accetta