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

During an AIX operating system update operation, the system loader considers the following set of criteria to determine 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 the LDR_CNTRL environment variable.

Restrictions to use llvupdate command for LLU operation

Consider the following restrictions to use 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.
  • start of changeUpdated 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.end of change
  • start of changeAt 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.end of change
Although a process is a LLU-capable, the llvupdate command must be used on processes that have the following states:
  • start of changeThe 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
    end of change
  • 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.