Commit 6e064ba6 authored by tqcq's avatar tqcq
Browse files

feat auto stop profiler

parent 5ffe6c71
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ typedef int ucontext_t;// just to quiet the compiler, mostly
#include <gperftools/stacktrace.h>
#include <string>
#include <sys/time.h>
#include <thread>

using std::string;

@@ -160,6 +161,14 @@ CpuProfilerSwitch(int signal_number)
            RAW_LOG(FATAL, "Can't turn on cpu profiling for '%s': %s\n", full_profile_name, strerror(errno));
        }
        RAW_LOG(INFO, "Start New cpu Profiling for '%s'", full_profile_name);

        char *auto_stop_interval = getenv("CPUPROFILESTOP");
        if (auto_stop_interval != NULL) {
            long int interval = strtol(auto_stop_interval, NULL, 10);
            if (interval > 0) {
                std::thread([interval] { std::this_thread::sleep_for(std::chrono::seconds(interval)); }).detach();
            }
        }
    } else {
        ProfilerStop();
        RAW_LOG(INFO, "Stop cpu Profiling for '%s'", full_profile_name);