What type of data are we processing?
- date of execution
- run time
- number of nodes
- number of mpi tasks
- queue
- modules loaded
- shared libraries loaded at runtime
- environment variables at execution time
- executable path*
- username*
*The username will be only retained for 6 months after which it will be fully anonymized and only used for statistical purposes.
Who has access to the information tracked by XALT?
Any information traceable to an individual or group is for internal use only (reproducing issues sent to servicedesk) and will be retained for a maximum of 6 months. Summary statistics (not traceable to any individual or group) may be shared publicly, e.g. in computing events.Does it affect my simulations?
XALT has no overhead at compilation and/or run time. No matter what the XALT wrapper does (work or fail), it does not change the way users compile, link and run their applications.Can I opt-out? Yes.
By default XALT tracks every user and executable but you can turn off XALT tracking by setting the environment variable responsible for the tracking to 'no'.
If you use bash, add the following line to your ~/.bashrc
:
export XALT_EXECUTABLE_TRACKING=no
If you use csh/tcsh, add the following line to your ~/.cshrc
file:
setenv XALT_EXECUTABLE_TRACKING=no
If any questions about how to do this, please contact our servicedesk.
How does it technically work?
XALT can collect data at two different moments: link time and run time. This is done by using the LD_PRELOAD environmental variable to intercept the linker (ld) and by using wrappers around the job launchers. At SURF we only use XALT at run time.
- At link time, XALT’s linker collects the list of object files needed by the executable by parsing the user’s link line and command line. The linker wrapper also climbs the process tree to find the compiler calling the linker. When the actual linker (ld) is executed an UUID is generated and inserted in the executable to allow further tracking.
- At run time, XALT works by using job-launcher wrappers. These wrappers parse the command line arguments to get information like the number of MPI tasks and threads, record the run time environmental variables ( for example from the batch system), and if present, extract the information inserted in the executable during link time. Shared libraries used by the executable are also obtained using ldd. More information can be found at XALT website.