10-06-2011 01:28 AM
I have a symbiont dying from time to time with an exceeded bytlm quota.
If memory serves me, a symbiont gets his quotas from the JOBCTL process, in the file
But this file is superseded when I apply a patch or upgrade my system.
Is there a better way to start a symbiont with specific quotas?
I am reluctant to raise the PQL because they apply to all the processes.
Solved! Go to Solution.
10-06-2011 02:22 AM
You're right, JOBCTL performs a $GETJPI on itself to get it's process quotas during initilization and then uses these values, when it creates a symbiont process. So if your symbiont crashes due to exceeding BYTLM and if that's not a memory leak inside your symbiont code, you'll need to increase the quotas of JOBCTL in VMS$CONFIG-050_JOBCTL.COM and remember to re-apply that change again, if an upgrade would replace that file.
10-06-2011 02:27 AM
The symbiont is just a LPD using TCPIP stack from HP.
It is a pity that there is not the opportunity to use some logical name, and if that logical is not defined, use some UAF or default value.
10-06-2011 02:34 AM
The fact that it's the TCPIP$LPD_SMB process does not rule out the possible 'memory leak', which you won't be able to heal by increasing BYTLM anyway.
A method to increase quotas for specific symbiont processes would need to be implemented outside the symbiont itself in the base operating system. And asking for those kinds of changes for OpenVMS may be a little late...
10-06-2011 05:55 AM
It's a bug in the symbiont processing or its underpinnings, which means patching to current followed by a call to HP support center.
Either the Job Control process quotas are too low, or the symbiont has a resource leak.
Once the TCP stack and core VMS pieces and queue-related pieces are patched to current, save off the symbiont dump file (if you're getting one) and call HP support.
The obvious fix or workaround (if there's no support contract here) is an edit to sys$startup:vms$config-050_jobctl.com to increase the process quotas, but that change might be little more than a workaround. It would only postpone the symbiont failure when there's a leak, and not resolve the leak.
10-06-2011 02:58 PM
How high does it have to be? Simplest mechanism would be PQL_MBYTLM. If your target is high enough to worry about granting it to everyone, you could do something like this:
$ IF p2.EQS."" $ THEN $ IF F$TYPE(old'p1').EQS."" THEN EXIT $ p2=old'p1' $ DELETEX/SYMBOL/GLOBAL old'p1' $ ELSE $ old'p1'==F$GETSYI(p1) $ ENDIF $ w="WRITE SYS$OUTPUT" $ PIPE (w "USE ACTIVE" ; w "SET ''p1' ''p2'" ; w "WRITE ACTIVE") | MCR SYSGEN
$ @SETSYSGEN PQL_MBYTLM 99000000 $ Start your symbiont here $ @SETSYSGEN PQL_MBYTLM