Rush Logo Rush Render Queue - rush.conf File
V 103.07b 05/11/16
(C) Copyright 2008, 2016 Seriss Corporation. All rights reserved.
(C) Copyright 1995,2000 Greg Ercolano. All rights reserved.

Strikeout text indicates features not yet implemented




   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, cpuacct.dbasedir).

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.

Prefixes

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 it. eg:

    host=geneva   tmpdir /mnt/ramdisk     # only host geneva will run the 'tmpdir /mnt/ramdisk' command
    host=+soft    tmpdir /tmp             # all hosts in the +soft hostgroup will run the 'tmpdir /tmp' command
    
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 is the one that takes effect. So the best approach is to put the more "general" entries (like os=xxx and host=+xxx) first, and the more specific entries (like host=xxx) last.

You can also have rush.conf file commands execute depending on the rush version number using the "version>=", "version<=", "version>" or "version<" prefixes, eg:

    version>=103.00   somenewflag 1      # runs on versions greater or equal to 103.00
    version<=103.00   someoldflag 1      # runs on versions less or equal to 103.00
    version>103.00    somenewflag 1      # runs on versions greater than 103.00
    version<103.00    someoldflag 1      # runs on versions less than 103.00
    
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.

   AllowLoopback (0|1)  
Allows the local machine to have a 127.0.0.1 address for itself.

Normally this flag is off by default, so that Rush generates an error if the machine's IP is 127.0.0.1, because rush can't operate on a network if the machine thinks its IP is the loopback address. (It can't reach other machines, and other machines can't reach it)

However, there are rare 'standalone' situations where Rush would be used only on the one machine. In such a case, the machine is standalone, and its own license server.

Example

    allowloopback 1

   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

   BootCheck_Cmd "<command> [args..]"  
(New in Rush 103.00 and up) Sets up an administrative script that executes JUST BEFORE the rushd service comes online.

This allows the administrator to configure commands to check that the machine is fully up before the rushd service enables its network services to start renders running.

Common things to test are if mounts are in place, drive maps have been mapped, if DHCP has resolved the machine's IP address, DNS/hostname lookups are working, temp directories cleared, etc.

This script can be used as a hook by the administrator to detect if a machine is unsuitable for general rendering at startup. Known problems can be detected by the custom commands. These can test and either fix the problem, or wait for the machine to be stable and either send email if the problem persists, or disable the machine from rendering entirely.

Note that the script will not be able to run 'rush' commands, as the service's network ports are not yet listening for connections.

Common goals this script might want to achieve:

  • Check if the file server's mounts are accessible.
    If unavailable, try to either fix the problem, or wait until the mounts become available.
  • Check for missing infrastructure that all renders depend on.
    Things like licenses, missing plug-ins, fonts, etc. Anything that you know all your renders depend on for correct operation that might be missing for one reason or another.

Typically this script is only used when there are known problems happening that you know how to detect and solve/workaround with code.

An example script is provided as "$RUSH_DIR/etc/bootcheck" which should be customized as needed. It can be enabled via the following two lines added to the rush.conf:


     os=windows	bootcheck_cmd "perl c:/rush/etc/bootcheck"
     os=unix    bootcheck_cmd "perl /usr/local/rush/etc/bootcheck"
     

Currently exit codes are ignored, but the exit code of your script should be zero. Basically your script should not return until the machine is fit for rendering.

IMPORTANT: Please see the caveats section of the Bootcheck script docs for details on the careful customization of this script.

   Browser.Command "command %s"  

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 the local disk's cpu accounting file.

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

(New in Rush 103.00 and up) If you want to write accounting data to a file server, use cpuacct.dbasedir instead; it can properly handle network file system outages.

Enable Examples (default):

    os=windows cpuacctpath c:/rush/var/cpu.acct          # Windows
    os=unix    cpuacctpath /usr/local/rush/var/cpu.acct  # Unix (Mac,Linux..)
    

Disable Examples:

    os=windows cpuacctpath -                             # Windows
    os=unix    cpuacctpath -                             # Unix (Mac,Linux..)
    

Note that you can also have combos where one platform is on, the other off, etc. You can also disable accounting on specific hosts, eg: For more info on the "os=xxx" and "host=xxx" prefixes, see the section on rush.conf file prefixes.

