mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-17 22:10:54 +00:00
Fixed compilation namespace issue and formatting
This commit is contained in:
parent
d935da98b9
commit
40ad18be8e
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user