Live Library Update
The Live Library Update (LLU) function eliminates downtime for workloads when AIX operating system is updated. The AIX updates include both the kernel and user-space updates. A kernel update requires the logical partition to be rebooted or a Live Kernel Update (LKU). The LLU function shifts the applications from using the old library to the updated new library without any downtime.
A library is an entity that provides a set of variables and functions to be used by a program. A library can be an archive or a shared object file. On the AIX operating system, archives can contain both static object files and shared object files as members. In the LLU context, a library denotes a shared object file that is contained in an archive.
The LLU function requires the library to be built as a split library. A library is called split (or LLU-capable) when the shared object file of the library is divided into two separate entities. Currently the libc and libpthreads libraries are LLU capable.
You can run the LLU operation by using the llvupdate command. An LLU-capable process means that at least one library that is used by the process can be replaced dynamically by using the llvupdate command.
Live Library Update system enablement
- The value of the llu_mode tunable parameter. The
llu_mode tunable parameter is a system-wide tunable parameter that you can set
by using the following commands:
-
raso -o llu_mode=0The LLU function is disabled for all processes regardless of the LLU program attributes.
-
raso -o llu_mode=1The LLU function is enabled for processes on which the LLU program attributes are enabled.
-
- The value of the LLU program attribute. If the llu_mode tunable parameter
is set to 1, the LLU function is enabled by default for all processes unless
explicitly overridden by using the LLU program attribute. The LLU function can be overridden by
using one of the following commands or methods:
-
ld -o program main.o -lc /lib/crt0.o -b {llu|nollu}The llu option enables the LLU function and the nollu option disables the LLU function.
-
ldedit -b {llu|nollu} programThe llu option enables the LLU function and the nollu option disables the LLU function.
-
LDR_CNTRL=LLU={yes|no}The LDR_CNTRL environment variable takes precedence over the LLU program attribute.
-
raso -o llu_mode=2The LLU function is disabled for all the processes unless explicitly enabled with the
LDR_CNTRLenvironment variable.
-
Restrictions to use llvupdate command for LLU operation
- You cannot run the llvupdate command separately when a Live Update operation is in progress.
- You cannot run the Live Update operation when the llvupdate command is running.
Updated libraries are not available for a process if the process fails to update its libraries within the timeout period. For more information, see /var/adm/ras/liveupdate/llvupdate log file. For example, one or more threads in a noninterruptible state might fail to enter a suspend mode.
At run time, the base and the kernel processes are intentionally excluded from the Live Library updates along with the processes that are in the state of termination. For more information, see lvupdateSetProcs command and Introduction to Kernel Processes section.
The libraries that are used by processes that are in the following states cannot be updated:
- Processes being debugged
dbx - Processes being traced
ptrace - Processes being probed
probevue - Processes in a stop state
sigstop
- Processes being debugged
- Statically linked libraries cannot be updated.
- Libraries that are used by processes that use the functions of the system loader domain cannot be updated.
- Only the root user can run the llvupdate command.