feat auto stop profiler

This commit is contained in:
tqcq 2024-04-30 16:29:04 +08:00
parent 5ffe6c71f9
commit 6e064ba6ce

View File

@ -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);