ccNUMA Overview
Figure 4. Sample HP-UX launch policy trees
The first process in Figure 4 is launched with a Round Robin Tree process-launch policy and a Fill First Tree thread-
launch policy. As a result, the root of the process policy tree (labeled A) establishes a Round Robin Tree process-
launch policy, and the root of the thread policy tree (B) establishes a Fill First Tree thread-launch policy.
The thread created by the initial thread in Figure 4 is a member of the same thread policy tree, and HP-UX
launches it using the Fill First Tree thread-launch policy. Likewise, threads created by the secondary thread also
are members of the same thread policy tree (B).
For the two child processes created by the initial thread in Figure 4, HP-UX creates one process and one thread
for each. The child processes are members of the same policy tree (A) as the thread’s parent and are launched
using the Round Robin Tree process-launch policy. The child processes’ threads, however, are the roots of new
thread policy trees.
These new thread policy trees (C and D) inherit the Fill First Tree launch policy from the creating thread’s policy
tree (B).
Finally, the thread in policy tree D calls fork() to create yet another child process. This new process is a member of
the same policy tree as the thread’s process (A). The new thread that is created by the fork() call is the root of a
new thread policy tree (E) which inherits the thread-launch policy from the thread’s policy tree (D).
If we consider this example with Fill First and Round Robin launch policies, only the parent and its direct children
will form the launch policy trees. The children become the root of another launch policy tree. By limiting the launch
policy tree this way, the application’s behavior becomes more deterministic.
14