CAVEATS

  • Do /not/ attempt to specify an NFS (or SMB) path to a remote file system; only specify filenames that are on the local disk.

    If you want to centralize the data to a file server and are using Rush 103.xx or higher, use the new cpuacct.dbasedir command instead, which properly handles network outages and prevents the daemon from hanging. With older versions of Rush, you can create crontab(1) that sweeps the local data from each machine 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 path on a hard mount (e.g. rush adding a line to the cpu.acct file when a frame finishes), the daemon will hang. This will make the daemon unresponsive to irush or managing rendering for the duration of the NFS outage. The daemon will also be unkillable if the mounts are 'hard'.

    The new cpuacct.dbasedir command avoids that problem using threads, and is the proper way to write accounting data to a remote file server with releases of Rush that are 103.xx and up.

   CpuAcct.DbaseDir path dirmode filemode  
(New in Rush 103.00 and up)

This specifies a path on a file server to accumulate the Rush cpu accounting data (in the exact same format as the as the Rush cpu.acct file).

  • path specifies the path of a directory on the file server to write the data,

  • dirmode specifies the unix mode to use when creating subdirectories,

  • filemode specifies the unix mode to use when creating files in the subdirectories.

When enabled, this will cause Rush to regularly flush cpu accounting data as ascii flat files to the file server using the specified path, organizing the data by date and hostname in the format:

	     /path/YYYY/MM/DD/HOSTNAME-cpu.acct
	      ---- ---- -- -- -------- --------
	       |     |  |  |    |          |
	       |     |  |  |    |          Suffix
	       |     |  |  |    Hostname of the machine that generated the cpu accounting data
	       |     |  |  2-digit day the data was generated (01 thru 31)
	       |     |  2-digit month the data was generated (01 thru 12)
	       |     4-digit year the data was generated (e.g. 2012)
	       The path that was specified for the cpuacct.dbase command
	

So for example, if the path is set to "/yourserver/somewhere/rush-dbase", and three machines 'tahoe', 'superior' and 'erie' had generated accounting data on December 20th, 2012, then the paths for each machine's accounting data would be:

	    /yourserver/somewhere/rush-dbase/2012/12/20/tahoe-cpu.acct
	    /yourserver/somewhere/rush-dbase/2012/12/20/superior-cpu.acct
	    /yourserver/somewhere/rush-dbase/2012/12/20/erie-cpu.acct
	

Scripts can dive into this directory hierarchy to retrieve historical cpu accounting data for generating farm cpu utilization reports, project usage reports, bidding data, etc. For example, the new RushAcct.py python module knows how to read data archived in this format.

Technical Details
To prevent overloading the server with a constant birrage of data from the farm, accounting data is only flushed to the server at the interval specified for the cpuacct.dbasedir.sweepsecs value (default is 300 seconds, or every 5 minutes).

At the default, this means accounting data will be at most 5 minutes old. You would want to use larger values (longer delays) if your farm is larger, or the file server tends to get overloaded easily.

Configuring cpuacct.dbasedir does not affect the generation of the local cpu.acct file (controlled by the cpuacctpath setting). If you only want data to be sent to the file server, and NOT be accumulated in the local cpu.acct file, you can use e.g.:

	    # Disable the local cpu.acct file generated on each machine
	    cpuacctpath -

	    # Enable writing accounting data to the file server instead
	    cpuacct.dbasedir /yourserver/path 777 644

	    # Set the sweep interval for writing data to the file server
	    cpuacct.dbasedir.sweepsecs 300
	

When the file server is not available (ie. the path configured is unreachable), data is backlogged to each machine's local rush/var/.cpuacct_dbasedir_backlog file until the server responds. This way outages with the file server won't cause a loss of accounting data, even across reboots and daemon restarts.

   CpuAcct.DbaseDir.SweepSecs #secs  
(New in Rush 103.00 and up)

This controls the rate (in seconds) that cpu accounting data is swept from all the render nodes to the file server.

This value is only relevant if a path has been configured for the cpuacct.dbasedir setting.

The default is 300 seconds (5 minutes). Use larger values if you want data to be held back longer, so as not to traffic the server so often.

   CpuAcct.UseTabs (1|0)  
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.

Historical Notes

    This command was added in 102.42a9.

   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

   Fifo.Reset (jobdone|never)  
(new in 103.06)

Allows the administrator to control whether Rush should automatically reset the FIFO order time.

By default, the FIFO order is reset when the job completes ("jobdone"), however this can be disabled by setting the fifo.reset to "never".

