|
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | STANDARDS | HISTORY | SEE ALSO | COLOPHON |
|
|
|
PR_FUTEX_HASH(2const) PR_FUTEX_HASH(2const)
PR_FUTEX_HASH - configure the private futex hash
Standard C library (libc, -lc)
#include <linux/prctl.h> /* Definition of PR_* constants */
#include <sys/prctl.h>
int prctl(PR_FUTEX_HASH, unsigned long op, ...);
Configure the attributes for the underlying hash used by the
futex(2) family of operations. The Linux kernel uses a hash to
distribute the unrelated futex(2) requests to different data
structures in order to reduce the lock contention. Unrelated
requests are requests which are not related to one another because
they use a different futex word. The data structure holds the in-
kernel representation of the operation and keeps track of the
current users which are enqueued and wait for a wake up. It also
provides synchronisation of waiters against wakers. The size of
the global hash is determined at boot time and is based on the
number of CPUs in the system. Due to hash collision, two
unrelated futex(2) requests can share the same hash bucket. This
in turn can lead to delays of the futex(2) operation due to lock
contention while accessing the data structure. These delays can
be problematic on a real-time system since random processes can
share in-kernel locks and it is not deterministic which process
will be involved.
Linux 6.16 implements a process-wide private hash which is used by
all futex(2) operations that specify the FUTEX_PRIVATE_FLAG option
as part of the operation. Without any configuration the kernel
will allocate 16 hash slots once the first thread has been
created. If the process continues to create threads, the kernel
will try to resize the private hash based on the number of threads
and available CPUs in the system. The kernel will only increase
the size and will make sure it does not exceed the size of the
global hash.
The user can configure the size of the private hash which will
also disable the automatic resize provided by the kernel.
The value in op is one of the options below.
PR_FUTEX_HASH_GET_IMMUTABLE
PR_FUTEX_HASH_GET_SLOTS
PR_FUTEX_HASH_SET_SLOTS
On success, these calls return a nonnegative value. On error, -1
is returned, and errno is set to indicate the error.
Linux.
Linux 6.16.
prctl(2), futex(2), PR_FUTEX_HASH_GET_IMMUTABLE(2const),
PR_FUTEX_HASH_GET_SLOTS(2const), PR_FUTEX_HASH_SET_SLOTS(2const)
This page is part of the man-pages (Linux kernel and C library
user-space interface documentation) project. Information about
the project can be found at
⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report
for this manual page, see
⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
This page was obtained from the tarball man-pages-6.15.tar.gz
fetched from
⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
2025-08-11. If you discover any rendering problems in this HTML
version of the page, or you believe there is a better or more up-
to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not
part of the original manual page), send a mail to
man-pages@man7.org
Linux man-pages 6.15 2025-06-11 PR_FUTEX_HASH(2const)
Pages that refer to this page: prctl(2)