Fixed compilation namespace issue and formatting

This commit is contained in:
Andrey Skobtsov 2020-05-17 16:56:17 +03:00
parent d935da98b9
commit 40ad18be8e

View File

@ -110,30 +110,29 @@ void TasksStatsCounters::incrementProfileEvents(const ::taskstats & prev, const
profile_events.increment(ProfileEvents::OSReadBytes, safeDiff(prev.read_bytes, curr.read_bytes)); profile_events.increment(ProfileEvents::OSReadBytes, safeDiff(prev.read_bytes, curr.read_bytes));
profile_events.increment(ProfileEvents::OSWriteBytes, safeDiff(prev.write_bytes, curr.write_bytes)); profile_events.increment(ProfileEvents::OSWriteBytes, safeDiff(prev.write_bytes, curr.write_bytes));
} }
}
static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profile_event) static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profile_event)
{ {
return PerfEventInfo return PerfEventInfo
{ {
.event_type = perf_type_id::PERF_TYPE_SOFTWARE, .event_type = perf_type_id::PERF_TYPE_SOFTWARE,
.event_config = event_config, .event_config = event_config,
.profile_event = profile_event .profile_event = profile_event
}; };
} }
static PerfEventInfo hardwareEvent(int event_config, ProfileEvents::Event profile_event) static PerfEventInfo hardwareEvent(int event_config, ProfileEvents::Event profile_event)
{ {
return PerfEventInfo return PerfEventInfo
{ {
.event_type = perf_type_id::PERF_TYPE_HARDWARE, .event_type = perf_type_id::PERF_TYPE_HARDWARE,
.event_config = event_config, .event_config = event_config,
.profile_event = profile_event .profile_event = profile_event
}; };
} }
// descriptions' source: http://man7.org/linux/man-pages/man2/perf_event_open.2.html // descriptions' source: http://man7.org/linux/man-pages/man2/perf_event_open.2.html
const PerfEventInfo PerfEventsCounters::raw_events_info[] = { const PerfEventInfo PerfEventsCounters::raw_events_info[] = {
hardwareEvent(PERF_COUNT_HW_CPU_CYCLES, ProfileEvents::PERF_COUNT_HW_CPU_CYCLES), hardwareEvent(PERF_COUNT_HW_CPU_CYCLES, ProfileEvents::PERF_COUNT_HW_CPU_CYCLES),
hardwareEvent(PERF_COUNT_HW_INSTRUCTIONS, ProfileEvents::PERF_COUNT_HW_INSTRUCTIONS), hardwareEvent(PERF_COUNT_HW_INSTRUCTIONS, ProfileEvents::PERF_COUNT_HW_INSTRUCTIONS),
hardwareEvent(PERF_COUNT_HW_CACHE_REFERENCES, ProfileEvents::PERF_COUNT_HW_CACHE_REFERENCES), hardwareEvent(PERF_COUNT_HW_CACHE_REFERENCES, ProfileEvents::PERF_COUNT_HW_CACHE_REFERENCES),
@ -159,23 +158,23 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
// comm must be associated with an active event. This dummy event allows gathering such records // comm must be associated with an active event. This dummy event allows gathering such records
// without requiring a counting event. // without requiring a counting event.
// softwareEventInfo(PERF_COUNT_SW_DUMMY, ProfileEvents::PERF_COUNT_SW_DUMMY) // softwareEventInfo(PERF_COUNT_SW_DUMMY, ProfileEvents::PERF_COUNT_SW_DUMMY)
}; };
static_assert(std::size(PerfEventsCounters::raw_events_info) == PerfEventsCounters::NUMBER_OF_RAW_EVENTS); static_assert(std::size(PerfEventsCounters::raw_events_info) == PerfEventsCounters::NUMBER_OF_RAW_EVENTS);
thread_local PerfDescriptorsHolder PerfEventsCounters::thread_events_descriptors_holder{}; thread_local PerfDescriptorsHolder PerfEventsCounters::thread_events_descriptors_holder{};
thread_local bool PerfEventsCounters::thread_events_descriptors_opened = false; thread_local bool PerfEventsCounters::thread_events_descriptors_opened = false;
thread_local PerfEventsCounters * PerfEventsCounters::current_thread_counters = nullptr; thread_local PerfEventsCounters * PerfEventsCounters::current_thread_counters = nullptr;
std::atomic<bool> PerfEventsCounters::perf_unavailability_logged = false; std::atomic<bool> PerfEventsCounters::perf_unavailability_logged = false;
std::atomic<bool> PerfEventsCounters::particular_events_unavailability_logged = false; std::atomic<bool> PerfEventsCounters::particular_events_unavailability_logged = false;
Logger * PerfEventsCounters::getLogger() Logger * PerfEventsCounters::getLogger()
{ {
return &Logger::get("PerfEventsCounters"); return &Logger::get("PerfEventsCounters");
} }
UInt64 PerfEventsCounters::getRawValue(int event_type, int event_config) const UInt64 PerfEventsCounters::getRawValue(int event_type, int event_config) const
{ {
for (size_t i = 0; i < NUMBER_OF_RAW_EVENTS; ++i) for (size_t i = 0; i < NUMBER_OF_RAW_EVENTS; ++i)
{ {
const PerfEventInfo & event_info = raw_events_info[i]; const PerfEventInfo & event_info = raw_events_info[i];
@ -185,15 +184,15 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
LOG_WARNING(getLogger(), "Can't find perf event info for event_type=" << event_type << ", event_config=" << event_config); LOG_WARNING(getLogger(), "Can't find perf event info for event_type=" << event_type << ", event_config=" << event_config);
return 0; return 0;
} }
static int openPerfEvent(perf_event_attr *hw_event, pid_t pid, int cpu, int group_fd, UInt64 flags) static int openPerfEvent(perf_event_attr *hw_event, pid_t pid, int cpu, int group_fd, UInt64 flags)
{ {
return static_cast<int>(syscall(SYS_perf_event_open, hw_event, pid, cpu, group_fd, flags)); return static_cast<int>(syscall(SYS_perf_event_open, hw_event, pid, cpu, group_fd, flags));
} }
static bool getPerfEventParanoid(Int32 & result) static bool getPerfEventParanoid(Int32 & result)
{ {
// the longest possible variant: "-1\0" // the longest possible variant: "-1\0"
constexpr Int32 max_length = 3; constexpr Int32 max_length = 3;
@ -215,10 +214,10 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
result = static_cast<Int32>(value); result = static_cast<Int32>(value);
return true; return true;
} }
static void perfEventOpenDisabled(Int32 perf_event_paranoid, bool has_cap_sys_admin, int perf_event_type, int perf_event_config, int & event_file_descriptor) static void perfEventOpenDisabled(Int32 perf_event_paranoid, bool has_cap_sys_admin, int perf_event_type, int perf_event_config, int & event_file_descriptor)
{ {
perf_event_attr pe = perf_event_attr(); perf_event_attr pe = perf_event_attr();
pe.type = perf_event_type; pe.type = perf_event_type;
pe.size = sizeof(struct perf_event_attr); pe.size = sizeof(struct perf_event_attr);
@ -229,10 +228,10 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
pe.exclude_kernel = perf_event_paranoid >= 2 && !has_cap_sys_admin; pe.exclude_kernel = perf_event_paranoid >= 2 && !has_cap_sys_admin;
event_file_descriptor = openPerfEvent(&pe, /* measure the calling thread */ 0, /* on any cpu */ -1, -1, 0); event_file_descriptor = openPerfEvent(&pe, /* measure the calling thread */ 0, /* on any cpu */ -1, -1, 0);
} }
bool PerfEventsCounters::initializeThreadLocalEvents(PerfEventsCounters & counters) bool PerfEventsCounters::initializeThreadLocalEvents(PerfEventsCounters & counters)
{ {
if (thread_events_descriptors_opened) if (thread_events_descriptors_opened)
return true; return true;
@ -273,10 +272,10 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
thread_events_descriptors_opened = true; thread_events_descriptors_opened = true;
return true; return true;
} }
void PerfEventsCounters::initializeProfileEvents(PerfEventsCounters & counters) void PerfEventsCounters::initializeProfileEvents(PerfEventsCounters & counters)
{ {
if (current_thread_counters == &counters) if (current_thread_counters == &counters)
return; return;
if (current_thread_counters != nullptr) if (current_thread_counters != nullptr)
@ -298,10 +297,10 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
} }
current_thread_counters = &counters; current_thread_counters = &counters;
} }
void PerfEventsCounters::finalizeProfileEvents(PerfEventsCounters & counters, ProfileEvents::Counters & profile_events) void PerfEventsCounters::finalizeProfileEvents(PerfEventsCounters & counters, ProfileEvents::Counters & profile_events)
{ {
if (current_thread_counters != &counters) if (current_thread_counters != &counters)
return; return;
if (!thread_events_descriptors_opened) if (!thread_events_descriptors_opened)
@ -354,16 +353,16 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
profile_events.increment(ProfileEvents::PERF_CUSTOM_INSTRUCTIONS_PER_CPU_CYCLE, instructions_per_cpu); profile_events.increment(ProfileEvents::PERF_CUSTOM_INSTRUCTIONS_PER_CPU_CYCLE, instructions_per_cpu);
current_thread_counters = nullptr; current_thread_counters = nullptr;
} }
PerfDescriptorsHolder::PerfDescriptorsHolder() PerfDescriptorsHolder::PerfDescriptorsHolder()
{ {
for (int & descriptor : descriptors) for (int & descriptor : descriptors)
descriptor = -1; descriptor = -1;
} }
PerfDescriptorsHolder::~PerfDescriptorsHolder() PerfDescriptorsHolder::~PerfDescriptorsHolder()
{ {
for (int & descriptor : descriptors) for (int & descriptor : descriptors)
{ {
if (descriptor == -1) if (descriptor == -1)
@ -377,16 +376,20 @@ static PerfEventInfo softwareEvent(int event_config, ProfileEvents::Event profil
descriptor = -1; descriptor = -1;
} }
} }
Logger * PerfDescriptorsHolder::getLogger() Logger * PerfDescriptorsHolder::getLogger()
{ {
return &Logger::get("PerfDescriptorsHolder"); return &Logger::get("PerfDescriptorsHolder");
} }
}
#else #else
namespace DB
{
void PerfEventsCounters::initializeProfileEvents(PerfEventsCounters &) {} void PerfEventsCounters::initializeProfileEvents(PerfEventsCounters &) {}
void PerfEventsCounters::finalizeProfileEvents(PerfEventsCounters &, ProfileEvents::Counters &) {} void PerfEventsCounters::finalizeProfileEvents(PerfEventsCounters &, ProfileEvents::Counters &) {}
}
#endif #endif