When a job is submitted, the FIFO order is the start time of the job. This date/time value is compared to the same value in other jobs to determine "seniority", used for scheduling when priorities are equal.

It is typically desirable to have the FIFO order reset after the job completes so that users can't monopolize the network by just keeping an old job around for its "seniority", and continuously re-queuing it.

Examples:

    fifo.reset jobdone    # default: the FIFO order is reset when job is Done
    fifo.reset never      # the FIFO order is never reset; it remains the same after job is Done
	

See Also:

   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"  
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.

Historical Notes

    This command was added in 102.42.

   FrameHeader1 "header_string"  
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.

Historical Notes

    This command was added in 102.42.

   FrameHeader2 "header_string"  
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.

Historical Notes

    This command was added in 102.42.

   FrameLog.Ext "-|.txt"  
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'.

Historical Notes

    This command was added in 102.42.

See Also:

   FramePad (#digits)  
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_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

Historical Notes

    This command was added in 102.42.

   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"  

This command is obsolete.
Use the rush/etc/path_convert file instead.

Historical Notes

   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

   MountCheck_Cmd "<command> [args..]"  
(New in Rush 103.00 and up) Sets up the administrative script rush/etc/mountcheck to execute JUST BEFORE the user's render scripts execute to render a frame, and BEFORE the logfile for that frame is created (so that the mounts for the log directory itself can be checked). See that link for details.

This way the code can not only check if mounts are missing, but can even attempt to fix the problem to let the frame continue to render, or to offline the machine for rendering (eg. with 'rush -offline') and tell the job to retry the frame elsewhere.

COMMAND DETAILS
The command specified is run in a native shell (Unix: /bin/sh, Windows: DOS) and the command runs in the same user context the render is running as (not root! See the mountcheck script's caveats). Double quotes must surround the command. If the command needs to contain double quotes or backslashes, escape them with a backslash, e.g.

    os=unix    mountcheck_cmd  "perl -e 'printf(\"This is a test\\n\");'"
    

If the command is set to "" (empty pair of double quotes), the mountcheck command is disabled (default).

Typically the command is a script, but it can also be an executable. Since the script should be local (and not on a server that might be down), it is recommended the script invoked is the one in rush/etc/mountcheck, which you can customize. The script can be in any language (perl, python, bash). The example script provided is perl.

For reasons that should be obvious, the script invoked should exist on the local drive, and not on a remote server; a central purpose of this script is to test if remote disks are accessible, so it wouldn't help much if the script exists on a server to be tested while it is unavailable.

The script should return an exit code of 0 or 1; 0 being success, 1 being it failed, and the frame should be requeued to try again. The script will run with the usual environment variables set that a render receives; RUSH_FRAME, RUSH_JOBID, etc. These can be used if the script needs to adjust the job to, for instance, add the local processor as a 'neverhost', or to adjust the notes for the rendering frame with 'rush -exitnotes' or 'rush -notes'.

USE DETAILS
This script can be used as a hook by the sysadmin to detect if a machine is unsuitable for general rendering. This way known intermittent problems can be detected and either fixed or avoided.

Common goals this script might want to achieve:

  • Check if the file server's mounts are accessible.
    If unavailable, try to either fix the problem and return an exit code of 0 if successful, or disable the machine from rendering jobs either with 'rush -an' or 'rush -offline' to prevent further rendering, optionally notify the user with See 'rush -exitnotes', and return an exit code of '1' to retry the frame elsewhere.
  • Check for missing infrastructure that all renders depend on.
    Things like missing licensing, plug-ins, fonts, etc. Anything that you know all your renders depend on for correct operation that might be missing for one reason or another.

Typically this script is only used when intermittent problems are known to be happening on the network, and the systems adminstrator needs a hook into the user's render pipeline to check for problems and either correct them or warn that problems are happening (eg. via email or similar notification method).

An example script is provided as "$RUSH_DIR/etc/mountcheck" which can be used for reference and modified as needed. The example can be enabled by adding the following two lines to the rush.conf file:


    os=windows	mountcheck_cmd "perl c:/rush/etc/mountcheck"
    os=unix     mountcheck_cmd "perl /usr/local/rush/etc/mountcheck"
    

The script can be in any language, it does not need to be a perl script. You can use python, bash, or any other scripting language; adjust the command appropriately.

This command should at minimum return an exit code indicating if the machine is OK for running user's renders:

  • exit 0 -- OK to render.
    The user's render script will be executed.
  • exit 1 -- NOT OK to render.
    In this case, the user's render script is NOT run, the frame in question is requeued, and the frame's TRY count bumps up by 1.

IMPORTANT: Please see the caveats section of the Mountcheck script documentation for details on customizing this script.

   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
    almighty Lets users use the 'a' almighty priority (eg. +any=100a)
    (This setting can be overridden by 'disablepflags a')
    everything /All/ operations in this table, including administrative commands,
    eg: rush -push, rush -dexit, rush -rotate..
    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')
    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)
    usercmd Lets users use 'usercmd' submit command to redefine the job's owner.
    fifo-order (new in 103.06) Lets users use 'rush -fifo-order' command to re-order jobs
    when FIFO scheduling is enabled.


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,fifo-order:
        {
            *                           # 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
    #     5) 'fred' and 'wrangler' can use 'rush -fifo-order'
    #
    
    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
        }
    
        fifo-order:
        {
            fred,wrangler           # "fred" and "wrangler" can use fifo-reordering
        }
    }

    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)  

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

