/farm_out
is the recommended destination for temporary, log-style job output (as is typically written to stdout and stderr), to avoid slowing down the performance of filesystems like /volatile
. Do not use /farm_out
as a destination for binary or other job output (instead use /work
or /volatile
). Not only is /farm_out
too small for such output (quotas of only a few gigabytes), but files therein are automatically trimmed, which can be problematic for output which isn't a text log.
/farm_out/$USER
directoryYou do not need to create /farm_out/$USER
yourself, as it should be automatically created for you by the batch system when you run a job. So if, for example, you're pointing your output at subdirectories and need to create them beforehand, then even something as simple as
lsh@ifarm1801 ~> ls /farm_out/lsh
ls: cannot access /farm_out/lsh: No such file or directory
lsh@ifarm1801 ~ [2]> srun hostname
srun: job 54048400 queued and waiting for resources
srun: job 54048400 has been allocated resources
farm13020.jlab.org
lsh@ifarm1801 ~>
should result in creating your base directory,
lsh@ifarm1801 ~> ls /farm_out/lsh
lsh@ifarm1801 ~>
but if you observe otherwise, please let us know.
By default, output to stdout
and stderr
are automatically redirected to /farm_out/%u/%x-%j-%N.out
and /farm_out/%u/%x-%j-%N.err
. Nothing extra needs to (or should) be done. If you wish to rename those files for your jobs then specify appropriate templates on the swif2 add-job command line:
swif2 add-job --stdout /farm_out/%u/%x-%j-%N.out --stderr /farm_out/%u/%x-%j-%N.err ...
Be sure stdout and stderr go to /farm_out
(and not the working directory, /volatile
, /work
, /home
, etc.), and that the output files are unique for each job. The %LETTER
replacement symbols are described in man sbatch
(in sync with our installation) or sbatch(1)
online. You can also generate unique names at the time of submission to Swif.
Use the Slurm flag --output
(and --error
, if you want stderr split out), in your sbatch
invocation, or as a directive in your job script, e.g.
#!/bin/sh
#SBATCH --output /farm_out/%u/%x-%j-%N.out
#SBATCH --error /farm_out/%u/%x-%j-%N.err
echo output
echo error >&2
See man sbatch
(in sync with our installation) or sbatch(1)
online (might describe newer features we don't have) for more information.