[note: I’m just posting; Orcun Yildiz and Rui Wang did all the work and contributed this writeup. Check out Part 1: Darshan for HEP: A Case Study in Characterizing ATLAS I/O Behavior while you’re here for additional context]
The Darshan team and collaborators in the HEP-CCE/SOP group recently completed an integration of Darshan into SPOT, the ATLAS experiment’s release-level performance monitoring tool. This article describes why we pursued the integration, how we carried it out, what the data revealed about ATLAS I/O behavior, and how continuous Darshan metrics are now helping detect performance regressions introduced by software changes.
Background
The Software Performance Optimization Team (SPOT) is a dedicated working group within the ATLAS Experiment at CERN. Its primary mission is to monitor, profile, and optimize the Athena software framework and computing infrastructure to handle massive data processing workloads efficiently. As an infrastructure, SPOT tracks the computational performance of Athena across software releases by running representative workflows and recording performance metrics over time, enabling release managers to detect regressions introduced by software changes.
Before we integrated Darshan, SPOT relied primarily on Prmon for job-level CPU and memory metrics and used resource-intensive tools such as VTune and Valgrind for targeted deep profiling. These tools provided high-level performance insights but lacked lightweight, continuous I/O monitoring at the process and thread level—a gap Darshan was designed to fill.
Motivation
Several factors motivated the integration of Darshan into SPOT:
- Demonstrated diagnostic value. The preliminary studies had revealed significant, previously unknown I/O inefficiencies, but there was no way to track them across releases.
- HPC deployment. ATLAS is deploying workflows on HPC platforms at NERSC, OLCF, and ALCF, where I/O performance characteristics differ markedly from traditional grid storage. Understanding how ATLAS I/O patterns interact with parallel file systems like Lustre and GPFS required continuous monitoring.
- Storage format transition. The ongoing transition from ROOT’s TTree format to RNTuple promised improved read performance through better data locality and compression, but the actual impact on production workflows needed to be measured empirically across the transition period.
Integration
Darshan can be deployed as a transparent interposition library (loaded via `LD_PRELOAD` or linked at build time), which makes it possible to add I/O instrumentation to existing workflows through environment configuration alone. The relevant Darshan environment variables include:
- LD_PRELOAD pointing to the Darshan shared library
- DARSHAN_LOG_DIR_PATH specifying where logs should be written
- DXT_ENABLE_IO_TRACE to activate extended tracing when full operation-level detail is needed
Enabling Darshan in SPOT Workflows
To incorporate Darshan into SPOT, we modified the test execution infrastructure on the dedicated runtime environment nodes to transparently manage and inject Darshan configurations. The orchestration system automatically initializes the local runtime environment using a shared distributed file system (CVMFS) to load the unified, pre-configured experiment software stack.
During job preparation, the orchestrator sets up environment variables (DARSHAN_BASE_DIR, DARSHAN_LOGPATH, and DARSHAN_CONFIG_PATH) to load and configure the profiling tool. It dynamically injects the Darshan shared library via runtime preloading parameters directly into the ATLAS offline software (Athena) processes at runtime using command-line arguments.
The tracking runs systematically target highly I/O-intensive, multi-process data derivation and reduction tasks across a $2 \times 2$ matrix of execution configurations, typically using 16 parallel processes to process 1,000 events per process:
- ROOT TTree Storage format with a Shared Writer: A configuration where a dedicated writer process handles serial file writes on behalf of all workers.
- ROOT TTree Storage format with Shared Writer & Parallel Compression: Where worker processes handle data compression in parallel threads before passing the compressed payloads to the shared writer.
- ROOT RNTuple Storage format with a Shared Writer: Utilizing a modern, highly optimized columnar storage format instead of legacy formats to evaluate streaming write efficiency.
- ROOT RNTuple Storage format with Parallel Compression: Combining the upgraded database format with parallelized worker compression to maximize throughput.
Because the underlying multi-process framework dynamically forks worker processes at runtime, we developed a helper mapping utility that reads the operating system process IDs (PIDs) from the Darshan log headers and maps them to their logical application roles (e.g., worker process, shared writer process, or event counter process). The final diagnostic logs and execution arguments are archived in shared storage, and log details are published directly to the monitoring platform’s web area.
Post-Processing and Visualization
The post-processing and visualization pipeline uses a dedicated scripting inside the SPOT repository. Its utility manages the execution of multiple diagnostic tools to provide release managers with detailed, multi-dimensional performance insights:
- Trend Plots: Standard scatter plot over software releases. It generates metrics such as total read/write bytes (POSIX_BYTES_READ/POSIX_BYTES_WRITTEN) for input and output datasets, general file operation counts (such as POSIX_OPENS, POSIX_FILENOS, POSIX_SEEKS, POSIX_STATS), and consecutive/sequential access metrics (POSIX_CONSEC_READS, POSIX_SEQ_READS). It also isolates metrics per logical worker role (e.g., comparing the writer process write volume to the compute worker read volume) and tracks cumulative write/read times versus bytes processed. Additionally, it visualizes memory alignment issues by querying POSIX_MEM_NOT_ALIGNED.
- Timeline File Trace Plots (for experts only): Visualizes the full file trace over time, charting dynamic I/O operations relative to the runtime timeline.
- Detailed I/O Trace Histograms: Using Darshan eXtended Tracing (DXT) to produce duration-versus-length distributions (e.g., comparing write_durations vs write_lengths) categorizing behavior across our matrix of configurations (comparing TTree and RNTuple formats with or without parallel compression) for specific processes.

Fig. 1: Dashboard Screenshot from the SPOT monitoring website showing performance metrics over several software releases
Ongoing Reread Integration
While basic I/O summary statistics are now fully integrated into the SPOT database and dashboards, continuous parsing and plotting of logical reread profiles are still being integrated. The aim is to move the reread diagnostic suite from independent, local post-processing scripts into SPOT’s nightly monitoring pipeline. This integration includes the standard scatter plot over software releases to track the total reread volume across serial and 8-thread jobs. Fig. 2 is an example generated locally.

Fig. 2: Total reread per nightly release for serial and 8 threads jobs
Takeaways
The integration of Darshan into SPOT demonstrates that lightweight, continuous I/O characterization can be practically deployed within a large experiment’s existing performance monitoring infrastructure. The overhead is negligible, the logs are compact, and the resulting metrics fill a critical gap in understanding workflow performance.
This work provides a scalable methodology for detecting and diagnosing I/O bottlenecks, guiding workflow optimization, and improving resource utilization of HEP experiments as data volumes and HPC concurrency continue to grow in the exascale era and beyond.
Further details, including the SPOT monitoring dashboards and the integration code, are available at https://atlaspmb.web.cern.ch/atlaspmb/spot-mon-darshan/ and https://gitlab.cern.ch/atlaspmb/PerformanceMonitoring/-/tree/master/perf .







