Rush Logo Rush Render Queue - rush.conf File
(C) Copyright 1995,2000 Greg Ercolano. All rights reserved.
V 102.43-prerelease 11/12/09
Strikeout text indicates features not yet implemented


Configuration File
$RUSH_DIR/etc/rush.conf





   rush.conf: File Format Description  
The configuration file should be customized by the systems administrator. Most settings are used only for fine tuning, but some control important security settings (uidrange/gidrange/forceuid/forcegid), and process auditing/logging (cpuacctpath).

The rush.conf file can be updated on the fly. Simply edit a copy, make changes, then rdist(1) the copy to all the machines, and the daemons will pick up your changes within one minute.

You can prefix any rush.conf commands with 'os=xxx', where 'xxx' can be any of:

    os=windows  -- Windows: NT, 2000, etc.
    os=unix     -- Unix: irix, linux, mac
    os=irix     -- Irix only
    os=mac      -- Mac only
    os=linux    -- Linux only
    os=all      -- All platforms
    
The 'os=xxx' prefix can be used to qualify the command be run only on the specified operating system. This way you can maintain one file, even though it has separate customizations for windows and unix operating systems. For example: eg:
    os=windows tmpdir C:/TEMP         # Windows
    os=unix    tmpdir /var/tmp        # Unix (mac|linux|irix)
    
..which sets 'tmpdir' to 'C:/TEMP' on windows machines, and to '/var/tmp' on unix machines.

Similarly, you can prefix any rush.conf command with 'host=yyy', where yyy is either a hostname or a +hostgroup that should execute the command that follows. eg:

    host=geneva   tmpdir /mnt/ramdisk     # host 'geneva' uses ramdisk for the tmpdir
    host=+soft    tmpdir /tmp             # all hosts in the +soft hostgroup use /tmp
    
You can combine os= and host= commands, so that you can limit commands to run on particular platforms and specific hosts, eg:
    os=windows tmpdir C:/TEMP          # default for all windows machines
    os=unix    tmpdir /var/tmp         # default for all unix machines
    host=tahoe tmpdir /mnt/ramdisk     # host 'tahoe' has a special tmpdir
    host=r07   tmpdir F:/TEMP          # host 'r07' has a special tmpdir
    host=+foo  tmpdir /private/var/tmp # all hosts in the +foo hostgroup use special tmpdir
    
..in this case the 'tahoe', 'r07' and '+foo' settings override the 'windows' and 'unix' general cases that precede them, because the commands execute in the order they appear in the file. So if more than one command matches, the last command to execute will take effect. So the best approach is to put the more "general" entries first (like os=xxx and host=+xxx), and the more specific entries last (like host=xxx).

To make changes to this file and update this to the network, use either the 'rush -push', or rdist/rsync/rcp commands.

   AdminUser  
Deprecated in 102.40f: Use permit.

Sets login name for user allowed to administer the rush daemons. The adminuser can always manipulate jobs, regardless of the value of DisableFu. Also, commands such as 'rush -dexit', 'rush -dlog a' and others are limited to root and 'adminuser'.

Set to 'root' if there is no special rush administrative login.

    Example: adminuser root

   AllCpusFmt "format_string""  
Controls the 'rush -lac' report format, using a printf(2) style format string.

You may change the column width values, and can add or remove truncation specifications. eg. %s can be changed to %12s, %12.12s, %-12.12s, etc.

You may not add or remove '%s' fields, or change the data types (eg. do not change '%s' to '%d', etc). It is recommended that you do not use control sequences such as '\n', '\r', or ansi sequences such as '\033[1m', as these will negatively affect irush(1)'s presentations.

This string must be enclosed in double quotes. To represent double quotes in the string, you can use \".

See the caveats and warnings for other relevant warnings.

   AllCpusHeader1 "header_string"  
Sets the header string for line #1 of 'rush -lac' reports.

Basically this should be a string that correctly identifies the column headings for the 'rush -lac' report.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the caveats and warnings for other relevant warnings.

Each column heading should be a single word (ie. column heading names should NOT contain spaces), as this will affect the ability of irush to detect the report columns for sorting.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

This heading can be disabled from the reports by setting this field to "-", which means this header line WILL NOT be printed. However, doing so may negatively impact programs such as irush(1), www-rush(1), and other tools that parse the reports, expecting to skip over headers.

   AllCpusHeader2 "header_string"  
Sets the header string for line #2 of 'rush -lac' reports. By default, this is disabled, for backwards compatibility.. the 'rush -lac' report never had dotted lines on the second line. This may change in a future release.

This is normally the 'dotted line' header that delineates columns for easy viewing. Try to follow the example of the default setting.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the caveats and warnings for other relevant warnings.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

This heading can be disabled from the reports by setting this field to "-", which means this header line WILL NOT be printed. Currently, this is the recommended setting, to be backwards compatible with older 'rush -lac' reports.

   AllJobsFmt "format_string"  
Controls the 'rush -laj' report format, using a printf(2) style format string.

You may change the column width values, and can add or remove truncation specifications. eg. %s can be changed to %12s, %12.12s, %-12.12s, etc.

You may not add or remove '%s' fields, or change the data types (eg. do not change '%s' to '%d', etc). It is recommended that you do not use control sequences such as '\n', '\r', or ansi sequences such as '\033[1m', as these will negatively affect irush(1)'s presentations.

This string must be enclosed in double quotes. To represent double quotes in the string, you can use \".

Warnings and Caveats:

  • Making typos or improper modifications to this string can cause the rushd(1) daemon and/or rush(1) to memory fault. Change this string as carefully as you would change a printf() statement in a C program. No type checking is done to your modifications, so make changes to this string carefully, and double check your work.

  • AllJobsFmt, AllJobsHeader1 and AllJobsHeader2 all must agree on the width of columns, or irush(1) will not parse columns correctly. Make sure when you modify column widths that the headings correctly align with your format string.

  • Heading names must not contain spaces. Irush uses the first character of each word in the AllJobsHeader1 field to determine column boundaries for the purposes of sorting.

  • Modification of format string's left-hand verses right-hand justification of any field from the defaults *may* affect irush's ability to parse fields correctly from columns. Make sure irush(1) and other such tools that parse the report all still work correctly after you make modifications. Report white space parsing problems if you encounter them.

   AllJobsHeader1 "header_string"  
