home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / vmsnet / internal / 1187 < prev    next >
Encoding:
Internet Message Format  |  1992-08-25  |  8.6 KB

  1. Path: sparky!uunet!paladin.american.edu!darwin.sura.net!wupost!usc!cs.utexas.edu!swrinde!network.ucsd.edu!mvb.saic.com!macro32
  2. From: brydon@dsny25.sinet.slb.com
  3. Newsgroups: vmsnet.internals
  4. Subject: RE: VMS Tuning
  5. Message-ID: <9208251951.AA20344@sndsu1.sinet.slb.com>
  6. Date: 25 Aug 92 19:51:47 GMT
  7. Organization: Macro32<==>Vmsnet.Internals Gateway
  8. Lines: 146
  9. X-Gateway-Source-Info: Mailing List
  10.  
  11. Dick Joltes (joltes@husc.harvard.edu) says:
  12.  
  13. >As most folks have pointed out, tuning isn't absolute.  You often can't take
  14. >the rationale used on one machine to another, especially if the second system
  15. >has a different workload than the first.  Tuning a single-user workstation is
  16. >vastly different from tuning an 80-user 6000-400...
  17.  
  18. There are some things that can be generalized with success.  As you say, some
  19. not.
  20.  
  21. >One method I've used in the past is to take a new application, install it
  22. >on the system, then set up an account with a massive WSEXTENT.  Run the app
  23. >from this test account and see how high the page count goes.  If, like some
  24. >s/w I've tested in this way, the app keeps eating pages up to the WSEXTENT
  25. >value, revise the figure down and try again until you see a performance hit.
  26. >Other s/w will peak at some figure, which can then be used as the WSEXTENT
  27. >for users requiring that app (unless the figure is ridiculous, in which
  28. >case you revise it down to the performance hit mentioned above).
  29.  
  30. I like the first part of what you say here, not the second part.  There are
  31. many things that affect the working sets of processes on a system: physical
  32. configuration, sysgen params, process (sysuaf) params, VMS version, 'other'
  33. activity, ...  For a process, the big three are WSDEF, WSQUO and WSEXT, as
  34. modified by the PQL_MWSxxx sysgen values.  My philosophy regardless of VMS
  35. version is generally to give small values for WSDEF and WSQUO and the largest
  36. reasonable value for WSEXT.
  37.  
  38. Reasoning:
  39.  
  40. For all cases, a single process on the system that is faulting heavily enough
  41. to flush the FPL/MPL caches is doing so on a system-wide basis.  In other
  42. words, a username/process with improper WS characteristics impacts the entire
  43. system, not just that process.  If you are a system manager with a mean
  44. streak, taking out revenge on some weasel on your system by giving him/her
  45. itty bitty quotas is not just killing him/her but your entire system whenever
  46. he/she logs in and tries to do something.
  47.  
  48. Traditional tuning studies center on image-based activity as the source of
  49. pagefaults (that is, memory management activity while an image is being
  50. executed as opposed to image activation/image termination).  This is not
  51. always true - DCL example below.
  52.  
  53. WSDEF is the default number of pages given to a process, and the number of
  54. pages the process has at image termination.  The actual ws size can go up or
  55. down from this value.
  56.  
  57. WSQUOTA is many things.  It is the number of pages a process can 'ask' for and
  58. is guaranteed to get from the system.  If you make this too large for a large
  59. number of processes, you can run out of 'real' memory.  For all versions of
  60. VMS up to V5.4-2, processes that don't really need memory can 'ask' for it and
  61. hang on to it whether or not they need it.  VMS V5.4-3 introduced a proactive
  62. memory reclamation algorithm that improved this situation, but it is still a
  63. minor problem.
  64.  
  65. WSEXT is the maximum number of pages that the system can decide to give to you
  66. at its discretion.  If some other process needs the pages, the system takes
  67. them back.  WSEXTENT is limited on a system-by-system basis by sysgen
  68. parameter WSMAX.  I have never seen a situation where WSEXTENT should be less
  69. than the maximum possible value.  Attempts to 'tune' a system by optimizing
  70. WSEXTENT always seem to be beyond the useful part of the curve in the 'law of
  71. diminishing returns'.  Set this value up and leave it up!
  72.  
  73. I have always been convinced that 'the system' does a better job of page
  74. assignment than a user process.  Set WSQUOTA up, set WSEXT down!
  75.  
  76. WSSIZE is the number of pages in the process's working set.  Not all of the
  77. pages are necessarily valid.  Seems to me SHOW SYSTEM gives you WSSIZE in the
  78. WS field.
  79.  
  80. WS list length is the number of valid pages in WSSIZE.  This is the same or
  81. less than WSSIZE, equal to process page count plus global page count.  Seems
  82. to me f$getjpi (ppgcnt + gpgcnt) and SDA give you WS list length for a process.
  83.  
  84. Swapping and SWPOUTPGCNT:  I recommend that you set SWPOUTPGCNT to a
  85. relatively large value of WSQUOTA+1 [This implies that WSQUOTA is the same for
  86. all processes on the system].  If you do this, several things happen:
  87.  
  88. (1) if swapping is triggered, the first thing the swapper does is trim all
  89. processes back to WSQUOTA (seems to me this is 'primary swapper trimming'
  90. [?]). (2) If more memory is needed, the secondary swapper trimming algorithm
  91. kicks in.  The Swapper picks a victim, trims it back to SWPOUTPGCNT (secondary
  92. trimming?) and moves the process out to disk.  Various things happen with
  93. global pages, FPL and MPL etc. that I won't deal with here.  If SWPOUTPGCNT is
  94. really small, this secondary trimming is a high priority painful process.  If
  95. SWPOUTPGCNT is WSQUOTA or above, virtually nothing happens system wide besides
  96. moving the victim process to disk; SWAPPER goes back to sleep.  A relatively
  97. large number of pages are freed up.  Generally the time you need to swap is
  98. when a new process is being created on the system.  Whaddyaknow - one process
  99. swapped out allows another to be created without more swapper trimming (can't
  100. do this if SWPOUTPGCNT is too small).  If/when the swapped out process becomes
  101. computable again, it is brought back from disk and immediately given a
  102. 'usable' number of WS pages without paging them in (although admittedly by now
  103. any faulting might be hard faults).  Larger SWPOUTPGCNT inspires greater, more
  104. efficient use of the swapfile(s) and less problems with pagefile
  105. fragmentation.
  106.  
  107. In some mixed system clusters, it is useful to monkey with some of the
  108. PQL_MWSxxxxx parameters to get what you want out of the WS characteristics.
  109. This family of sysgen parameters is system specific, and specifies the minimum
  110. values for any of the process parameters on the system.  For example, in a
  111. mixed cluster, if you have a large system with plenty of memory clustered with
  112. a small system that is memory-poor, it may be of interest to give all users in
  113. the cluster small WSDEF/WSQUO values in sysuaf and larger values of PQL_MWSDEF
  114. and PQL_MWSQUO on the big system.
  115.  
  116. To minimize traffic back and forth on the FPL/MPL lists, it is helpful to make
  117. WSDEF close to, or the same as WSQUO for processes that do a lot of DCL and do
  118. a lot of short quick activation of a lot of images (SYSTEM, OPERATOR, ...).
  119. The WS is flushed back to WSDEF every time a process terminates an image.
  120. This can be a lot of flushing if WSDEF << WSQUOTA.  If you have a large
  121. command procedure doing a bunch of DCL, you are probably doing a lot of
  122. FPL/MPL movement (VMSINSTAL, AUTOGEN, massive file delete, 'homegrown'
  123. procedure, ...).
  124.  
  125. The unfortunate part of the VMS implementation of memory management in my
  126. opinion is that the WS values (sysuaf) are username specific in a cluster,
  127. and the sysgen parameters are system specific in a cluster.  These are
  128. orthogonal concepts in my opinion.  Different images should be capable of
  129. different working set sizes on the same machine with the same users.  I would
  130. like to see INSTALL enhanced so that as well as characteristics of privileges,
  131. open, shared, header resident, we could also see such things as WS
  132. characteristics and process priority associated with an image (I have
  133. submitted this as an SIR several times since 1984 and it has always been
  134. munged somehow).
  135.  
  136. >Tests with ALL-IN-1 (yuch!) 2.1 gave me a WSEXTENT of 4096 (it wanted more
  137. >and would keep eating pages up to the WSMAX of 20480...we trimmed it down
  138. >to the above after repeated testing).
  139.  
  140. Why trim it?  Set it up and leave it up...
  141.  
  142. >Tests with Interleaf TPS 4.3.x gave a WSEXTENT of 8192.  The process stopped
  143. >growing at this point.  With a memory-rich system we were able to assign
  144. >this figure to WSMAX and give users the memory they needed to run properly.
  145.  
  146. It is my opinion that WSMAX as set by autogen keeps numerous things working
  147. correctly.  WSMAX indeed puts an upper limit on WSEXTENT for any process on
  148. the system, but if you manually set it to something in sysgen or autogen, you
  149. may booger other things on your system such as pool expansion.  I don't
  150. recommend setting WSMAX to anything other than what Autogen wants to use.
  151.  
  152. HTH
  153. _______________________________________________________________
  154. Harvey Brydon         | Internet:   brydon@dsn.SINet.slb.com
  155. Dowell Schlumberger   | P.O.T.S.:   (918)250-4312
  156.     Ever have a cured ham and wonder what it had?
  157.