diff --git a/rpd_tracer/Logger.cpp b/rpd_tracer/Logger.cpp
index b4e4975..f24a8b7 100644
--- a/rpd_tracer/Logger.cpp
+++ b/rpd_tracer/Logger.cpp
@@ -243,6 +243,17 @@ void Logger::init()
if (autostart == 0)
startTracing = false;
}
+
+ // Add delay before starting tracing/autoflush if RPDT_DELAY is set
+ const char *delay_env = getenv("RPDT_DELAY");
+ if (delay_env != nullptr) {
+ int delay_sec = atoi(delay_env);
+ if (delay_sec > 0) {
+ fprintf(stderr, "rpd_tracer: delaying start by %d seconds (RPDT_DELAY)\n", delay_sec);
+ sleep(delay_sec);
+ }
+ }
+
if (startTracing == true) {
for (auto it = m_sources.begin(); it != m_sources.end(); ++it)
(*it)->startTracing();
diff --git a/rpd_tracer/README.md b/rpd_tracer/README.md
index f1d1456..d70c1b6 100755
--- a/rpd_tracer/README.md
+++ b/rpd_tracer/README.md
@@ -61,3 +61,12 @@ This is a tracer that can attach to any process and record hip apis, ops, and ro
init_tracing();
```
Note: You can utilize `nm -gd ` to find out symbol names in your library.
+
+Delay Option:
+- You can delay the start of profiling/autoflush by setting the environment variable `RPDT_DELAY` to the number of seconds to wait before tracing begins. This is useful for large workloads where you want to skip initial setup time.
+- Example usage:
+ ```bash
+ export RPDT_DELAY=10 # Delay start by 10 seconds
+ export RPDT_AUTOFLUSH=1
+
+ ```