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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
|
========== Changes in 3.2 ================
Updated kernel HZ value to default to 250 on Linux since that
is the configuration default.
Added new command line parameter, -j (--hz) which allows the user
to override the kernel HZ value. We assume 250 on Linux and 100 on
other kernels, but the user can set this to any integer value.
========== Changes in 3.1 ================
Fixed an issue where cpulimit could crash when monitoring
a process which forked more child processes while the target CPU limit
was very low.
Thanks to kolAflash for pointing out this problem and providing detailed
troubleshooting.
Made monitoring and creating new monitors for the children of target
processes slightly more efficient.
========== Changes in 3.0 ================
cpulimit could be run in an environment where it is not in the
default path. This would cause an error when cpulimit was in monitor-tree
mode (-m) as new monitoring processes could not be spawned.
We now try to search the full path for cpulimit and, when not found,
error and bail out gracefully.
========== Changes in 2.9 ================
* When counting CPU cycles (jiffies) we now use
a "long" type instead of "int" to avoid running
out of space when tracking on-running processes.
========== Changes in 2.8 ================
* Made exit message when child signal is caught only show up
when in verbose mode.
* Adjusted the way the VERSION value is assigned in the Makefile.
CFLAGS was being overwritten by Debian's build process.
========== Changes in 2.7 ================
* Fixed compiler warnings regarding string lengths.
Avoid potential buffer overflow when /proc includes
process IDs that are very long.
========== Changes in 2.6 ================
* Fixed indentation to avoid compiler warnings. No functional change.
* Updated manual page to warn against using -m on a script.
========== Changes in 2.5 =================
* Added some protection against causing a fork bomb
when the throttled process is a parent to LimitCPU.
Patch provided by Johann Felix.
========== Changes in 2.4 =================
* Introduced ability to watch children of the target
process. This means forks of the process we are throttling
can also be throttled, using the "-m" or "--monitor-forks" flags.
=========== Changes in 2.3 ================
* Applied patch to man page which fixes -s description.
* Added --foreground, -f flag for launching target programs in
the foreground. LimitCPU then waits for the target process to exit.
Should be useful in scripts. Closes Debian bug #836027.
=========== Changes in 2.2 ================
* Escaped double-dashed in manual page to avoid
warnings from Debian check tool.
* Added -s --signal flag. This flag allows the user to
specify an alternative signal to send a watched process
when cpulimit terminates. By default we send SIGCONT.
The -s flag can accept a number (1-35) or a written
value such as SIGCONT, SIGSTOP, SIGINT, SIGTERM.
=========== Changes in 2.1 ================
* Added the --quiet (-q) flag to make
limitcpu run silently
* Make sure error messages are printed to stderr.
* Placed source code in Subversion (svn) repository.
Accessable using the SVN checkout command. For
details, please see the README file.
=========== Changes in 2.0 ================
* Added the -- flag to make sure child processes
run with command line flags would not confuse
cpulimit.
* Corrected output of child process name in verbose mode.
=========== Changes in 1.9 ================
* Swapped out __MACH__ pre-compiler flag for __APPLE__ to
avoid conflicts with GNU Hurd.
* Added --kill (-k) and --restore (-r) flags to allow
target processes to be killed and restored rather than
simply throttled.
* Made sure version number is accepted from Makefile.
=========== Changes in 1.8 ================
* Added separate build targets for Linux, FreeBSD and OS X.
See the compiling section of the README file.
* Applied patch from FreeBSD to our upstream code to make
future updates on FreeBSD easier.
* When displaying verbose output, cpulimit now redisplays
the column headers every 20 lines.
* Fixed limiting CPU usage on multicore machines when
the desired usage limit is great than 100%.
ie A machine with 4 cores can now properly limit
multi-threaded applications to, say, 150% or 250%.
* Added test application (busy). See "test" directory.
To build the test software, run "make tests".
* Removed memrchr() call to allow program to compile on OS X.
* Updated Makefile to work with OS X.
* Fixed OS X compiler error. Macs do not understand
CLOCK_REALTIME
* Added patch from Debian which added compiler flags. This
should "harden" CPUlimit on Debian.
Thanks to Gregor for supplying this patch.
============= Changes in 1.7 ===============
* Minor code cleanup.
* Make sure we do not try to throttle our own process.
* Added "tarball" option to the Makefile to assist
in packaging. Moved version number to the makefile.
* Added version information to CPUlimit's help screen.
* Detect the number of CPU cores on the machine and
cap the % we can limit. 1 CPU means we can
limit processes 1-100%, 2 means 1-200%, 4 means 1-400%.
* Removed extra priority changes. We now only bump
our priority once, if we have access to do so.
Also simplified priority increases so it's flexible
rather than "all or nothing".
* Since we now attempt to detect the number of CPUs
available, we also give the user the ability to
override our guess. The -c and --cpu flags have
been added for this purpose.
* Commands can be launched and throttled by appending
commands to the end of CPUlimit's argument list. For
example:
cpulimit -l 25 firefox
======== Changes in 1.6 ============
* Updated copyright notice in README file.
* Made sure we define a reasonable buffer size
if PATH_MAX is not already defined. Fixes
building on Hurd.
======== Changes in 1.5 ============
* Updated man page and cpulimit's "--help" page to
reflect support for multi-core CPUs.
* Added example of using cpulimit in a shell
in the man page and the README file.
* The Makefile now uses the default compiler
on the system, "cc", and tries to fall back
on gcc if no other compiler is found.
======== Changes in 1.4 ============
* We can now accept limits of 100% or higher. Useful for multi-core
systems.
* Perform sanity check when getting jiffies. Should prevent memory
errors if we cannot open proc data.
* Added copyright to README.
========== Changes in 1.3 ============
* Updated license information in cpulimit.c and README file
* The -b flag is now shown under options instead of targets
in the help text.
* Include man page from Debian with updates.
========= Changes in 1.2 ===========
* Applied Debian patch for checking to see if and how much we can
adjust our own process priority.
* Added LICENSE file so there wouldn't be any confusion about
what license CPUlimit uses.
* Applied Debian's patch for long options to avoid segfault.
* Applied Debian's Makefile patch.
* Added Debian patch to avoid opendir leaks.
* Added -b command line parameter to make CPUlimit
run in the background, returning control the the
user's terminal.
* When cpulimit is launched with one PID to track
once that process no longer exists, CPUlimit
will exit. Same behaviour as though the lazy
flag was set.
* Ported CPUlimit to FreeBSD
======= cpulimit-1.1 released ============
* Fixed a segmentation fault if controlled process exited in particular circumstances
* Better CPU usage estimate
* Fixed a <0 %CPU usage reporting in rare cases
* Replaced MAX_PATH_SIZE with PATH_MAX already defined in <limits.h>
* Command line arguments now available
* Now is possible to specify target process by pid
|