Trace thread config + paranoid level + preload (#176)
- OMNITRACE_TRACE_THREAD_BARRIERS config option
- set to OFF to disable wrapping `pthread_barrier`
- OMNITRACE_TRACE_THREAD_JOIN config option
- set to OFF to disable wrapping `pthread_join`
- allow PAPI with perf_event_paranoid at level 2
- default to no PAPI events
- setenv LD_PRELOAD to not include libomnitrace after preload
- closes #175
- bump version to 1.7.1
[ROCm/rocprofiler-systems commit: a3439d5bf2]
This commit is contained in:
committed by
GitHub
parent
45e5450bf2
commit
0ec0d18ac8
@@ -459,6 +459,14 @@ configure_settings(bool _init)
|
||||
"cause deadlocks with MPI distributions.",
|
||||
false, "backend", "parallelism", "gotcha", "advanced");
|
||||
|
||||
OMNITRACE_CONFIG_SETTING(bool, "OMNITRACE_TRACE_THREAD_BARRIERS",
|
||||
"Enable tracing calls to pthread_barrier functions.", true,
|
||||
"backend", "parallelism", "gotcha", "advanced");
|
||||
|
||||
OMNITRACE_CONFIG_SETTING(bool, "OMNITRACE_TRACE_THREAD_JOIN",
|
||||
"Enable tracing calls to pthread_join functions.", true,
|
||||
"backend", "parallelism", "gotcha", "advanced");
|
||||
|
||||
OMNITRACE_CONFIG_SETTING(
|
||||
bool, "OMNITRACE_SAMPLING_KEEP_INTERNAL",
|
||||
"Configure whether the statistical samples should include call-stack entries "
|
||||
@@ -601,7 +609,6 @@ configure_settings(bool _init)
|
||||
_config->get_max_thread_bookmarks() = 1;
|
||||
_config->get_timing_units() = "sec";
|
||||
_config->get_memory_units() = "MB";
|
||||
_config->get_papi_events() = "PAPI_TOT_CYC";
|
||||
|
||||
// settings native to timemory but critically and/or extensively used by omnitrace
|
||||
auto _add_omnitrace_category = [&_config](auto itr) {
|
||||
@@ -685,21 +692,22 @@ configure_settings(bool _init)
|
||||
if(_fparanoid) _fparanoid >> _paranoid;
|
||||
}
|
||||
|
||||
if(_paranoid > 1)
|
||||
if(_paranoid > 2)
|
||||
{
|
||||
OMNITRACE_BASIC_VERBOSE(0,
|
||||
"/proc/sys/kernel/perf_event_paranoid has a value of %i. "
|
||||
"Disabling PAPI (requires a value <= 1)...\n",
|
||||
"Disabling PAPI (requires a value <= 2)...\n",
|
||||
_paranoid);
|
||||
OMNITRACE_BASIC_VERBOSE(0,
|
||||
"In order to enable PAPI support, run 'echo N | sudo tee "
|
||||
"/proc/sys/kernel/perf_event_paranoid' where N is < 2\n");
|
||||
tim::trait::runtime_enabled<comp::papi_common<void>>::set(false);
|
||||
tim::trait::runtime_enabled<comp::papi_array_t>::set(false);
|
||||
tim::trait::runtime_enabled<comp::papi_vector>::set(false);
|
||||
tim::trait::runtime_enabled<comp::cpu_roofline_flops>::set(false);
|
||||
tim::trait::runtime_enabled<comp::cpu_roofline_dp_flops>::set(false);
|
||||
tim::trait::runtime_enabled<comp::cpu_roofline_sp_flops>::set(false);
|
||||
OMNITRACE_BASIC_VERBOSE(
|
||||
0, "In order to enable PAPI support, run 'echo N | sudo tee "
|
||||
"/proc/sys/kernel/perf_event_paranoid' where N is <= 2\n");
|
||||
trait::runtime_enabled<comp::papi_config>::set(false);
|
||||
trait::runtime_enabled<comp::papi_common<void>>::set(false);
|
||||
trait::runtime_enabled<comp::papi_array_t>::set(false);
|
||||
trait::runtime_enabled<comp::papi_vector>::set(false);
|
||||
trait::runtime_enabled<comp::cpu_roofline_flops>::set(false);
|
||||
trait::runtime_enabled<comp::cpu_roofline_dp_flops>::set(false);
|
||||
trait::runtime_enabled<comp::cpu_roofline_sp_flops>::set(false);
|
||||
_config->get_papi_events() = std::string{};
|
||||
}
|
||||
else
|
||||
@@ -812,6 +820,14 @@ configure_settings(bool _init)
|
||||
tim::set_env(std::string{ _dl_verbose->first }, _dl_verbose->second->as_string(),
|
||||
0);
|
||||
|
||||
if(_config->get_papi_events().empty())
|
||||
{
|
||||
trait::runtime_enabled<comp::papi_config>::set(false);
|
||||
trait::runtime_enabled<comp::papi_common<void>>::set(false);
|
||||
trait::runtime_enabled<comp::papi_array_t>::set(false);
|
||||
trait::runtime_enabled<comp::papi_vector>::set(false);
|
||||
}
|
||||
|
||||
configure_mode_settings();
|
||||
configure_signal_handler();
|
||||
configure_disabled_settings();
|
||||
@@ -1886,6 +1902,20 @@ get_trace_thread_spin_locks()
|
||||
return static_cast<tim::tsettings<bool>&>(*_v->second).get();
|
||||
}
|
||||
|
||||
bool
|
||||
get_trace_thread_barriers()
|
||||
{
|
||||
static auto _v = get_config()->find("OMNITRACE_TRACE_THREAD_BARRIERS");
|
||||
return static_cast<tim::tsettings<bool>&>(*_v->second).get();
|
||||
}
|
||||
|
||||
bool
|
||||
get_trace_thread_join()
|
||||
{
|
||||
static auto _v = get_config()->find("OMNITRACE_TRACE_THREAD_JOIN");
|
||||
return static_cast<tim::tsettings<bool>&>(*_v->second).get();
|
||||
}
|
||||
|
||||
bool
|
||||
get_debug_tid()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user