pthread_launch_policy_np.3t (2010 09)
p
pthread_launch_policy_np(3T) pthread_launch_policy_np(3T)
(Pthread Library)
NAME
pthread_launch_policy_np() - setting thread launch policies
SYNOPSIS
#include <pthread.h>
int pthread_launch_policy_np(
int request,
int *answer,
pthread_t tid
);
PARAMETERS
request This parameter determines the precise action to be taken by these functions.
answer This parameter is an output parameter in which values are returned. The meaning of
answer depends on request parameter.
tid This parameter gives the value of the thread id for certain requests.
DESCRIPTION
Each process shall have a launch policy. Each thread shall have a launch policy. The launch policy for a
thread does not have to match the launch policy for the process. The launch policy determines the local-
ity domain where the newly created process or thread will be launched in a ccNUMA system. The locality
domains covered by a process’s or thread’s processor set are the available locality domains.
The
pthread_launch_policy_np()
function sets a thread launch policy for a specific thread. The
thread specified by tid is the target thread whose launch policy is changed. The value
PTHREAD_SELFTID_NP
can be used to refer to the calling thread.
pthread_launch_policy_np()
is currently not supported for PTHREAD_SCOPE_PROCESS
threads. If pthread_launch_policy_np()
is used on a PTHREAD_SCOPE_PROCESS
thread, it is
silently ignored and zero is returned for successful completion.
When a process creates another process (via
fork() or vfork()), the child process will inherit the
parent process’s launch policy. The initial thread in the child process will inherit the launch policy of the
creating thread (and not that of its process). Other threads in a multi-threaded process inherit their
launch policy from the creating thread.
For all launch policies, the target thread is bound to the locality domain on which it was launched. The
target is allowed to execute on any processor within that locality domain.
When setting a launch policy, if the target already has processor or locality domain binding, the existing
binding will not be overwritten. Instead the locality domain in which the target is bound (whether local-
ity domain binding or processor binding) will be used as the starting locality domain for implementing the
launch policy.
Refer to mpctl (2) man page for further details on launch policies.
Note: locality domains are tightly tied to the physical components of the underlying system. As a result,
the performance observed when using launch policies based on locality domains may vary from system to
system. For example, a system which contains 4 locality domains, each containing 32 processors, may
exhibit different performance behaviors from a system that contains 32 locality domains with 4 processors
per domain. The launch policy that provides optimal performance on one system may not provide optimal
performance on a different system for the same application.
The request parameter specifies the action to take and may be one of the following:
PTHREAD_GET_POLICY_NP
The current launch policy of the target thread is returned in the answer parameter. This
request currently returns PTHREAD_POLICY_RR_NP, PTHREAD_POLICY_FILL_NP,
PTHREAD_POLICY_PACKED_NP, PTHREAD_POLICY_LEASTLOAD_NP,
PTHREAD_POLICY_RR_TREE_NP, PTHREAD_POLICY_FILL_TREE_NP,or
PTHREAD_POLICY_NONE_NP to indicate the current launch policy of the thread specified by
tid. Other launch policies may be added in future releases and returned via this option. Appli-
cations using this option should be written to handle other return values in order to continue
working on future releases.
HP-UX 11i Version 3: September 2010 − 1 − Hewlett-Packard Company 1