Perfetto annotation from timemory components (#289)
* Annotate perfetto with timemory component data
- support perfetto annotations via timemory component data, e.g. use PAPI component for exact HW counter annotations
* Tests for perfetto annotation via timemory data
* Update omnitrace-instrument
- remove --default-components argument as this overrides any components set in configuration file
- required by perfetto annotation via timemory data tests
* filter unavailable timemory components
- filter out unavailable timemory components before attempting to invoke the annotate operation on the bundle
* update annotate tests
- account for no PAPI support
* update lulesh-timemory test
- replace '-d wall_clock peak_rss' with '--env OMNITRACE_TIMEMORY_COMPONENTS="wall_clock peak_rss"'
* annotate tests update
- fix misnamed test
* annotate tests update
- restrict binary rewrite to run function to force instrumentation despite heuristics
* annotate tests update
- print {available,overlapping,excluded,instrumented} functions during binary rewrite
* annotate tests update
- add allow-overlapping flag
* Support PAPI with CAP_SYS_ADMIN
- do not disable PAPI if perf_event_paranoid > 2 but has CAP_SYS_ADMIN capability
This commit is contained in:
committed by
GitHub
parent
223536896b
commit
1aca8c177b
@@ -31,6 +31,7 @@
|
||||
#include "perfetto.hpp"
|
||||
#include "utility.hpp"
|
||||
|
||||
#include <timemory/backends/capability.hpp>
|
||||
#include <timemory/backends/dmp.hpp>
|
||||
#include <timemory/backends/mpi.hpp>
|
||||
#include <timemory/backends/process.hpp>
|
||||
@@ -40,6 +41,7 @@
|
||||
#include <timemory/log/color.hpp>
|
||||
#include <timemory/log/logger.hpp>
|
||||
#include <timemory/manager.hpp>
|
||||
#include <timemory/process/process.hpp>
|
||||
#include <timemory/sampling/allocator.hpp>
|
||||
#include <timemory/settings.hpp>
|
||||
#include <timemory/settings/types.hpp>
|
||||
@@ -59,6 +61,7 @@
|
||||
#include <cstdlib>
|
||||
#include <fstream>
|
||||
#include <limits>
|
||||
#include <linux/capability.h>
|
||||
#include <numeric>
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
@@ -944,7 +947,13 @@ configure_settings(bool _init)
|
||||
if(_fparanoid) _fparanoid >> _paranoid;
|
||||
}
|
||||
|
||||
if(_paranoid > 2)
|
||||
auto _cap_status = timemory::linux::capability::cap_read(process::get_id());
|
||||
auto* _cap_data = &_cap_status.effective;
|
||||
bool _has_cap_sys_admin = false;
|
||||
for(auto itr : timemory::linux::capability::cap_decode(*_cap_data))
|
||||
if(itr == CAP_SYS_ADMIN) _has_cap_sys_admin = true;
|
||||
|
||||
if(_paranoid > 2 && !_has_cap_sys_admin)
|
||||
{
|
||||
OMNITRACE_BASIC_VERBOSE(0,
|
||||
"/proc/sys/kernel/perf_event_paranoid has a value of %i. "
|
||||
|
||||
Reference in New Issue
Block a user