1numad(8) Administration numad(8)
2
3
4
6 numad - A user-level daemon that provides placement advice and process
7 management for efficient use of CPUs and memory on systems with NUMA
8 topology.
9
11 numad [-dhvV]
12
13 numad [-C 0|1]
14
15 numad [-H THP_hugepage_scan_sleep_ms]
16
17 numad [-i [min_interval:]max_interval]
18
19 numad [-K 0|1]
20
21 numad [-l log_level]
22
23 numad [-m target_memory_locality]
24
25 numad [-p PID]
26
27 numad [-r PID]
28
29 numad [-R reserved-CPU-list]
30
31 numad [-S 0|1]
32
33 numad [-t logical_CPU_percent]
34
35 numad [-u target_utilization]
36
37 numad [-w NCPUS[:MB]]
38
39 numad [-x PID]
40
42 Numad is a system daemon that monitors NUMA topology and resource
43 usage. It will attempt to locate processes for efficient NUMA locality
44 and affinity, dynamically adjusting to changing system conditions.
45 Numad also provides guidance to assist management applications with
46 initial manual binding of CPU and memory resources for their processes.
47 Note that numad is primarily intended for server consolidation environ‐
48 ments, where there might be multiple applications or multiple virtual
49 guests running on the same server system. Numad is most likely to have
50 a positive effect when processes can be localized in a subset of the
51 system's NUMA nodes. If the entire system is dedicated to a large in-
52 memory database application, for example -- especially if memory
53 accesses will likely remain unpredictable -- numad will probably not
54 improve performance.
55
57 -C <0|1>
58 This option controls whether or not numad treats inactive file
59 cache as available memory. By default, numad assumes it can
60 count inactive file cache as "free" memory when considering
61 resources to match with processes. Specify -C 0 if numad should
62 instead consider inactive file cache as a consumed resource.
63
64 -d Debug output in log, sets the log level to LOG_DEBUG. Same
65 effect as -l 7.
66
67 -h Display usage help information and then exit.
68
69 -H <THP_scan_sleep_ms>
70 Set the desired transparent hugepage scan interval in ms. The
71 /sys/kernel/mm/tranparent_hugepage/khugepaged/scan_sleep_mil‐
72 lisecs tunable is usually set to 10000ms by the operating sys‐
73 tem. The default is changed by numad to be 1000ms since it is
74 helpful for the hugepage daemon to be more aggressive when mem‐
75 ory moves between nodes. Specifying (-H 0) will cause numad to
76 retain the system default value. You can also make the hugepage
77 daemon more or less aggressive by specifying an alternate value
78 with this option. For example, setting this value to 100ms (-H
79 100) might improve the performance of workloads which use many
80 transparent hugepages.
81
82 -i <[min_interval:]max_interval>
83 Sets the time interval that numad waits between system scans, in
84 seconds to <max_interval>. Default <max_interval> is 15 seconds,
85 default <min_interval> is 5 seconds. Setting a <max_interval>
86 of zero will cause the daemon to exit. (This is the normal
87 mechanism to terminate the daemon.) A bigger <max_interval>
88 will decrease numad overhead but also decrease responsiveness to
89 changing loads.
90
91 -K <0|1>
92 This option controls whether numad keeps interleaved memory
93 spread across NUMA nodes, or attempts to merge interleaved mem‐
94 ory to local NUMA nodes. The default is to merge interleaved
95 memory. This is the appropriate setting to localize processes
96 in a subset of the system's NUMA nodes. If you are running a
97 large, single-instance application that allocates interleaved
98 memory because the workload will have continuous unpredictable
99 memory access patterns (e.g. a large in-memory database), you
100 might get better results by specifying -K 1 to instruct numad to
101 keep interleaved memory distributed.
102
103 -l <log_level>
104 Sets the log level to <log_level>. Reasonable choices are 5, 6,
105 or 7. The default value is 5. Note that CPU values are scaled
106 by a factor of 100 internally and in the numad log files.
107 Unfortunately, you don't actually have that many CPUs.
108
109 -m <target_memory_locality>
110 Set the desired memory locality threshold to stop moving process
111 memory. Numad might stop retrying to coalesce process memory
112 when more than this percentage of the process's memory is
113 already localized in the target node(s). The default is 90%.
114 Numad will frequently localize more than the localization
115 threshold percent, but it will not necessarily do so. Decrease
116 the threshold to allow numad to leave more process memory dis‐
117 tributed on various nodes. Increase the threshold to instruct
118 numad to try to localize more memory. Acceptable values are
119 between 50 and 100 percent. Note that setting the target memory
120 locality to 100% might cause numad to continually retry to move
121 memory that the kernel will never succesfully move.
122
123 -p <PID>
124 Add PID to explicit inclusion list of processes to consider for
125 managing, if the process also uses significant resources. Mul‐
126 tiple -p PID options can be specified at daemon start, but after
127 daemon start, only one PID can be added to the inclusion list
128 per subsequent numad invocation. Use with -S to precisely con‐
129 trol the scope of processes numad can manage. Note that the
130 specified process will not necessarily be actively managed
131 unless it also meets numad's significance threshold -- which is
132 currently 300MB and half of a CPU.
133
134 -r <PID>
135 Remove PID from both the explicit inclusion and the exclusion
136 lists of processes. After daemon start, only one PID can be
137 removed from the explicit process lists per subsequent numad
138 invocation. Use with -S and -p and -x to precisely control the
139 scope of processes numad can manage.
140
141 -R <CPU_LIST>
142 Specify a list of CPUs that numad should assume are reserved for
143 non-numad use. No processes will be bound to the specified CPUs
144 by numad. This option is effective only when starting numad.
145 You cannot change reserved CPUs dynamically while numad is
146 already running.
147
148 -S <0|1>
149 This option controls whether numad scans all system processes or
150 only the processes on the explicit inclusion PID list. The
151 default is to scan all processes. Use -S 0 to scan only the
152 explicit inclusion PID list. Use -S 1 to again scan all system
153 processes (excepting those on the explicit exclusion list).
154 Starting numad as
155 numad -S 0 -p <PID-1> -p <PID-2> -p <PID-3>
156 will limit scanning, and thus also automatic NUMA management, to
157 only those three explicitly specified processes.
158
159 -t <logical_CPU_percent>
160 Specify the resource value of logical CPUs. Hardware threads
161 typically share most core resources, and so logical CPUs add
162 only a fraction of CPU power for many workloads. By default
163 numad considers logical CPUs to be only 20 percent of a dedi‐
164 cated hardware core.
165
166 -u <target_utilization>
167 Set the desired maximum consumption percentage of a node.
168 Default is 85%. Decrease the target value to maintain more
169 available resource margin on each node. Increase the target
170 value to more exhaustively consume node resources. If you have
171 sized your workloads to precisely fit inside a NUMA node, speci‐
172 fying (-u 100) might improve system performance by telling numad
173 to go ahead and consume all the resources in each node. It is
174 possible to specify values up to 130 percent to oversubscribe
175 CPUs in the nodes, but memory utilization is always capped at
176 100%. Use oversubscription values very carefully.
177
178 -v Verbose output in log, sets the log level to LOG_INFO. Same
179 effect as -l 6.
180
181 -V Display version information and exit.
182
183 -w <NCPUS[:MB]>
184 Queries numad for the best NUMA nodes to bind an entity that
185 needs <NCPUS>. The amount of memory (in MBs) is optional, but
186 should normally be specified as well <:MB> so numad can recom‐
187 mend NUMA nodes with available CPU capacity and adequate free
188 memory. This query option can be used regardless of whether
189 numad is running as a daemon. (An invocation using this option
190 when numad is not running as a daemon, will not cause the daemon
191 to start.) Output of this option is a string that contains a
192 NUMA node list. For example: 2-3,6. The recommended node list
193 could be saved in a shell variable (e.g., NODES) and then used
194 as the node list parameter in a
195 numactl -m $NODES -N $NODES ...
196 command. See numactl(8).
197
198 -x <PID>
199 Add PID to explicit exclusion list of processes to blacklist
200 from managing. Multiple -x PID options can be specified at dae‐
201 mon start, but after daemon start, only one PID can be added to
202 the exclusion list per subsequent numad invocation. Use with -S
203 to precisely control the scope of processes numad can manage.
204
206 /usr/bin/numad
207 /var/log/numad.log
208 /var/run/numad.pid
209
211 None.
212
214 Numad can be run as a system daemon and can be managed by the standard
215 init mechanisms of the host.
216
217 If interactive (manual) control is desired, you can start the daemon
218 manually by typing:
219
220 /usr/bin/numad
221
222 Subsequent numad invocations while the daemon is running can be used to
223 dynamically change most run-time options.
224
225 You can terminate numad from running by typing:
226
227 /usr/bin/numad -i0
228
230 Bill Gray <bgray@redhat.com>
231
233 numactl(8)
234
235
236
237Bill Gray 1.0.0 numad(8)