Configuration and User Guide

     Previous  Next    Open TOC in new window    View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

Tuning the WLS-VE LiquidVM Kernel

With non-virtualized WLS you can tune your OS to improve the performance of your application. For information about tuning a standard OS for WLS, see “Operating System Tuning” in WebLogic Server Performance and Tuning.

The LiquidVM kernel was designed and developed to provide an optimized runtime for executing Java on the JRockit JVM, or more specifically, Java EE applications deployed on WLS on the JRockit JVM. The LiquidVM kernel is not a general purpose OS, and therefore, contains few performance related configuration options.

However, there are certain system defaults which, for a given deployment, may be:

For the most part, such system defaults are set dynamically depending on a given load. Although, in certain circumstances, dynamic settings may be too slow to scale or may introduce unwanted indeterminism.

The following topics describe how the LiquidVM kernel can be tuned to improve the performance of WLS-VE applications:

 


Tuning the LiquidVM Kernel Startup Options

The LiquidVM startup options described in Table 10-1 can have an effect on performance and can be tuned as required.

Table 10-1 Tunable LiquidVM Startup Options 
Option
Default
Description
netRcvBufSz
40KB
System default SO_RCVBUF.
Describes the maximum amount of received data a socket may buffer. The TCP receive window is based upon the free buffer size. Individual sockets may set this number using java.net.Socket.setReceiveBufferSize(int) (see the API Javadoc, JavaTM 2 Platform Standard Edition 5.0 API Specification, for more information).
Generally speaking, the higher the better, the cost is that the amount of memory used potentially limits the maximum number of sockets.
netSndBufSz
Dynamic, max = 64KB
Static system default SO_SNDBUF. Describes the maximum amount of transmit data a socket may buffer. Individual sockets may set this number using java.net.Socket.setSendBufferSize(int) (see API Javadoc, JavaTM 2 Platform Standard Edition 5.0 API Specification, for more information). Normally, the LiquidVM kernel dynamically sets this number based on memory pressure. Explicitly setting this option disables the dynamic configuration, and statically sets the system default. Generally speaking, the higher the better; the cost is that the amount of memory used potentially limits the maximum number of sockets.
netTcpAto
true
Delayed ACK feature.
Delays lone ACK packets with the expectation that the user will reply to the received data, piggybacking the ACK on the next transmission. Disabling this feature results in ACK being scheduled for immediate transmission, meaning better latency at the cost of “badput” (needless transmission, costing CPU).

 


Comparing OS and LiquidVM Kernel Tuning

Table 10-2 provides comparisons for basic OS tuning concepts between non-virtualized WLS and the LiquidVM kernel. For detailed information about OS tuning with non-virtualized WLS, see “Operating System Tuning” in WebLogic Server Performance and Tuning.

Table 10-3 lists common OS tunable parameters and their counterparts if they exist in the LiquidVM kernel. In many cases, these tunable parameters are not necessary for the LiquidVM kernel because it is a single-process, single-user operating environment designed to run one Java application most efficiently. Therefore, some of the tunable parameters in normal OSes can be completely eliminated. Tunable parameters that do not have counterparts in the LiquidVM kernel are listed as N/A.

Table 10-3 Tunable OS Parameters in the LiquidVM Kernel 
OS Parameter
Relevance to LiquidVM Kernel
Solaris Tuning Parameters
/dev/tcp tcp_time_wait_interval
N/A. Dynamically estimate effective MSL for each socket. For more information, see Table 10-2.
/dev/tcp tcp_conn_req_max_q
N/A. LiquidVM kernel respects the accept backlog given by the user listen(2). Java JDK provides a default of 50.
/dev/tcp tcp_conn_req_max_q0
N/A. LiquidVM kernel respects the accept backlog given by the user listen(2). Java JDK provides a default of 50.
/dev/tcp tcp_ip_abort_interval
N/A.
/dev/tcp tcp_keepalive_interval
LiquidVM Kernel boot option "netKeepAlive"
/dev/tcp tcp_rexmit_interval_initial
N/A.
/dev/tcp tcp_rexmit_interval_max
N/A.
/dev/tcp tcp_rexmit_interval_min
N/A.
/dev/tcp tcp_smallest_anon_port
N/A. Smallest anonymous port is 1025.
/dev/tcp tcp_xmit_hiwat
LiquidVM Kernel boot option "netSndBufSz", else dynamically guided by memory pressure.
/dev/tcp tcp_recv_hiwat
LiquidVM Kernel boot option "netRcvBufSz"
/dev/ce instance
N/A.
/dev/ce rx_intr_time
N/A.
set rlim_fd_cur
N/A. LiquidVM has no such limitation; memory is the only restriction.
set rlim_fd_max
N/A. LiquidVM has no such limitation; memory is the only restriction.
set tcp:tcp_conn_hash_size
N/A.
set shmsys:shminfo_shmmax
N/A.
set autoup
N/A.
set tune_t_fsflushr
N/A.
Linux Tuning Parameters
/sbin/ifconfig lo mtu
N/A.
kernel.msgmni
N/A. SystemV IPC configuration.
kernel.sem
N/A. SystemV IPC configuration.
kernel.shmmax
N/A. SystemV IPC configuration.
fs.file-max
N/A. LiquidVM Kernel has no such limitation; memory is the only restriction.
net.ipv4.tcp_max_syn_backlog
N/A. LiquidVM Kernel has no such restriction, and abides by the user's accept backlog setting (listen(2))
HP-UX Tuning Parameters
tcp_conn_req_max
N/A.
tcp_xmit_hiwater_def
LiquidVM Kernel boot option "netSndBufSz", else dynamically guided by memory pressure.
tcp_ip_abort_interval
LiquidVM Kernel boot option "netRcvBufSz"
tcp_rexmit_interval_initial
N/A
tcp_keepalive_interval
LiquidVM Kernel boot option "netKeepAlive"
Windows Tuning Parameters
MaxUserPort
N/A
TcpTimedWaitDelay
N/A. Dynamically estimate effective MSL for each socket.


  Back to Top       Previous  Next