Technical data
Programming Release Notes
6.20 POSIX Threads Library
6.20.5 Setting of the MULTITHREAD SYSGEN Parameter on NUMA Systems
V7.3
When use of multiple kernel threads is enabled (by way of the LINK/THREADS_
ENABLE qualifier or the THREADCP command verb) for an image, the POSIX
Threads Library monitors the apparent parallelism of an application and creates
multiple kernel threads up to the number of CPUs available. The OpenVMS
Executive can schedule each kernel thread to execute on a separate CPU and,
therefore, can execute simultaneously. The number of kernel threads that a
single process can create may be further bounded by the value of the SYSGEN
parameter MULTITHREAD.
In OpenVMS Version 7.3, when running on a Non-Uniform Memory Access
(NUMA) platform (for example, GS160), all of the kernel threads created by the
threads library are limited to execution on the CPUs that are located in the home
Resource Affinity Domain (RAD) of the process. Typically, there are four CPUs
in a RAD. When optimizing the performance of a threaded application, you may
want to set the MULTITHREAD parameter to four or fewer to ensure that any
one process creates no more than four kernel threads.
If a process creates more than four kernel threads, all of those kernel threads
compete for the four (say) CPUs within the process’s home RAD. At best, little or
no gain would be realized, while in fact performance could decrease due to extra
scheduling overhead.
6.20.6 POSIX Threads Library Debugger Metering Function
V7.0
The metering capability of the POSIX Threads Library debugger does not work in
this release.
6.20.7 C Run-Time Library errno Value
V7.0
When errno is accessed from the OpenVMS Debugger, the value of the global
errno (not the per-thread errno) is returned. (This is not a new condition; it just
has not been documented previously.)
6.20.8 SET TASK/ACTIVE Command
V6.2
The OpenVMS Debugger command SET TASK/ACTIVE does not work either for
the POSIX Threads Library (on both OpenVMS Alpha and VAX systems) or for
Compaq Ada for OpenVMS Alpha systems, the tasking for which is implemented
using the POSIX Threads Library.
Instead, you can use the following effective substitutes on the POSIX Threads
Library:
• For query-type actions, use the SET TASK/VISIBLE command.
• To gain control to step through a particular thread, use strategic placement of
breakpoints.
Programming Release Notes 6–21










