Working with HP-UX and Solaris Kernel Parameter Settings

Beginning in Solaris 10, Solaris had a major change in the way kernel and IPC parameters are handled. Many of these parameters should no longer be changed through the /etc/system file. Some kernel settings have been removed, and some are now obsolete and should now be changed through the Solaris resource controls facility. A complete discussion of Solaris resource controls is beyond the scope of this document; however, we will provide one example here that may be required before starting JD Edwards EnterpriseOne for the first time. When starting the JD Edwards EnterpriseOne Enterprise Server, the initial jdenet_n process tries to create a semaphore array containing the number of elements indicated by the "maxNumberOfSemaphores" parameter in the enterprise JDE.INI file. By default, Solaris will allow a semaphore array with a maximum of 512 elements. If the setting in the JDE.INI file is greater than 512, the system default will have to be changed. In Solaris, the following command is the simplest way to change the default:

projmod -K 'process.max-sem-nsems=(privileged,2048,deny)' default

This command changes the default project to allow semaphore arrays with up to 2048 elements. To see the resource control limits for a given user, sign on to that user and run the following commands:

prctl $$

id –p
projects -l

Other resource control groups besides "default" can be configured, but for the purposes of these examples, the default group is shown. See the "Oracle® Solaris Tunable Parameters Reference Manual".

More examples of common tuning settings that may be set include:

projmod -a -K "process.max-msg-messages=(privileged,16384,deny)" default
projmod -a -K "process.max-msg-qbytes=(privileged,1048576,deny)" default
projmod -a -K "project.max-msg-ids=(privileged,2048,deny)" default
projmod -a -K "project.max-sem-ids=(privileged,15320,deny)" default
projmod -a -K "project.max-shm-ids=(privileged,1024,deny)" default
projmod -a -K "project.max-shm-memory=(privileged,4294967296,deny)" default

These settings are stored in the /etc/project file, and correspond to kernel parameter settings with different names previously set in the /etc/system file (see sections 3.7.1, 3.7.2, and 3.7.3 below).

Caution: Some of these corresponding /etc/system settings that are obsolete, can still be set in the /etc/system file despite being obsolete. Other settings in the /etc/system file have been removed starting with Solaris 10, and are ignored by the operating system. Setting a corresponding obsolete setting to different values in both the /etc/system and /etc/project files may lead to unexpected results.

The kernels for HP-UX and Solaris include a long list of configurable parameters. These parameters control the quantity of various resources available within the HP-UX and Solaris kernels. Also, the JD Edwards EnterpriseOne server software, specifically the IPC facilities, is sensitive to numerous kernel parameters for operation. These parameters differ among the various vendor implementations of UNIX. To change the values of kernel parameters for HP-UX, you must use the System Management Homepage (smh) tool to modify the parameters, which might require rebooting the system. For Solaris, you must reboot the system after you modify kernel parameters in the /etc/system file. Changes made using projmod require the user to stop all processes running under the user's id, log off, and log back onto the server to take effect. For the E1 Enterprise Server, this includes shutting down the Server Manager Agent. The proper values of these parameters depend on various criteria, such as number of users on the system, active applications, and the resource requirements for the active applications.

For HP-UX, you set kernel parameters with the smh tool. To modify these parameters for Solaris, open the /etc/system file with the a text editor. You can set any given parameter to either a simple numerical value or an expression, based on the values of other parameters. The system administrator must set the kernel parameters. UNIX security refers to users with access to administrative functions as superusers.

When you first set up an HP-UX or a Solaris machine for JD Edwards EnterpriseOne, you should run smh for HP-UX or an editor for Solaris, and change the kernel parameters. On an HP-UX system, you can see the current values of kernel parameters by running the kmtune command, or by running smh. On a Solaris system, type the command sysdef -i to see the current kernel settings.

JD Edwards EnterpriseOne is not the only software to use the resources that the kernel parameters control. Therefore, for each parameter, the requirements for JD Edwards EnterpriseOne are either the minimum defaults provided with HP-UX and Solaris, in addition to the defaults provided with HP-UX and Solaris, or the requirements of other software installed on the system.

Note: The number of JD Edwards EnterpriseOne users that a machine serves, the number of instances of JD Edwards EnterpriseOne server software running on a machine, and the size of any databases on the machine are primary factors that affect the settings for HP-UX and Solaris kernel parameters. The number of jdenet_n, jdenet_k, and runbatch or runube processes running should reflect this information.

This list provides the definitions of terms essential to the understanding of HP-UX and Solaris kernel parameters:

Parameter

Definition

jdenet_n

The maximum number of jdenet_n (net) processes that can be created for an instance JD Edwards EnterpriseOne server software running on the system. This is controlled by the maxNetProcesses parameter in the JDENET section of the JDE.INI file for each instance of JD Edwards EnterpriseOne.

jdenet_k

The maximum number of jdenet_k (kernel) processes that can be created for an instance of JD Edwards EnterpriseOne server software running on the system. This is controlled by the maxKernelProcesses parameter in the JDENET section of the JDE.INI file for each instance of JD Edwards EnterpriseOne. Note that the maxNumberOfProcesses parameters in the JDENET_Kernel_Def sections do not matter here.