Sets the header string for line #1 of 'rush -laj' reports.

Basically this should be a string that correctly identifies the column headings for the 'rush -laj' report.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the caveats and warnings for the AllJobsFmt command for other relevant warnings.

Each column heading should be a single word (ie. column heading names should NOT contain spaces), as this will affect the ability of irush to detect the report columns for sorting.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

This heading can be disabled from the reports by setting this field to "-", which means this header line WILL NOT be printed. However, doing so may negatively impact programs such as irush(1), www-rush(1), and other tools that parse the reports, expecting to skip over headers.

   AllJobsHeader2 "header_string"  
Sets the header string for line #2 of 'rush -laj' reports.

This is normally the 'dotted line' header that delineates columns for easy viewing. Try to follow the example of the default setting.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the caveats and warnings for the AllJobsFmt command for other relevant warnings.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

This heading can be disabled from the reports by setting this field to "-", which means this header line WILL NOT be printed. However, doing so may negatively impact programs such as irush(1), www-rush(1), and other tools that parse the reports, expecting to skip over headers.

   AllowPush (yes|no)  
Allows the sysadmin to enable (or disable) the 'rush -push' feature. If enabled, the admin can release files like the rush.conf, license.dat, and rush 'hosts' files to an entire network easily and quickly.

However, you may want to disable this feature if it's considered a security risk.

    Example: allowpush yes

   AppHostCache (none|demand)  
rush(1) 's host caching option; only affects the rush(1) client application's method of host caching. Can be none or demand. Demand is recommended.

  • none
  • -- client should do no caching at all
  • demand
  • -- client should 'cache on demand' (default)

    Example: apphostcache demand

   Browser.Command "command %s"  
(New in rush 102.42a6 and up)

Sets the command used to bring up HTML documentation in a browser.

Argument is the command to use. Entire command must be quoted. "%s" will be replaced with the URL. So eg:

    browser.command "firefox %s &"

..tells Rush that to open the URL http://google.com/, it should invoke "firefox http://google.com/ &".

The special string "[INTERNAL]" will cause Rush to use its own built-in defaults:

    Rush Default Browser Settings
    Mac browser.command "open '%s'"
    Linux browser.command "htmlview '%s' &"
    Irix browser.command "(firefox '%s' || netscape '%s') &"
    Windows browser.command "%s"

You can assume the defaults, but override them on specific platforms or hosts by using the rush.conf file's prefixes "os=XXX" and "host=XXX" prefixes on successive settings, eg:

    Host Specific Browser Settings
    How to use defaults, but override them on certain machines.
    
        browser.command "[INTERNAL]"                    # Start with internal defaults..
        os=linux   browser.command "konqueror '%s' &"   # ..but on linux machines use Konqueror  
        host=tahoe browser.command "opera '%s' &"       # ..and on host 'tahoe' use Opera

So with those three commands in the rush.conf file, the internal defaults will be used, but on linux machines Konqeror will be used, and on host 'tahoe' Opera will be used.

Default Example:

    browser.command "[INTERNAL]"

   CheckPoint.Log (1|0)  
Enables log messages when checkpoint events occur.

The checkpoint messages can be useful when checking to see when checkpoints occurred with respect to other events in the log. These messages can make the log a little chatty; by default one line is added every ten minutes. There is no harm in turning these messages off.

Examples:

    checkpoint.log 1    -- enable checkpoint logging (default)
    checkpoint.log 0    -- disable checkpoint logging
        

   CheckPoint.OnBoot (1|0)  
Enables checkpointing file to be loaded automatically when daemon starts.

