mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
segment_profiling: Remove SegmentProfiler and load_sample event
While it seems interesting functionality, this hasn't been documented, maintained or knowingly leveraged for many years. There are various other approaches today, too: * We track the number of event handler invocations regardless of profiling. It's possible to approximate a load_sample event by comparing the result of two get_event_stats() calls. Or, visualize the corresponding counters in a Prometheus setup to get an idea of event/s broken down by event names. * HookCallFunction() allows to intercept script execution, including measuring the time execution takes. * The global call_stack and g_frame_stack can be used from plugins (and even external processes) to walk the Zeek script stack at certain points to implement a sampling profiler. * USDT probes or more plugin hooks will likely be preferred over Zeek builtin functionality in the future. Relates to #3458
This commit is contained in:
parent
df37cadbe8
commit
3f7881a57b
16 changed files with 16 additions and 279 deletions
|
@ -217,8 +217,6 @@ void init_run(const std::optional<std::string>& interface, const std::optional<s
|
|||
}
|
||||
|
||||
void expire_timers() {
|
||||
zeek::detail::SegmentProfiler prof(zeek::detail::segment_logger, "expiring-timers");
|
||||
|
||||
current_dispatched +=
|
||||
zeek::detail::timer_mgr->Advance(network_time, zeek::detail::max_timer_expires - current_dispatched);
|
||||
}
|
||||
|
@ -241,32 +239,9 @@ void dispatch_packet(Packet* pkt, iosource::PktSrc* pkt_src) {
|
|||
processing_start_time = t;
|
||||
expire_timers();
|
||||
|
||||
zeek::detail::SegmentProfiler* sp = nullptr;
|
||||
|
||||
if ( load_sample ) {
|
||||
static uint32_t load_freq = 0;
|
||||
|
||||
if ( load_freq == 0 )
|
||||
load_freq = uint32_t(0xffffffff) / uint32_t(zeek::detail::load_sample_freq);
|
||||
|
||||
if ( uint32_t(util::detail::random_number() & 0xffffffff) < load_freq ) {
|
||||
// Drain the queued timer events so they're not
|
||||
// charged against this sample.
|
||||
event_mgr.Drain();
|
||||
|
||||
zeek::detail::sample_logger = std::make_shared<zeek::detail::SampleLogger>();
|
||||
sp = new zeek::detail::SegmentProfiler(zeek::detail::sample_logger, "load-samp");
|
||||
}
|
||||
}
|
||||
|
||||
packet_mgr->ProcessPacket(pkt);
|
||||
event_mgr.Drain();
|
||||
|
||||
if ( sp ) {
|
||||
delete sp;
|
||||
zeek::detail::sample_logger = nullptr;
|
||||
}
|
||||
|
||||
processing_start_time = 0.0; // = "we're not processing now"
|
||||
current_dispatched = 0;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue