NonStop Server for Java 7.0 Programmer's Reference

Java server-side applications are typically configured with large Java heap sizes, larger than 128
MB. In addition, the JVM and its native components (for example, NSJSP transport library, JDBC
Driver for SQL/MP, JDBC Driver for SQL/MX, SQL/MX call-level interface, and potentially any
custom-user JNI code) allocate memory for their own use. Thus, the overall heap space required
by a JVM process is considerably higher than the configured Java heap space.
When a process uses the parallel TCP/IP transport provider for socket operations (like the iTP
Secure WebServer httpd daemon Server process instance), the process becomes a QIO client. For
NonStop Server QIO shared-memory segments, when a QIO client process makes a socket request,
a portion of the process address space is reserved for the QIO segment. This reserved space limits
the maximum usable heap size for the JVM process.
The size of the QIO segment is determined by the configured physical memory for a processor
(CPU) on the NonStop system. For a processor on a NonStop system configured with 4 GB of
physical memory, 512 MB are used for the QIO segment. In addition, 512 MB of the user address
space is reserved for the QIO segment, if the process is also a QIO client.
To overcome the problem of losing user address space to QIO, you can configure the QIO segment
so that the segment is moved to a special region of the privileged address space, called the KSEG2
region. Moving the QIO segment to the KSEG2 region means that the default size of the QIO
segment is reduced to 256 MB (instead of the default 512 MB in user address space). However,
the maximum possible QIO segment size in KSEG2 region is 512 MB and so the QIO segment
in KSEG2 region can be increased to 512 MB (same as in user space). For more information about
configuring QIO segment, see QIO Configuration and Management Manual.
Example: Determining the QIO segment size in use
To determine the QIO segment size usage, use the following SCF command from the TACL prompt:
TACL> scf
SCF - T9082G02 - (30APR03) (01APR03) - 03/19/2004 02:20:31 System \NAVAE1
(C) 1986 Tandem (C) 2003 Hewlett Packard Development Company, L.P.
(Invoking \NAVAE1.$DATA11.RAMR.SCFCSTM)
1-> status segment $ZM00, detail.
QIO Detailed Status SEGMENT \NAVAE1.$ZM00
State.................. DEFINED
Segment State.......... STARTED
Segment Type........... FLAT_UA
Segment Size........... 536870912
MDs in Use............. 1258
Max MDs Used........... 1589
Last Fail Size......... 0
Current Pool Size...... 16774788 Initial Pool Size...... 16776992
Max Pool Size.......... 16776992 Min Pool Size.......... 16776992
Current Pool Alloc..... 5039616 Max Pool Alloc.......... 5128320
Current Pool Frags..... 12 Max Pool Frags............... 18
The maximum pool size used in this case is 16 MB, which is well below the 128 MB limit, so QIO
can be moved to KSEG2.
Example: QIO segment moved to KSEG2
The following SCF output shows the QIO segment as moved to KSEG2.
TACL> scf
SCF - T9082G02 - (30APR03) (01APR03) - 03/19/2004 02:20:00 System \GOBLIN
(C) 1986 Tandem (C) 2003 Hewlett Packard Development Company, L.P.
(Invoking \GOBLIN.$DATA11.RAMR.SCFCSTM)
1-> status segment $ZM00, detail
QIO Detailed Status SEGMENT \GOBLIN.$ZM00
State.................. DEFINED
Segment State.......... STARTED
Memory considerations: Moving QIO to KSEG2 27