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 + + ```