DL01@TE.CC.CMU.EDU (David B. Love) (07/18/88)
Howdy All, I've recently showed some of our uVax II users how to do run commands with both input and output being to and from files instead of interactive IO. They've taken to doing much of their Lindo (a linear programming package) work this way. Once they do a : "Run /input=foo.in/out=foo.out foo.exe" the job spawns a sub-process and goes on its merry way. I've noticed that these jobs are hitting huge page-fault rates ( usually over 300 on the "monitor system" display ). Have I created monsters ??? Is it bad to run large programs in this mode ??? Am I unnecessarily killing the system ??? Any answers to these questions would be appreciated. Thanks ! David Love DL01@TE.CC.CMU.EDU -------
LEICHTER@VENUS.YCC.YALE.EDU ("Jerry Leichter ", LEICHTER-JERRY@CS.YALE.EDU) (07/22/88)
I've recently showed some of our uVax II users how to do run commands with both input and output being to and from files instead of interactive IO. They've taken to doing much of their Lindo (a linear programming package) work this way. Once they do a: "Run /input=foo.in/out=foo.out foo.exe" the job spawns a sub-process and goes on its merry way. I've noticed that these jobs are hitting huge page-fault rates ( usually over 300 on the "monitor system" display ). Have I created monsters ??? Is it bad to run large programs in this mode ??? Am I unnecessarily killing the system ??? When you create a subprocess, it gets its own values for various quotas. Most of these are "pooled", or shared with the master process (subprcess quota is an obvious one); some are "deductible" taken from the parent, given to the child, and returned when the child terminates (I think the remaining time limit may currently be the only deductible quota); and some are just granted anew to the new process ("non-deductible"). The working set quotas are non-deductible; the values given to the new process are the system defaults, which are usually quite small. As a result, if you run a large image in such a subprcess, it will generate TONS of pagefaults. The working set quotas for the new process can be specified on the RUN command, using the qualifiers /EXTENT, /MAXIMUM_WORK, and /WORK. The values actually granted to the subprocess are minimized with the values for the current process, so you can't get around the limits for your account this way - and you can just specify very large values for all of them, rather than trying to figure out which values are appropriate. BTW, you may find it simpler to use SPAWN/NOWAIT; it will worry about passing stuff over for you. In addition, it will pass over logicals that the program may try to use. If you find SPAWN too slow, use /NOSYM/NOKEY to avoid passing over the DCL symbols and key definitions you don't need - it should then run almost as fast as RUN for a subprocess. -- Jerry