The SNAPSHOT and SNAPPROP Environments

The SNAPSHOT Environment

If the environment variable VOV_ENV is not defined or if it is defined and it contains the keyword SNAPSHOT, the submission procedure creates a snapshot file with all current environment variables, excluding some troublesome variables, listed later in this section. The snapshot file is typically in vnc_logs/snapshots/$LOGNAME/$VOVARCH/envNNNNN.env where NNNNN is a hash of the content of the file, and it is used to quickly share existing snapshots between files. After the snapshot file has been created, the environment of the job is modified so that the SNAPSHOT environment gets a parameter which is a full name or a relative name to the snapshot file. The snapshot file is chosen based on the value of the variables NC_LOGDIR and NC_SNAPSHOTDIR.

For example:
% nc run -e SNAPSHOT sleep 10
Fairshare= /time/users.john
Resources= macosx
Env      = SNAPSHOT(vnc_logs/snapshots/john/macosx/env13378.env)
Command  = vw sleep 10
Logfile  = vnc_logs/20121013/124703.55776
JobId    = 007470870

The SNAPPROP Environment

It has been proven that under heavy load, many NFS servers are not fast enough to deliver the SNAPSHOT file to the remote host on which jobs need to be executed. This is particularly tough to debug because by the time one is ready to investigate a job failure caused by a bad snapshot file, the file has become available on the remote host.

Accelerator implements an alternative way to deliver the snapshot information to the remote job which does not rely on NFS files but rather on properties attached to the job. The downside of this approach is an increase in memory use by the main vovserver in Accelerator, such on the order of one additional GB for about 100,000 jobs, although this does not seem to be much of a problem on current hardware.

Currently, the only way to use the SNAPPROP environment is to use option -ep in nc run.
% nc run -ep  sleep 10
Fairshare= /time/users.john
Resources= macosx
Env      = SNAPPROP(@JOBID@)
Command  = vw sleep 10
Logfile  = vnc_logs/20121013/123218.26892
JobId    = 007470866

% nc info !
Id,User,Group   007470866,john.staff,/time/users.john
Environment     SNAPPROP(007470866)
Directory       /Users/john
Command         sleep 10
Resources       macosx
Submitted from  mac09
Submitted at    Sat Oct 13 12:32:18 PDT 2012
Priorities      schedule=normal execution=normal
Status          Done
   Host         mac09
   Queue Wait   0s
   CPU Time     0.00
   Max RAM      0MB
   Duration     11
   Age          9s
   AutoForget   1

Customize SNAPSHOT Behavior

Some aspects of the environment snapshot procedure can be customized by the administrator via the $VOVDIR/local/vovenv.config.tcl file. The settings in this file apply to both file and property-based snapshots.

Variable Blacklisting

It may be desirable to prevent some environments variables from being carried over from the submission environment to the job execution environment. A blacklist can be established via a Tcl list variable named badVarList.
  • ANIMALS
  • HOST
  • HOSTNAME
  • LC_COLLATE
  • LC_CTYPE
  • LC_MESSAGES
  • LC_MONETARY
  • LC_NUMERIC
  • LC_TIME
  • LS_COLORS
  • OSREV
  • OSTYPE
  • PROMPT
  • PWD
  • SHELL
  • SHLVL
  • TERMCAP
  • TK_TABLE_LIBRARY
  • USERNAME
  • VOVARCH
  • VOVDIR
  • VOVSAVEPROMPT
  • VOV_ENV
  • VTCL_LIBRARY
  • VTIX_LIBRARY
  • VTK_LIBRARY
  • WINDOWIDTERM
  • WINDOW_TERMIOS
  • _

Other Settings

maxEnvSize
Specifies the maximum size, in bytes, the submission environment is allowed to be for the environment snapshots.

Example File

# Example of $VOVDIR/local/vovenv.config.tcl  file.
lappend badVarList SITE
set maxEnvSize 10000