logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

reniced - renice running processes based on regular expressions

Author

       reniced was written by Christian Garbs <mitch@cgarbs.de>.

Availability

       Look for updates at <https://github.com/mmitch/reniced>.

Bugs

       reniced  can  run  without  the  BSD::Resource module.  In this case, the PRIO_PROCESS is set to 0.  This
       works on Linux 2.6.11 i686 but it could break on other systems.  Installing BSD::Resource  is  the  safer
       way.

       Be careful using realtime priorities, don't starve other tasks.

       Please report bugs to <mitch@cgarbs.de>.

Description

       On start, reniced reads a configuration file.  It consists of nice values and regular expressions.

       It then scans the process table using the ps(1) command.  Whenever a process name from the CMD column
       matches a regular expression, that process is reniced to the given value.  If a process matches multiple
       regular expressions, all rule matches are executed in order and the last match wins.

       When run as root, reniced will scan all processes ("`ps H -e`").  When run as a user, renice only scans
       the user's processes ("`ps H --user`").

   Switches-h   This prints the version number, a short help text and exits without doing anything.

       -n   This  activates  no-op  mode.   No actions are taken but everything that would be done is written to
            stdout.

       -v   This activates verbose mode.  Error messages, some statistics and all renice actions are printed  to
            stdout.

       -oformat
            Set  the  ps(1)  output format to filter on.  The default format is "comm".  See the -o parameter in
            the ps(1) manpage for details.

       configfile
            This reads the regular expressions from an alternate configfile.

            The default  location  of  the  configfile  is  "/etc/reniced.conf"  if  reniced  is  run  as  root,
            "~/.reniced" otherwise.

   Configurationfileformat
       The configuration file is composed of single lines.  Empty lines and lines starting with a # are ignored.

       Every line must consist of a command followed by a whitespace and a Perl regular expression.

       The  regular  expression  is  matched against the ps(1) output.  For every matched process the command is
       executed.

       A command generally takes the form of a character followed by a number.  Multiple commands can  be  given
       simultaneously with no spaces inbetween.  Sometimes the number is optional.

       Commandcharactersn    Sets  the nice value of a process.  Must be followed by a number, usually within the range of -20 to
            19.

            For backwards compatibility a n at the beginning of the command can be  left  out  (if  the  command
            starts with a number it is treated as a nice value).

       r    Sets the io priority to the realtime scheduling class.  The optional number is treated as class data
            (typically 0-7, lower being higher priority).

       b    Sets  the  io priority to the best-effort scheduling class.  The optional number is treated as class
            data (typically 0-7, lower being higher priority).

       i    Sets the io priority to the idle scheduling class.   No  number  needs  to  be  given  as  the  idle
            scheduling class ignores the class data value.

       o    Sets  the  OOM  killer  adjustment  in  "/proc/$PID/oom_adj"  to  the  given  number.   (Internally,
            "/proc/$PID/oom_score_adj" will be used when available, but for backwards compatibility  this  value
            is still expected the in old "oom_adj" format and will be converted automatically.)

       Examples

       "5 ^bash"
            gives currently running bash shells a nice value of 5

       "b2 ^tar"
            sets currently running tar-processes to io priority best-effort within class 2

       "i torrent"
            sets currently running torrent-like applications to io priority idle

       "n-10r4 seti"
            gives  currently running seti-processes a nice value of -10 and sets them to realtime io priority in
            class 4

Limitations

       The purpose of reniced is to renice long running server processes (hence the d for daemon in it's name).

       Selecting  and  renicing  processes it not atomic: There is a small gap between scanning the process list
       and renicing the processes.  If you target short-lived processes with your regular  expressions,  reniced
       might try to act on a process that is already gone.  In the worst case it might renice a new process that
       got the same process id as the already ended process that was matched.

Modules Needed

        use BSD::Resource;

       This module can be obtained from <http://www.cpan.org>.

Name

       reniced - renice running processes based on regular expressions

Overview

       reniced takes a list of regular expressions, looks for processes (and threads) matching them and renices
       the processes to given values.  reniced can also change io priorities.

Programs Needed

        ps
        ionice

       ionice  is  only  needed  if  you  want   to   change   io   priority.    It   can   be   obtained   from
       <http://rlove.org/schedutils/>.

       You also need a suitable kernel and scheduler, e.g. Linux 2.6 with CFQ.

See Also

ionice(1), renice(1), ps(1)

1.23                                               2021-05-23                                         RENICED(1)

Synopsis

reniced [-h] [-v] [-oformat] [configfile]

See Also