Historical Notes

    This command was added in 102.42a9c.

   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.lf.fmt "FORMAT_STRING"
    Sets the default report format for the 'rush -lf' command.
    For info on the value of FORMAT_STRING, see Frames Report Formatting.
    rush.laj.fmt "FORMAT_STRING"
    Sets the default report format for the 'rush -laj' command.
    For info on the value of FORMAT_STRING, see Job Report Formatting.
    rush.lj.fmt "FORMAT_STRING"
    Sets the default report format for the 'rush -lj' command.
    For info on the value of FORMAT_STRING, see Job Report Formatting.
    rush.lj_x.fmt "FORMAT_STRING"
    Sets the default report format for the 'rush -lj -x' command.
    For info on the value of FORMAT_STRING, see Job Report Formatting.
    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  

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.

See Also:

Historical Notes

    This command was added in 102.42a9.

   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

   Setenv name "value"  
Sets environment variables in the daemon/service.

Variables you set are passed as defaults to the renders. Use os/hostname prefixes to make sure variables get set on the appropriate machines.

'name' is the name of the variable being set, and 'value' is a quoted string to set the variable to. 'value' can contain references to other variables using the form ${VARNAME}.

    Note Be careful when using self-referencing ${VARNAME}, such as with setenv PATH "/some/dir:${PATH}".. each time the rush.conf file reloads, the variable expansion will occur, causing the variable to 'accumulate'. When doing such settings, to avoid accumulation, it's better to set variables explicitly.

Examples:

    os=windows setenv PYTHONPATH "//ourserver/admin/pythonlib/"
    os=linux   setenv PYTHONPATH "/ourserver/admin/pythonlib/"
    os=mac     setenv PYTHONPATH "/Volumes/admin/pythonlib/"
    os=all     setenv SPM_HOST   "licserv1:licserv2"
    

See Also:

    unsetenv -- unset environment variables

   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

   TcpTimeout secs  
Allows administrator to set the default timeout used for TCP operations. (eg. rush -lj, rush -ping, etc)

Sets the amount of time a TCP operation will block waiting for a response from the server before timing out.

The default is 40 seconds.

Example

    tcptimeout 40

   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
        

   UdpCompress (#bytes)  
The maximum #bytes sent over UDP before messages are compressed into binary data.

Used mostly by potentially large UDP messages invoked by users (eg. 'rush -push', 'rush -laj', 'rush -status', etc), this increases the amount of data that can be moved over rush's UDP protocol before reaching the hard limits of the local network protocol.

Default: 9000

Examples:

    udpcompress 9000# Default
    udpcompress 0# Compression disabled
    

CAVEATS

  • When UDP packets are compressed, they'll be sent over the wire as /binary/ data instead of the usual rush protocol's ascii cleartext.
  • Rush will use more CPU to handle compress/uncompress operations.

   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)

   unsetenv name  
Unsets (clears) an environment variable.

When unset, the variable will not show up at all in the environment. (As opposed to 'setenv NAME ""' which sets a variable to an empty string)

Examples:

    os=all unsetenv DEBUG
    os=unix unsetenv LANG
    

See Also:

    Setenv -- set an environment variable

   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)  
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.

Historical Notes

    This command was added in 102.42a6.