1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
.\" Copyright, the authors of the Linux man-pages project
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH PR_SET_THP_DISABLE 2const (date) "Linux man-pages (unreleased)"
.SH NAME
PR_SET_THP_DISABLE
\-
set the state of the "THP disable" flags for the calling thread
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
.SH SYNOPSIS
.nf
.BR "#include <linux/prctl.h>" " /* Definition of " PR_* " constants */"
.B #include <sys/prctl.h>
.P
.BI "int prctl(PR_SET_THP_DISABLE, long " thp_disable ", unsigned long " flags ,
.B " 0L, 0L);"
.fi
.SH DESCRIPTION
Set the state of the "THP disable" flags for the calling thread.
If
.I thp_disable
has a nonzero value,
the THP disable flag is set according to the value of
.IR flags ,
otherwise it is cleared.
.P
This
.BR prctl (2)
provides a method
for disabling transparent huge pages
for jobs where the code cannot be modified,
and using a
.BR malloc (3)
hook with
.BR madvise (2)
is not an option (i.e., statically allocated data).
The setting of the "THP disable" flags is inherited by a child created via
.BR fork (2)
and is preserved across
.BR execve (2).
.P
The behavior depends on the value of
.IR flags :
.TP
.B 0
The
.BR prctl (2)
call will disable THPs completely for the process,
irrespective of global THP controls or
.BR MADV_COLLAPSE .
.TP
.B PR_THP_DISABLE_EXCEPT_ADVISED
The
.BR prctl (2)
call will disable THPs for the process
except when the usage of THPs is
advised.
Consequently, THPs will only be used when:
.RS
.IP \[bu] 3
Global THP controls are set to "always" or "madvise" and
.I \%madvise(...,\~MADV_HUGEPAGE)
or
.I \%madvise(...,\~MADV_COLLAPSE)
is used.
.IP \[bu]
Global THP controls are set to "never" and
.I \%madvise(...,\~MADV_COLLAPSE)
is used.
This is the same behavior
as if THPs would not be disabled on
a process level.
.RE
.SH RETURN VALUE
On success,
0 is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
.SH STANDARDS
Linux.
.SH HISTORY
Linux 3.15.
.\" commit a0715cc22601e8830ace98366c0c2bd8da52af52
.SH SEE ALSO
.BR prctl (2),
.BR PR_GET_THP_DISABLE (2const)
|