home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / os / vms / 20456 < prev    next >
Encoding:
Internet Message Format  |  1993-01-06  |  2.0 KB

  1. Path: sparky!uunet!paladin.american.edu!howland.reston.ans.net!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!ucbvax!IPG.PH.KCL.AC.UK!SYSMGR
  2. From: SYSMGR@IPG.PH.KCL.AC.UK
  3. Newsgroups: comp.os.vms
  4. Subject: Re: ballooning EXE size
  5. Message-ID: <2A2001BF_000770F8.009663742A989FC0$427_1@UK.AC.KCL.PH.IPG>
  6. Date: 6 Jan 93 16:55:09 GMT
  7. Sender: daemon@ucbvax.BERKELEY.EDU
  8. Distribution: world
  9. Organization: The Internet
  10. Lines: 35
  11.  
  12. >> [regarding the problem of a FORTRAN program that suddenly needed 70 times
  13. >> as many disk blocks for the .EXE after minor changes and a relink]
  14. >> ... increase ISD_MAX ...
  15. >
  16. > ...
  17. > Image sections do not come for free.  Your process can only have a certain
  18. > number of them, given by the PROCSECTCNT SYSGEN parameter value.  To avoid
  19. > creating too many image sections, the Linker stops doing demand-zero compression
  20. > when the total number of image sections reaches the value set by the ISD_MAX
  21. > linker option, the default value of which is 96.  This is what happened ...
  22.  
  23. I haven't yet seen any mention of the other linker option relevant to this
  24. discussion: DZRO_MIN. This is the minimum number of contiguous uninitialised
  25. writeable pages that the linker must find before it decides to create a demand-
  26. zero section. The default is 5, which IMHO is far too small for the typical
  27. large FORTRAN program. Perverse as it may sound, try increasing it while
  28. leaving ISD_MAX alone. You'll probably get an EXE file which is both efficient
  29. with respect to section usage, and reasonably compact, though a bit bigger
  30. than it used to be.
  31.  
  32. In FORTRAN variables are allocated at LINK time. Typically what you want is
  33. for your large uninitialised arrays and/or large uninitialised COMMON blocks
  34. to become demand-zero sections. Suppose your smallest 'big' array declaration
  35. is REAL A(64,64). Then setting DZRO_MIN to 32 (64*64*4/512) will prevent you
  36. from hitting ISD_MAX while linking 'smaller arrays.
  37.  
  38.     Hope this helps,
  39.  
  40.         Nigel Arnot
  41.  
  42.         NRA%ipg.ph.kcl.ac.uk@nsfnet-relay.ac.uk   (internet)
  43.         NRA%uk.ac.kcl.ph.ipg@ukacrl.bitnet        (bitnet)
  44.  
  45.  
  46.  
  47.