Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

How do I set the process quotas for a detached process that is created by the C-RTL?

 
Glenn Wolf
Advisor

How do I set the process quotas for a detached process that is created by the C-RTL?

Our application consists of a set of detached process that communicate with each other via sockets. One of these processes (call it the TrafficCop) MUST be executing at all times.  This TrafficCop process runs a very memory hungry image; on IA64, we start the detached process with a PGFLQUO of 4,500,000.  If PGFLQUO for this process is exhausted, it begins to drop messages, which is a bad thing.

 

The issue that we have is that while we can start the TrafficCop process and set the quotas via the Authorize entry for the user that starts it ("$ Run/Detach/Authorize ..."), the vendor of this software has included a feature whereby if any of the clients of the TrafficCop detect that TrafficCop has exited, the client will attempt to restart it.  When the client restarts TrafficCop, the process quotas that it receives are those defined in SYSGEN, such as PQL_MPGFLQUOTA .  These are much lower than the UAF-defined quotas for the account that we use to run TrafficCop, and much lower than the UAF quotas for the user that runs the client processes.  Our system administrator is reluctant to set PQL_MPGFLQUOTA  to the 4.5m value that we need, due to the other processes that would get started with this unnecessarily high pagefile quota.

 

Unfortunately, I do not know exactly how the TrafficCop process is started by the clients; it is hidden in the libraries that the vendor supplies.  I suspect that since this particular software package runs on many different platforms, and the reference port is (or was) Solaris, that it uses the C-RTL exec*() calls to start the process - but that is just conjecture.

In any case, is there any other way to control the process quotas that this detached process receives when it is started?  Or do we just need to bite the bullet and increase the SYSGEN parameters?

2 REPLIES 2
John Gillings
Honored Contributor

Re: How do I set the process quotas for a detached process that is created by the C-RTL?

Glenn,

 

   First thing I'd be doing is talking to the developers and request that they implement a mechanism for specifying quotas. A fully populated PQL should be mandatory for all $CREPRCs across a system.

 

   You might be able to get away with setting the PQL_D parameters (default values if nothing is specified to $CREPRC). Hopefully most processes are started with specified PQLs, so PQL_Ds aren't used much. That should limit any overallocation of resources to random processes. Indeed, they're probably the values you're getting at the moment.

 

  If you can't get it fixed properly, you may be able to hijack the client which restarts the process, use logical name redirection to get it to run your image, which executes the appropriate $CREPRC with a fully populated PQL (or the AUTH flag set).

 

Basic principle

 

$ DEFINE/SYSTEM TRAFFIC_COP your_image

 

inside your image, you may need to change the process name, then redefine the logical name for your process only and start the process with whatever parameters you like

 

  $SETPRN("TRAFFIC_COP_START")

  LIB$SET_LOGICAL("TRAFFIC_COP","REAL_TRAFFIC_COP_IMAGE")

  $CREPRC("TRAFFIC_COP",...)

 

A crucible of informative mistakes
GuentherF
Trusted Contributor

Re: How do I set the process quotas for a detached process that is created by the C-RTL?

Just a reminder that PGFLQUOTA is just a limit value. If a process does not need that much pagefile backup space then nothing is wasted. It is more an upper limit value so that a malicious or stupid user can't bring the system to a halt by running a program which would use ALL of the available pagfile space - assuming the PGFLQUOTA is larger than the remaining pagefile space.

 

I would set PQL_MPGFLQUOTA to the 4.5 mill mark.

 

/Guenther