1NICELOAD(1) parallel NICELOAD(1)
2
3
4
6 niceload - slow down a program when the load average is above a certain
7 limit
8
10 niceload [-v] [-h] [-n nice] [-I io] [-L load] [-M mem] [-N] [--sensor
11 program] [-t time] [-s time|-f factor] ( command | -p PID [-p PID ...]
12 | --prg program )
13
15 GNU niceload will slow down a program when the load average (or other
16 system activity) is above a certain limit. When the limit is reached
17 the program will be suspended for some time. Then resumed again for
18 some time. Then the load average is checked again and we start over.
19
20 Instead of load average niceload can also look at disk I/O, amount of
21 free memory, or swapping activity.
22
23 If the load is 3.00 then the default settings will run a program like
24 this:
25
26 run 1 second, suspend (3.00-1.00) seconds, run 1 second, suspend
27 (3.00-1.00) seconds, run 1 second, ...
28
30 -B
31 --battery
32 Suspend if the system is running on battery. Shorthand for: -l
33 -1 --sensor 'cat /sys/class/power_supply/BAT0/status
34 /proc/acpi/battery/BAT0/state 2>/dev/null | grep -i -q
35 discharging; echo $?'
36
37 -f FACTOR
38 --factor FACTOR
39 Suspend time factor. Dynamically set -s as amount over limit *
40 factor. Default is 1.
41
42 -H
43 --hard Hard limit. --hard will suspend the process until the system
44 is under the limits. The default is --soft.
45
46 --io iolimit
47 -I iolimit
48 Limit for I/O. The amount of disk I/O will be computed as a
49 value 0 - 10, where 0 is no I/O and 10 is at least one disk is
50 100% saturated.
51
52 --io will set both --start-io and --run-io.
53
54 --load loadlimit
55 -L loadlimit
56 Limit for load average.
57
58 --load will set both --start-load and --run-load.
59
60 --mem memlimit
61 -M memlimit
62 Limit for free memory. This is the amount of bytes available
63 as free + cache. This limit is treated opposite other limits:
64 If the system is above the limit the program will run, if it
65 is below the limit the program will stop
66
67 memlimit can be postfixed with K, M, G, T, or P which would
68 multiply the size with 1024, 1048576, 1073741824, or
69 1099511627776 respectively.
70
71 --mem will set both --start-mem and --run-mem.
72
73 --noswap
74 -N No swapping. If the system is swapping both in and out it is a
75 good indication that the system is memory stressed.
76
77 --noswap is over limit if the system is swapping both in and
78 out.
79
80 --noswap will set both --start-noswap and --run-noswap.
81
82 --net Shorthand for --nethops 3.
83
84 --nethops h
85 Network nice. Pause if the internet connection is overloaded.
86
87 niceload finds a router h hops closer to the internet. It
88 pings this every second. If the latency is more than 50%
89 bigger than the median, it is regarded as being over the
90 limit.
91
92 --nethops can be combined with --hard. Without --hard the
93 program may be able to queue up so much traffic that it will
94 take longer than the --suspend time to clear it. --hard is
95 useful for traffic that does not break by being suspended for
96 a longer time.
97
98 --nethops can be combined with a high --suspend. This way a
99 program can be allowed to do a bit of traffic now and then.
100 This is useful to keep the connection alive.
101
102 -n niceness
103 --nice niceness
104 Sets niceness. See nice(1).
105
106 -p PID[,PID]
107 --pid PID[,PID]
108 Process IDs of processes to suspend. You can specify multiple
109 process IDs with multiple -p PID or by separating the PIDs
110 with comma.
111
112 --prg program
113 --program program
114 Name of running program to suspend. You can specify multiple
115 programs with multiple --prg program. If no processes with the
116 name program is found, niceload with search for substrings
117 containing program.
118
119 --quote
120 -q Quote the command line. Useful if the command contains chars
121 like *, $, >, and " that should not be interpreted by the
122 shell.
123
124 --run-io iolimit
125 --ri iolimit
126 --run-load loadlimit
127 --rl loadlimit
128 --run-mem memlimit
129 --rm memlimit
130 Run limit. The running program will be slowed down if the
131 system is above the limit. See: --io, --load, --mem, --noswap.
132
133 --sensor sensor program
134 Read sensor. Use sensor program to read a sensor.
135
136 This will keep the CPU temperature below 80 deg C on
137 GNU/Linux:
138
139 niceload -l 80000 -f 0.001 --sensor 'sort -n /sys/devices/platform/coretemp*/temp*_input' gzip *
140
141 This will stop if the disk space < 100000.
142
143 niceload -H -l -100000 --sensor "df . | awk '{ print \$4 }'" echo
144
145 --start-io iolimit
146 --si iolimit
147 --start-load loadlimit
148 --sl loadlimit
149 --start-mem memlimit
150 --sm memlimit
151 Start limit. The program will not start until the system is
152 below the limit. See: --io, --load, --mem, --noswap.
153
154 --soft
155 -S Soft limit. niceload will suspend a process for a while and
156 then let it run for a second thus only slowing down a process
157 while the system is over one of the given limits. This is the
158 default.
159
160 --suspend SEC
161 -s SEC Suspend time. Suspend the command this many seconds when the
162 max load average is reached.
163
164 --recheck SEC
165 -t SEC Recheck load time. Sleep SEC seconds before checking load
166 again. Default is 1 second.
167
168 --verbose
169 -v Verbose. Print some extra output on what is happening. Use -v
170 until you know what your are doing.
171
173 In terminal 1 run: top
174
175 In terminal 2 run:
176
177 niceload -q perl -e '$|=1;do{$l==$r or print ".";
178 $l=$r}until(($r=time-$^T)>50)'
179
180 This will print a '.' every second for 50 seconds and eat a lot of CPU.
181 When the load rises to 1.0 the process is suspended.
182
184 Running updatedb can often starve the system for disk I/O and thus
185 result in a high load.
186
187 Run updatedb but suspend updatedb if the load is above 2.00:
188
189 niceload -L 2 updatedb
190
192 rsync can, just like updatedb, starve the system for disk I/O and thus
193 result in a high load.
194
195 Run rsync but keep load below 3.4. If load reaches 7 sleep for
196 (7-3.4)*12 seconds:
197
198 niceload -L 3.4 -f 12 rsync -Ha /home/ /backup/home/
199
201 Assume the program foo uses 2 GB files intensively. foo will run fast
202 if the files are in disk cache and be slow as a crawl if they are not
203 in the cache.
204
205 To ensure 2 GB are reserved for disk cache run:
206
207 niceload --hard --run-mem 2g foo
208
209 This will not guarantee that the 2 GB memory will be used for the files
210 for foo, but it will stop foo if the memory for disk cache is too low.
211
213 None. In future versions $NICELOAD will be able to contain default
214 settings.
215
217 Exit status should be the same as the command being run (untested).
218
220 Report bugs to <bug-parallel@gnu.org>.
221
223 Copyright (C) 2004-11-19 Ole Tange, http://ole.tange.dk
224
225 Copyright (C) 2005-2010 Ole Tange, http://ole.tange.dk
226
227 Copyright (C) 2010-2023 Ole Tange, http://ole.tange.dk and Free
228 Software Foundation, Inc.
229
231 This program is free software; you can redistribute it and/or modify it
232 under the terms of the GNU General Public License as published by the
233 Free Software Foundation; either version 3 of the License, or at your
234 option any later version.
235
236 This program is distributed in the hope that it will be useful, but
237 WITHOUT ANY WARRANTY; without even the implied warranty of
238 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
239 General Public License for more details.
240
241 You should have received a copy of the GNU General Public License along
242 with this program. If not, see <http://www.gnu.org/licenses/>.
243
244 Documentation license I
245 Permission is granted to copy, distribute and/or modify this
246 documentation under the terms of the GNU Free Documentation License,
247 Version 1.3 or any later version published by the Free Software
248 Foundation; with no Invariant Sections, with no Front-Cover Texts, and
249 with no Back-Cover Texts. A copy of the license is included in the
250 file LICENSES/GFDL-1.3-or-later.txt.
251
252 Documentation license II
253 You are free:
254
255 to Share to copy, distribute and transmit the work
256
257 to Remix to adapt the work
258
259 Under the following conditions:
260
261 Attribution
262 You must attribute the work in the manner specified by the
263 author or licensor (but not in any way that suggests that they
264 endorse you or your use of the work).
265
266 Share Alike
267 If you alter, transform, or build upon this work, you may
268 distribute the resulting work only under the same, similar or
269 a compatible license.
270
271 With the understanding that:
272
273 Waiver Any of the above conditions can be waived if you get
274 permission from the copyright holder.
275
276 Public Domain
277 Where the work or any of its elements is in the public domain
278 under applicable law, that status is in no way affected by the
279 license.
280
281 Other Rights
282 In no way are any of the following rights affected by the
283 license:
284
285 • Your fair dealing or fair use rights, or other applicable
286 copyright exceptions and limitations;
287
288 • The author's moral rights;
289
290 • Rights other persons may have either in the work itself or
291 in how the work is used, such as publicity or privacy
292 rights.
293
294 Notice For any reuse or distribution, you must make clear to others
295 the license terms of this work.
296
297 A copy of the full license is included in the file as
298 LICENCES/CC-BY-SA-4.0.txt
299
301 GNU niceload uses Perl, and the Perl modules POSIX, and Getopt::Long.
302
304 parallel(1), nice(1), uptime(1)
305
306
307
30820230722 2023-07-28 NICELOAD(1)