start of change

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

During an AIX operating system update operation, the system loader considers the following set of criteria to determines whether the process is LLU-capable or not:
  • 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 the nollu option disables the LLU function.

    • ldedit -b {llu|nollu} program

      The 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=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

Consider the following restrictions for using the llvupdate command to perform the 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.
Although a process can be LLU-capable, the llvupdate command must be used on processes that have the following states:
  • 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)
  • 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.
start of change

Open issues

The following issues are the knows issues that will be resolved in subsequent releases:
end of change
end of change