Live Library Update (LLU)
The Live Library Update (LLU) function eliminates downtime for workloads when the 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.
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=0
The LLU function is disabled for all processes regardless of the LLU program attributes.
-
raso -o llu_mode=1
The 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 thenollu
option disables the LLU function. -
ldedit -b {llu|nollu} program
The
llu
option enables the LLU function and thenollu
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=2
The LLU function is disabled for all the processes unless explicitly enabled with
LDR_CNTRL
environment variable
-
Restrictions of using 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 the genld -u command and the corresponding log file. For example, one or more threads in a non-interruptible state might fail to enter a suspend mode.
- The libraries that are used by processes that are in the following states cannot be updated (see
genld -u
and log files for details):
- Processes being debugged (
dbx
) - Processes being traced (
ptrace
) - Processes being probed (
probevue
) - Processes in 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.
Open issues
- The synchronization of LLU and events of restartable subroutines of LLU capable libraries can be missed. For more information about restartable subroutines, see the SA_RESTART description in the sigaction, sigvec, or signal Subroutine page