Examples:

    checkpoint.onboot 1    -- checkpoint files automatically load 
                              when daemon starts (default)

    checkpoint.onboot 0    -- do not load checkpoint files
    

   CheckPoint.Secs (#secs)  
Sets how frequently daemon automatically writes snapshots of job checkpoint information to disk.

Examples:

    checkpoint.secs 600  -- write checkpoints every 10 minutes (default)
    checkpoint.secs 0    -- disable automatic checkpoint snapshots
    

Caveats

    Checkpoints may be written more frequently, eg. if user invokes 'rush -jobcheckpoint'. Also, when someone submits a job, the next checkpoint will be scheduled within 30 seconds of the submission.

   CpuAcctPath (pathname)  
Path to cpu accounting file.

Set to '-' to disable generation of cpu accounting data.

Examples:

    os=windows cpuacctpath c:/rush/var/cpu.acct          # WinNT
    os=unix    cpuacctpath /usr/local/rush/var/cpu.acct  # Unix
    

CAVEATS

  • Do /not/ attempt to redirect the cpu.acct log to an NFS server or remote file system; keep the files local. If you want to centralize the data, make a crontab(1) that sweeps the data to a central server, using either sendmail(8), rcp(1), rdist(1), rsync(1), or some other more forgiving mechanism than NFS.

    NFS is the 'kiss of death' for daemons (rush, cron) if the NFS server hangs or goes down; as soon as the daemon tries to touch a hung NFS (e.g. rush adding a line to cpu.acct when a frame finishes), the daemon will hang up completely. In the case of rush, it will not only make the daemon unresponsive via irush during the outage, it will also be unkillable if the mounts are 'hard'.

   CpuAcct_UseTabs (1|0)  
(New in rush 102.42a9 and up)

This command can be used to enable the tab character to be used as the field delimiter in the cpu.acct file.

By default, fields are separated by spaces padded out to try to attain column alignment. However, tabs may be more efficient and easier to import into spreadsheets.

   DaemonHostCache (none|demand|boot)  
rushd(8)'s hostname caching options. Only affects the way the daemon caches information. 

Options can be none, demand or boot:

  • none  - No caching. Use local OS for lookups.
  • demand - Cache on demand, or whenever new hostlist is reloaded.
  • boot - Cache on boot, or whenever hostlist reloaded.

Example: daemonhostcache boot

   DisableFu (0|1)  
Allows administrator to control whether users can use 'rush -fu' and $RUSH_FU to control other people's jobs.

disablefu 1 prevents users from controlling each other's jobs by disabling 'rush -fu' and $RUSH_FU; only root and adminuser can control any jobs.

disablefu 0 allows users to control each other's jobs, as well as root and adminuser.

Normally, users should be able to control each other jobs, allowing local policies, peer pressure (and auditing daemon logs) to prevent pandemonium.

Example: disablefu 0

   DisablePflags (-|ka)  
Allows administrator to control whether users can use 'k' or 'a' priorities in their cpu specifications.

    Disable Pflag Values
    disablepflags - Allows users to use any priority flags (default).
    disablepflags ka Disables users from being able to use either the 'k' (kill)
    or 'a' (almighty) priority flags.
    disablepflags k Disables users from being able to use the 'k' (kill)
    priority flag.

See Also:

   ExpandCpus (1|0)  
Allows administrator to control whether hostgroups are expanded to include one or all processors on each host.

  • expandcpus 1 causes hostgroups to expand all processors on each host.
  • expandcpus 0 causes hostgroups to expand to only one processor for each host.

Example: expandcpus 1

   ForceGid (gid|-1)  
Forces all user processes to run as this GID. Default is -1, allowing user processes to run as the GID of the user who submitted the job.

Examples:

    forcegid -1     # Disabled
    forcegid 100    # Force the gid to 100 for all processes
	

   ForceUid (uid|-1)  

Forces all user processes to run as this UID. Default is -1, allowing user processes to run as the UID of the user who submitted the job.

Examples:

    forceuid -1     # Disabled
    forceuid 100    # Force the UID to 100 for all processes
        

   FrameFmt "format_string"  
(New in rush 102.42 and up)

Controls the 'rush -lf' report format, using a printf(2) style format string.

You may change the column width values, and can add or remove truncation specifications. eg. %s can be changed to %12s, %12.12s, %-12.12s, etc.

You may not add or remove '%s' fields, or change the data types (eg. do not change '%s' to '%d', etc). It is recommended that you do not use control sequences such as '\n', '\r', or ansi sequences such as '\033[1m', as these will negatively affect irush(1)'s presentations.

This string must be enclosed in double quotes. To represent double quotes in the string, you can use \".

See the caveats and warnings for other relevant warnings.

Warnings and Caveats:

  • Making typos or improper modifications to this string can cause the rushd(1) daemon and/or rush(1) to memory fault. Change this string as carefully as you would change a printf() statement in a C program. No type checking is done to your modifications, so make changes to this string carefully, and double check your work.

  • FrameFmt, FrameHeader1 and FrameHeader2 all must agree on the width of columns, or irush(1) will not parse columns correctly. Make sure when you modify column widths that the headings correctly align with your format string.

  • Heading names must not contain spaces. Irush uses the first character of each word in the FrameHeader1 field to determine column boundaries for the purposes of sorting.

  • Modification of format string's left-hand verses right-hand justification of any field from the defaults *may* affect irush's ability to parse fields correctly from columns. Make sure irush(1) and other such tools that parse the report all still work correctly after you make modifications. Report white space parsing problems if you encounter them.

   FrameHeader1 "header_string"  
(New in rush 102.42 and up)

Sets the header string for line #1 of 'rush -lf' reports.

Basically this should be a string that correctly identifies the column headings for the 'rush -lf' report.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the caveats and warnings for other relevant warnings.

Each column heading should be a single word (ie. column heading names should NOT contain spaces), as this will affect the ability of irush to detect the report columns for sorting.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

This heading can be disabled from the reports by setting this field to "-", which means this header line WILL NOT be printed. However, doing so may negatively impact programs such as irush(1), www-rush(1), and other tools that parse the reports, expecting to skip over headers.

   FrameHeader2 "header_string"  
(New in rush 102.42 and up)

Sets the header string for line #2 of 'rush -lf' reports. By default, this is disabled.

This can be an optional 'dotted line' header that delineates columns for easy viewing.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the caveats and warnings for other relevant warnings.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

Setting this field to "-" means this header line WILL NOT be printed. Currently, this is the recommended setting, as the 'rush -lf' report never had a dotted line separation.

   FrameLog.Ext "-|.txt"  
(New in rush 102.42 and up)

Sets the 'network wide' default filename extension for frame log filenames (eg. "//some/path/logs/0001") and for other files that appear in the log directory, such as the 'framelist' and 'jobinfo' files.

For instance, some platforms need to see ".txt" as the filename extension in order for file browsers to automatically know to use a "text editor" to view the files.

The default is "-", which disables any filename extensions from being used.

    Frame Log Extension
    framelog.ext "-" (Default) disables any filename extensions. Example:
    //server/some/path/logs/0001
    //server/some/path/logs/0001.old
    //server/some/path/logs/framelist
    //server/some/path/logs/jobinfo
    framelog.ext ".txt" Causes all frame logs to have ".txt" appended. Example:
    //server/some/path/logs/0001.txt
    //server/some/path/logs/0001.old.txt
    //server/some/path/logs/framelist.txt
    //server/some/path/logs/jobinfo.txt

Jobs also have the ability to set this on a per job basis using the LogExt submit command, and can also be changed from the command line while a job is running via 'rush -logext'.

See Also:

   FramePad (#digits)  
(New in rush 102.42 and up)

Controls the number of padding digits used when displaying frame numbers. The default value is '4', which yields 4 digit padded numbers (0000).

This value affects all aspects of rush globally throughout the application whenver padded frame numbers are involved. This includes:

  • 'rush -lf'
  • 'rush -lc'
  • 'rush -lac'
  • 'rush -status'
  • RUSH_PADFRAME
  • The filenames used for frame logs
  • The environment variable RUSH_LOGDIR
  • The environment variable RUSH_LOGFILE
  • The format of the 'frame' column of the rush.acct file
  • By changing this value, you may find you need to adjust the format of the other reports (-lf/-lc/-lac/etc) to accomodate different padding values.

    Examples:

        framepad 0     # Use no padding for frames, eg. 0
        framepad 4     # Default. Frame numbers will be in 0000 format
        framepad 5     # Use 5 digit padding for frames, eg. 00000
    	
    The following table shows how different values for framepad will affect the display of frame numbers:
15 -22 155.4 1024
framepad 0 15 -22 155.4 1024
framepad 4 0015 -022 0155.4 1024
framepad 5 00015 -0022 00155.4 01024

   GidRange (gid_min) (gid_max)  
Disallow render queue to run processes with a gid (Group ID) outside this range. First value is a minimum, second value is a maximum.

If both values are -1, checking is disabled.

When a job is submitted, if the user's gid value is outside the range specified here, an error message is printed and the job will not be allowed to run.

    GidRange values
    gidrange 100 65000    (default) Limit group IDs to only be in the range 100 to 65000
    gidrange 100 2147483646    Limit group IDs to only be in the range 100 to 2147483646.
    (Sometimes large numbers are needed for Open Directory configs)
    gidrange -1 -1 Disables all checking of GID values.
    (This weakens security)

   HourlyConsole (on|off)  
Controls whether hourly console messages are printed or not. Can be either 'on' or 'off'.

    Example: hourlyconsole on

   InMaxMsgs (#msgs)  
How many messages(tcp/udp) maximum are received and handled at a time before doing other daemon operations. e.g.:
    while ( daemon loop )
    {
	// Read messages from remotes
	for ( t=0; t < inmaxmsgs; t++ )
	{
	    select(.. inbuf ..)	
	    if ( inbuf is empty ) break;
	    HandleMessage(inbuf);
	}

	// Do other stuff
	...
    }

This puts a limit on how many messages to read, so rush doesn't spend too much time reading data from remotes. Since the whole network can potentially generate more traffic than the rush daemon can possibly deal with, a limit must be enforced.

    Example: inmaxmsgs 30

   JobFmt "format_string"  
Controls the 'rush -lj' report format, using a printf(2) style format string.

You may change the column width values, and can add or remove truncation specifications. eg. %s can be changed to %12s, %12.12s, %-12.12s, etc.

You may not add or remove '%s' fields, or change the data types (eg. do not change '%s' to '%d', etc). It is recommended that you do not use control sequences such as '\n', '\r', or ansi sequences such as '\033[1m', as these will negatively affect irush(1)'s presentations.

This string must be enclosed in double quotes. To represent double quotes in the string, you can use \".

Warnings and Caveats:

  • Making typos or improper modifications to this string can cause the rushd(1) daemon and/or rush(1) to memory fault. Change this string as carefully as you would change a printf() statement in a C program. No type checking is done to your modifications, so make changes to this string carefully, and double check your work.

  • JobFmt, JobHeader1 and JobHeader2 all must agree on the width of columns, or irush(1) will not parse columns correctly. Make sure when you modify column widths that the headings correctly align with your format string.

  • Heading names must not contain spaces. Irush uses the first character of each word in the JobHeader1 field to determine column boundaries for the purposes of sorting.

  • Modification of format string's left-hand verses right-hand justification of any field from the defaults *may* affect irush's ability to parse fields correctly from columns. Make sure irush(1) and other such tools that parse the report all still work correctly after you make modifications. Report white space parsing problems if you encounter them.

   JobHeader1 "header_string"  
Sets the header string for line #1 of the 'rush -lj' report.

Basically this should be a string that correctly identifies the column headings for the 'rush -lj' report.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the JobFmt Caveats and Warnings for the JobFmt command for other relevant warnings.

Each column heading should be a single word (ie. column heading names should NOT contain spaces), as this will affect the ability of irush to detect the report columns for sorting.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

This heading can be disabled from the reports by setting this field to "-", which means this header line WILL NOT be printed. However, doing so may negatively impact programs such as irush(1), www-rush(1), and other tools that parse the reports, expecting to skip over headers.

   JobHeader2 "header_string"  
Sets the header string for line #2 of the 'rush -lj' report.

This is normally the 'dotted line' header that delineates columns for easy viewing. Try to follow the example of the default setting.

This setting is printed literally to the screen; no printf() style formatting expansions will be made, ie. \n, \r, \t, %s, will all be printed literally.

See the JobFmt Caveats and Warnings for other relevant warnings.

This string must be enclosed in double quotes. To represent double quotes in the string, you must use \".

This heading can be disabled from the reports by setting this field to "-", which means this header line WILL NOT be printed. However, doing so may negatively impact programs such as irush(1), www-rush(1), and other tools that parse the reports, expecting to skip over headers.

   JobPassTimeout (#secs)  
This value is obsolete, and should no longer be specified in the rush.conf file.

   JobUpdateThrottle (#secs)  
Doesn't advertise jobs' cpus faster than jobthrottlesecs. The daemon will re-advertise cpus that haven't been acknowledged by the remotes at about this rate. 

Example: jobupdatethrottle 10

   KillCommand (command [args])  
This is the command rush uses to kill renders under Windows when 'usejobobjects' is disabled. More than one command can be specified in the order you want executed.

Use '%ld' in place of where you want the process ID to appear.

Enable 'logflags kKE' to log kill commands, and see errors.

Use special 'killcommand ' to use the old internal kill which is 'supposed' to kill the process group according to Microsoft, but it doesn't work in real life. Use 'killtree.pl' perl script, or the new 'killtree.exe', which is a binary equivalent (default).

Example: os=windows killcommand c:/rush/etc/bin/killtree %ld

Caveats:

	 prodplant: Needed 'kill %ld' to kill chalice renders
	 digiscope: Needed 'killcommand perl c:/rush/etc/bin/killtree.pl %ld' for houdini
	       525: Needed 'killcommand perl c:/rush/etc/bin/killtree.pl %ld' for maya
      

   LogDir_Convert "search" "replace"  
(New in rush 102.42a9 and up)

Allows the log directory pathnames for jobs to be converted on certain machines. "search" is the string to search for, and "replace" is the string "search" is replaced with. "search" and "replace" are literal strings (ie. NOT regexes or wildcards)

For instance, on networks where there's a mix of unix and Windows, and the Windows machines have SAN configurations with drive letter mappings that have no UNC equivalent, you would use logdir_convert to ensure the log directory gets converted correctly from unix style paths to drive mappings.

As an example, the following command causes all Windows machines in the "+sanclients" hostgroup to convert logdir paths that start with "//yourserver/share" to "s:", e.g.:

       host=+sanclients  logdir_convert  "//yourserver/yourshare"  "s:"
                                         ------------------------  ----
                                                    |                |
                                                    Search           Replace
       

So for example, if a job's log directory pathname is:

    //yourserver/yourshare/HONDA/sc23/scenes/test.ma.log

..then on any machine in the +sanclients hostgroup, when the job tries to render a frame, the above logdir_convert command would cause the job's logdir pathname to be changed to:

    s:/HONDA/sc23/scenes/test.ma.log

..on all the +sanclient machines, ensuring the pathname will resolve.

Note in the example, the host= prefix is used here to ensure the 'logdir_convert' command only runs on machines in the +sanclients hostgroup. This 'host=' syntax is documented in the rush.conf "File Format" at the head of this section.

In this case "+sanclients" is an arbitrary hostgroup chosen for this example; the hostgroup's name can actually be anything.. as long as the name has members that are machines you want the 'logdir_convert' command to be used on.

Multiple logdir_convert commands can be specified, so if you have several shares or separate file servers that each needs its own conversion, there can be a conversion for each, eg:

       host=+sanclients logdir_convert "//jobs/admin"  "z:"
       host=+sanclients logdir_convert "//jobs/cgprod" "y:"
       host=+sanclients logdir_convert "//jobs/comp"   "x:"
       

   LogFlags (flags)  
Configures daemon logging features; not to be confused with submit script LogFlags.

Most flags are debugging flags used to track operation of the system. Flags can be combined to enable multiple debugging features. 

LogFlags affect both the daemon AND user applications. To affect only the daemon, specify flags on daemon's command line, or use 'rush -dlog <flags>'.

See Logging Flags Table for a complete list of all the one letter log flags.

    Example: logflags jE

   LogRotateHour (hour|-1)  
Sets the hour (0-23) that the logs automatically rotate. A value of -1 disables automatic log rotation.

    Example: logrotatehour 0

   MaxNewTaskMsgs (#msgs)  
Chokes the maximum number of 'newtask' advertisements the job server sends out to the remotes at a time.

Absolutely must be greater than 0.

Should be a value around 30 or so.

Too low causes new jobs to take a while to establish processors. Too high floods remote's input buffers with 'newtask' advertisements.

    Example: maxnewtaskmsgs 20

   NewTaskRetry (min) (max) (backoff)  
Sets the retransmission rate and exponential backoff for 'newtask' and 'j2c-taskmsg' messages are retransmitted from the job server when remote cpus are down or not responding.

This command expects three white space separated values in respective order:

  • (min_secs) - Minimum amount of time in seconds between 'newtask' retries
  • (max_secs) - Maximum amount of time in seconds between 'newtask' retries
  • (backoff) - A floating point multiplier used to decay the retry rate from (min) to (max) for subsequent 'newtask' retransmissions (see table below)

'newtask' messages are sent when a job is submitted, or is first awakened from a 'Wait' state (eg. 'waitfor'). The job tells the remote processors about the job using 'newtask' messages, one message per entry in the 'rush -lc' report.

Each message will retransmit at a frequency no faster than (min_secs), and will backoff to a rate no slower than (max_secs), depending on load conditions. The rate of retransmissions is decayed from (min_secs) to (max_secs) based on the value of (backoff), using the formula:

retrysecs += retrysecs * backoff_rate

The following table shows some example values, and how they affect the retransmission times after subsequent retries.

    newtaskretry values
    newtaskretry 8 120 0.5    Resulting retry times will be: 8,12,18,27,40,60,90,120,120..
    newtaskretry 8 120 1.0 Resulting retry times will be: 8,16,32,64,120,120,120.. (default)
    newtaskretry 8 120 1.0 Resulting retry times will be: 8,20,50,120,120,120..

   NtRushGid (gid)  
The gid used if an Windows submitted job is to run on Unix machines.

Since the Windows version of rush doesn't know how to map the name 'rush' to the equivalent gid value, NtRushGid is used to resolve it. Basically, this value should be the same as the gid value for the Unix user 'rush'.

    Example: ntrushgid 100

   NtRushUid (uid)  
The uid used if an NT submitted job is to run on Unix machines.

Since the NT version of rush doesn't know how to map the name 'rush' to the equivalent uid value, NtRushUid is used to resolve it. Basically, this value should be the same as the uid value for the Unix user 'rush'.

    Example: ntrushuid 100

   Permit  

Permit users to access certain rush functions.

The syntax of the 'permit' command is as follows:

    permit
    {
	functionlist:
	{
	    userlist
	}
	functionlist:
	{
	    userlist
	}
    }
Comments can be interspersed within the 'permit' command, and must be delimited with '#'.

To permit users to only online/offline/getoff their own machines, or a specific list of machines, see below for examples of how to do this.

'userlist' is a list of users who will be granted access to the functions in the preceding 'functionlist' described below. User names can be separated by commas (,) spaces ( ) or can appear on separate lines, or any combination of commas, spaces and lines. '*' is special in that it matches 'all users'. No verification is done to check if user names are actually valid, so it's not an error to specify non-existant users. The rush debugging flag 'F' can be used to debug 'permit' settings, e.g. 'rush -d F -ping |& grep permit:'.

'functionlist' is a comma or space separated list of function names from the table below, which specifies the functions that will be granted to the users in 'userlist'. 'functionlist' can contain any of:

    Permit Functions
    everything /All/ operations in this table, including administrative commands,
    eg: rush -push, rush -dexit, rush -rotate..
    online Lets users use 'rush -online' command. or the same function in onrush(1)
    offline Lets users use 'rush -offline' command, or the same function in onrush(1)
    getoff Lets users use 'rush -getoff' command, or the same function in onrush(1)
    kill Lets users use the 'k' kill priority (eg. +any=100k)
    (This setting can be overridden by 'disablepflags k')
    almighty Lets users use the 'a' almighty priority (eg. +any=100a)
    (This setting can be overridden by 'disablepflags a')


Permit Examples


    Default Permissions
    The default rush permissions.
    
    # Example. The default permit behavior:
    #    1. 'root' and 'administrator' can do /everything/
    #    2. everyone else can do only normal user stuff (not admin commands)
    #
        
    permit
    {
        everything:
        {
            root                        # unix 'root' user
            administrator               # windows 'administrator' user
        }
    
        online,offline,getoff,kill,almighty:
        {
            *                           # allow everyone to do these functions      
        }
    }

    Wide Open Permissions
    Let everyone do everything.
        permit
        {
            everything:
            {
                *             # everyone can do admin functions (everything)  
            }
        }

    Specific User Permissions
    Allow certain users to have specific permissions
    
    # Example. Configure specific user permissions:
    #     1) 'root' and 'administrator' can do /everything/
    #     2) 'fred' and 'fez' can online/offline
    #     3) 'jack' 'jane' and 'fred' can use kill/almighty priorities
    #     4) 'bill' and 'ted' to use online/offline/getoff/kill
    #
    
    permit
    {
        everything:
        {
    	root,administrator	# root,administrator can do everything
        }
    
        online,offline
        {
    	fred,fez		# fred,fez can online and offline machines     
        }
    
        kill,almighty:
        {
    	jack,jane,fred		# jack,jane and fred can use k/a priority
        }
    
        online,offline,getoff,kill:
        {
    	bill,ted		# bill and ted can online/offline/getoff
    	                        # and use 'k' priority
        }
    }

    Real World Example
    
    permit
    {
         everything:
         {
    	root,administrator
         }
    
         online,offline:
         {
    	*
         }
    
         getoff:
         {
            # Only production TDs can getoff. *ahem*
    
    	# "FIFTH"
    	fifth,jendy,rinbow,mia,kang,ty,karl,markip,ochere,bchavez,jge
    	klovance,amby,kweith,ezimmerman,jhl,jinx,benbower,kholzman,
    	pshino,klm,ronan,bmittle,kenbergman,jw
    
    	# "HONDA"
            honda,zaustin,justinp,avio,mia,bks,mdavis,adamk,gutzin,rga
    	jmilburn,jenn,aglass,orink,kcb,ronan,kglass,andrew
    
    	# PRODUCERS
    	lisa,bonk,wandas,dan
    
    	# RENDER WATCHERS
    	dannyb,nick,hellerman,donovan
    
         }
    
         kill,almighty:
         {
    	# PRODUCERS
    	lisa,bonk,wandas,dan
    
    	# DATA I/O
    	catlin,dman
         }
    
         # USERS WHO CAN USE ONLINE/OFFLINE/GETOFF ON THEIR OWN MACHINES ONLY
         #   Note use of new 'host=<hostname>' to limit commands to run
         #   only on the machines specified.
         #
         online,offline,getoff:
         {
    host=hollywood  fred                            # fred can control host hollywood
    host=fenway     jenna                           # jenna can control host fenway
    host=oaklawn    bks,fred                        # bks and fred can control host oaklawn
    host=+farm      dannyb,nick,hellerman,donovan   # render watchers can control farm hosts
         }
    }

Permitting Users To Only Control Their Own Hosts

The 'host=' and 'os=' prefixes (described in the rush.conf file format description) can be used to cause lines to be executed only on specific hosts.

Example. This shows how to configure 'permit' to allow users to online/offline/getoff certain machines:

    Permit Workstation Online/Offline
    Allow users to online/offline their own workstations.
    permit
    {
        [..]
    
        online,offline,getoff:
        {
    host=tahoe      erco,jack       # erco and jack can control host tahoe
    host=ontario    reid            # reid can control host ontario
    host=+farm      erco            # erco can control all hosts in the +farm host group
        }
    }
            

See Also:

   Priority.Range (pri_min) (pri_max)  
(New in rush 102.42a9c and up)

Configures the minimum and maximum priority values that can specified. First value is a minimum, second value is a maximum.

Default is 'priority.range 1 999'.

    Priority.Range Examples
    priority.range 1 999    (default) Limit priority numbers to the range 1-999
    priority.range 1 9999    Limit priority numbers to the range 1-9999

   rush.(options)  

Rush command line arguments have various defaults, some of which are configurable by the sysadmin in the rush.conf file. Here is a table of the supported values that can be changed:

    rush.(options)
    rush.lac_count 1
    Sets the default [-c cnt] value for 'rush -lac'.
    Default is 1, and should not be changed.
    rush.lac_retry 4
    Sets the default [-r retry] value for 'rush -lac'.
    Default is 4. Larger values cause more retries when a remote
    doesn't respond.
    rush.lac_secs 1
    Sets the default [-s secs] value for 'rush -lac'.
    Default is 1. Larger values cause longer wait for responses.
    rush.laj_count 1
    Sets the default [-c cnt] value for 'rush -laj'.
    Default is 1, and should not be changed.
    rush.laj_retry 2
    Sets the default [-r retry] value for 'rush -laj'.
    Default is 2. Larger values cause more retries when remote
    doesn't respond.
    rush.laj_secs 4
    Sets the default [-s secs] value for 'rush -laj'.
    Default is 2. Larger values cause longer wait for responses.
    rush.status_count 1
    Sets the default [-c cnt] value for 'rush -status'.
    Default is 1, and should not be changed.
    rush.status_secs 4
    Sets the default [-s secs] value for 'rush -status'.
    Default is 4. Larger values cause longer wait for responses.
    rush.status_retry 1
    Sets the default [-r retry] value for 'rush -status'.
    Default is 1. Larger values cause more retries when a remote
    doesn't respond.
    rush.status_backoff_min 5
    Sets the minimum number of times to contact a host
    before kicking in the packet transmission backoff algorithm
    for 'rush -status'. Default is 5, indicating 5 consecutive attempts must fail
    before Rush starts backing off transmissions to this host.
    rush.status_backoff_max 15
    Sets the maximum number of times to skip transmissions for 'rush -status'.
    Default is 15, which indicates up to 15 transmissions will be
    skipped when 'backoff' is in effect. The maximim backoff between
    transmissions when a host is down is: (status_backoff_max * status_secs ).

    Use larger values to increase the backoff time, to prevent
    rushtop(1) from sending Arp packets to powered off machines.
    See also this FAQ entry.

    rush.push_count 2
    Sets the default [-c cnt] value for 'rush -push'.
    Default is 2, which indicates a second attempt is made to machines
    that don't respond the first time.
    rush.push_secs 4
    Sets the default [-s secs] value for 'rush -push'.
    Default is 4, which indicates rush will wait up to 4 seconds
    for machines to respond to 'rush -push' operations.
    rush.dlogstats_count 1
    Sets the default [-c cnt] value for 'rush -dlogstats'.
    Default is 1, and should not be changed.
    rush.dlogstats_secs 4
    Sets the default [-s secs] value for 'rush -dlogstats'.
    Default is 4. Larger values cause longer wait for responses.
    rush.dlogstats_retry 2
    Sets the default [-r retry] value for 'rush -dlogstats'.
    Default is 2. Larger values cause more retries when a remote
    doesn't respond.

   Sched rr|fifo  
(New in rush 102.42a9 and up)

Set the scheduling style used for jobs when priorities are equal:

            sched rr      # use "round robin" scheduling. (default)
            sched fifo    # Use "First In First Out"
        

When two or more jobs of the same priority are lined up to use an available processor, rush uses this value (sched [rr|fifo]) to determine the order jobs execute, to break the tie.

Round Robin (rr) scheduling means jobs will be executed in a circular fashion, one frame from each job, similar to the way cards are dealt out in poker. This means jobs will more or less start and finish together.

FIFO (fifo) scheduling uses the job's age to determine which wins available cpus; older jobs run first, until all its frames are done, then rush will move on to the next job. So in this way, jobs will finish in order, one at a time.

Regardless of which scheduling style is used, priority still *always* takes precedence, it is only when priorities are equal that this scheduler setting affects how jobs run.

For more info, see FIFO Scheduling which describes in more detail how FIFO vs. Round Robin scheduling works, and includes time lapse screenshots of irush showing how jobs run.

    Caveat: This flag is only available in 102.42a9 and up. Older versions do not support this flag, and don't understand the network messages from the newer daemons when this flag is changed to FIFO. So if you use this flag, don't try to mix it with older releases of rush.

   ServerPort (port#)  
Set the rushd(1) server daemon's port numbers for UDP/TCP connections.

Though unnecessary for proper operation of the render queue, you should register the ServerPort value in your /etc/services file, e.g.:

	rushd 696/tcp    # rush render queue
	rushd 696/udp    # rush render queue

Example: serverport 696

   SmtpDebug (t|-)  
When SmtpServer is enabled, this option enables debugging of the entire SMTP mail transactions with the mail server to the log file $RUSH_DIR/var/mail.log.

This flag is useful for debugging delivery problems, and is normally left off (ie. set to '-'). For example:

    Sample $RUSH_DIR/var/mail.log
    
    #DEBUG# Mail::TCP_Connect(): Connecting to remote host mail.yoyodyne.com on 25
    #DEBUG# MAIL SOCKET OPEN, CONNECTING TO mail.yoyodyne.com[12.34.56.78] ON PORT 25 (sock fd=728)
    MAIL::TCP/RECV: << '220 mail.yoyodyne.com ESMTP<CR><LF>' from mail.yoyodyne.com
    MAIL::TCP/SEND: >> 'HELO geneva<CR><LF>' to mail.yoyodyne.com: OK: Sent 13 bytes
    MAIL::TCP/RECV: << '250 vondu.pair.com<CR><LF>' from mail.yoyodyne.com
    MAIL::TCP/SEND: >> 'MAIL FROM:<rush@yoyodyne.com><CR><LF>' to mail.yoyodyne.com: OK: Sent 29 bytes
    MAIL::TCP/RECV: << '250 ok<CR><LF>' from mail.yoyodyne.com
    MAIL::TCP/SEND: >> 'RCPT TO:<smith@yoyodyne.com><CR><LF>' to mail.yoyodyne.com: OK: Sent 27 bytes
    MAIL::TCP/RECV: << '250 ok<CR><LF>' from mail.yoyodyne.com
    MAIL::TCP/SEND: >> 'DATA<CR><LF>' to mail.yoyodyne.com: OK: Sent 6 bytes
    MAIL::TCP/RECV: << '354 Please start mail input.<CR><LF> ' from mail.yoyodyne.com
    MAIL::TCP/SEND: >> 'To: smith@yoyodyne.com<CR><LF>' to mail.yoyodyne.com: OK: Sent 21 bytes
    MAIL::TCP/SEND: >> 'Subject: [geneva.3] TEST (QUE=%60, DONE=%40, FAIL=%0)<CR><LF>' 
                       to mail.yoyodyne.com: OK: Sent 57 bytes
    MAIL::TCP/SEND: >> 'Errors-To: rush@yoyodyne.com<CR><LF>' to mail.yoyodyne.com: OK: Sent 28 bytes
    MAIL::TCP/SEND: >> 'Reply-To: rush@yoyodyne.com<CR><LF>' to mail.yoyodyne.com: OK: Sent 27 bytes
    MAIL::TCP/SEND: >> 'Return-Path: rush@yoyodyne.com<CR><LF>' to mail.yoyodyne.com: OK: Sent 30 bytes
    [..]
            

This aids in debugging problems with email delivery, so one can see the entire email transaction with the configured SmtpServer.

This is a Windows specific option. Flags supported:

    t -- Enables tcp debugging

Examples:

    os=windows smtpdebug -  # Disable SMTP debugging
    os=windows smtpdebug t  # Enable SMTP tcp transactions
	

   SmtpFrom (user@domain.com)  
Sets the 'from' address for all emails sent by rush. This also affects the "Errors-To:", "Reply-To", and "Return-Path" fields of the messages, controlling where bounced email is sent if delivery fails in transit.

NOTE: If rush is unable to deliver the mail to the server, the mail is simply dropped, and an error message will appear in the $RUSH_DIR/var/mail.log.

This is a Windows specific flag.

Example:

    os=windows smtpfrom rush@yoyodyne.com
	

   SmtpPort (port#)  
The TCP port rush uses to contact the SmtpServer to deliver mail. Unless your mail server is listening on some other report, leave this at 25.

This is a Windows specific flag.

Example:

    os=windows smtpport 25
	

   SmtpServer (your.mailserver.com)  
This should be set to the hostname of the SMTP server for your local network. Rush will use this server to deliver DoneMail messages.

If set to '-', mail delivery is disabled. Error messages will appear in the rushd.log whenever a user attempts to use DoneMail.

This is a Windows specific flag. Windows does not have a command line oriented mail delivery agent, so rush uses it's own ($RUSH_DIR/etc/bin/rushsendmail).

Example:

    os=windows smtpserver mail.yoyodyne.com
	

   Submit.Nice (val)  
Sets the default 'nice' value used by jobs that don't otherwise specify the nice command during submit.

Example:

	submit.nice 10            -- Sets the default niceness to 10 for all jobs (default)
	submit.nice 0             -- Sets the default niceness to 0 (regular user priority)
	

A niceness of zero is the regular unix scheduling value.
A niceness of 10 is considered 'nice', preventing the machine from being hit too hard.

The range allowed for 'nice' depends on your OS; see 'man 2 nice' for more info.

This option allows sysadmins to change the network wide default niceness for all renders (that don't otherwise specify nice values). High niceness values make the renders not hit the machines so hard, allowing interactive users of machines not to notice background renders as much. Howerver, in some cases, higher niceness values can make renders take longer.

   TaskCleanupHours (hour)  
Sets up the hour(s) of the day that rush purges orphaned tasks from the 'rush -tasklist'. (eg. a job server reboots; all remote machines end up with tasks that won't go away until they're next up for scheduling) This should be done at least once a day during early morning hours.

An example of 'taskcleanuphours 5' indicates cleanup occurs between 5:00am and 5:40am. Rush disperses the cleanup operation on a per-host basis over a 40 minute period to prevent network load.

The number of minutes delay from the hour is the position in the rush hosts file mod 40.

Examples:

    # This example sets cleanups to run at 5am each day (Default)
    taskcleanuphours 5

    # This example sets cleanups to run 4 times per day: midnight, 6am, noon, and 6pm
    taskcleanuphours 0
    taskcleanuphours 6
    taskcleanuphours 12
    taskcleanuphours 18
	

   TaskKeepaliveSecs (#secs)  
Sets the number of seconds for jobs in the cpu server tasklists to check in with their jobs to make sure the jobs are still active. (A job might 'disappear' due to a shutdown).

Note that this value is a minimum; a random value of up to 40 minutes is added to this value to prevent 'packet storming'.

Normally this is set to 8 hours (28800 seconds), which means that once a job is submitted, every 8 hours (or so) the remote cpu servers will check back in with their job server to ensure the job is still alive.

    Example: taskkeepalivesecs 28800

   TcpSockOpts (option) [val]  
Allows administrator to set various TCP tuning values for all tcp-based connections (rush -lf/-lj/-log/-ping, etc).

Several instances of 'tcpsockopt' can be specified, to set multiple flags.

Currently, only TCP_NODELAY is recommended. Usage:

tcpsockopt <SO_OPTION> <value>

..where <SO_OPTION> is one of:

    TCP_NODELAY
      Disables Nagle algorithm, speeds up connection time for all TCP based connections by a noticable factor, when small amounts of data are involved (rush -ping, etc). WRT "Nagle" RFC 896, "delayed ACK" RFC 813, and "Hosts Communication Requirements" RFC 1122.

    SO_LINGER
      If specified, it is ALWAYS enabled, argument is the linger 'time'. See setsockopt(2) for more info.

    SO_KEEPALIVE
      Enable connected sockets to be 'kept alive'. <value> must be '1' to enable, 0 to disable.

    SO_DONTROUTE
      Not recommended. If enabled, socket connections bypass normal routing. <value> must be '1' to enable, 0 to disable.

    SO_REUSEADDR
      Not recommended. Enabled reuse of port addresses. <value> must be '1' to enable, 0 to disable.

    SO_REUSEPORT
      Not recommended. Enabled reuse of port addresses. Some platforms (Redhat 6.2) don't even support this. On those platforms, the option is ignored. <value> must be '1' to enable, 0 to disable.

    SO_SNDBUF
    SO_RCVBUF
      Not recommended. Sets the send/receive buffer size. <value> is the number of bytes in the buffer. Rush may override the value you specify in some cases, as it may know it needs large buffers.

Example: tcpsockopts TCP_NODELAY 1

   TmpDir (dirname)  
Allows administrator to set where rush creates the $RUSH_TMPDIR for user's jobs.

Be aware that when every frame executes, a subdirectory is created in 'tmpdir', and on completion the subdir is 'rm -rf'ed. Both are done *as the user*, so users must have write permission to this directory.

Examples:

    os=windows tmpdir c:/temp         # WinNT
    os=unix    tmpdir /var/tmp        # Unix
        

   UdpMaxRetries (#msgs)  
The number of re-transmissions until 'retry time-out' occurs

    Example: udpmaxretries 5

   UdpRestTimeOut (#secs)  
How many secs to rest before recovering from a 'retry time-out'

    Example: udpresttimeout 40

   UdpTimeout (#secs)  
The number of seconds between udp re-transmissions.

    Example: udptimeout 8

   UidRange (uid_min) (uid_max)  
Disallow render queue to run processes with a uid (User ID) outside this range. First value is a minimum, second value is a maximum.

If both values are -1, checking is disabled.

When a job is submitted, if the user's uid value is outside the range specified here, an error message is printed and the job will not be allowed to run.

    UidRange values
    uidrange 100 65000    (default) Limit UIDs to only be in the range 100 to 65000
    uidrange 100 2147483646    Limit UIDs to only be in the range 100 to 2147483646.
    (Sometimes large numbers are needed for Open Directory configs)
    uidrange -1 -1 Disables all checking of UID values.
    (This weakens security)

   UseJobObjects (yes|no)  
Windows Only.

Enables the use of Windows 2000 'Job Objects', which is supposedly better at killing renders when rush needs to, such as requeueing frames, dumping jobs, etc.

If enabled, Job Objects will be used (if the windows platform supports it), and will ignore the KillCommands altogether. Some older windows platforms don't support Job Objects (eg. Windows NT), and these systems will fall back to the older KillCommand approach to job control automatically.

If disabled, job objects will not be used, even if available.

It is recommended this setting be left on. The only reason to turn it off is if you suspect it of causing problems; it is relatively new (as of 102.31p).

To have this flag take effect, you must restart the daemon.

Examples:

    os=windows usejobobjects yes     -- Enable job objects if available (default)
    os=windows usejobobjects no -- Disable job objects

   Use_Vfork (0|1)  
(New in Rush 102.42a6 and up)

Unix Only. (default: on)

Enables the use of Unix vfork(2) for executing external commands (eg. jobdumpcommands, renders, etc.) to prevent brief, but potentially excessive memory use when esp. when daemons have large memory footprints on job servers hosting hundreds of jobs, or jobs that have very large frames and/or cpu lists.

The use of vfork(2) for executing external commands prevents rushd from impacting memory, since the older fork(2) will hit memory even on operating systems where fork() is optimized for "Copy On Write" behavior, since the copying of page tables can still create significant memory activity.

When enabled, this feature prevents memory use from rushd, such as when someone dumps a bunch of jobs on an otherwise busy job server hosting many jobs, where for instance the 'jobdumpcommands' can end up creating many fork/exec calls.

This feature is on by default, but can be disabled by adding 'use_vfork 0', causing rushd to fall back to the older fork()/exec() behavior.