Removing Zombie and Orphan Stacks

Onload User Guide (UG1586)

Document ID
UG1586
Release Date
2023-07-31
Revision
1.2 English

Onload stacks and sockets can remain active even after all processes using them have been terminated or have exited, for example to ensure sent data is successfully received by the TCP peer or to honor TCP TIME_WAIT semantics. Such stacks should always eventually self-destruct and disappear with no user intervention. However, these stacks, in some instances, cause problems for restarting applications, for example the application might be unable to use the same port numbers when these are still being used by the persistent stack socket. Persistent stacks also retain resources such as packet buffers which are then denied to other stacks.

Such stacks are termed ‘zombie’ or ‘orphan’ stacks and it can be either undesirable or desirable that they exist.

  • To list all persistent stacks:
    # onload_stackdump -z all
    No output to the console or syslog means that no such stacks exist.
  • To list a specific persistent stack:
    # onload_stackdump -z <stack ID>
  • To display the state of persistent stacks:
    # onload_stackdump -z [dump | lots]
  • To terminate persistent stacks
    # onload_stackdump -z kill
  • To display all options available for zombie/orphan stacks:
    # onload_stackdump --help