mirror of
https://git.asonix.dog/asonix/pict-rs
synced 2024-12-22 03:11:24 +00:00
Reduce poll timer sampling from ~100% to ~10%
This should improve performance just a little bit
This commit is contained in:
parent
04bde6cf20
commit
8a551fa65d
1 changed files with 45 additions and 41 deletions
|
@ -141,50 +141,54 @@ where
|
|||
let out = this.inner.poll(cx);
|
||||
|
||||
let elapsed = start.elapsed();
|
||||
if elapsed > Duration::from_micros(10) {
|
||||
metrics::counter!(crate::init_metrics::FUTURE_POLL_TIMER_EXCEEDED, "timer" => this.name.to_string()).increment(1);
|
||||
metrics::histogram!(crate::init_metrics::FUTURE_POLL_TIMER_EXCEEDED_SECONDS, "timer" => this.name.to_string()).record(elapsed.as_secs_f64());
|
||||
}
|
||||
|
||||
if elapsed > Duration::from_secs(1) {
|
||||
#[cfg(feature = "poll-timer-warnings")]
|
||||
tracing::warn!(
|
||||
"Future {} polled for {} seconds",
|
||||
this.name,
|
||||
elapsed.as_secs()
|
||||
);
|
||||
// only record 1 in 10 polls
|
||||
if elapsed.as_micros() % 10 == 0 {
|
||||
if elapsed > Duration::from_micros(10) {
|
||||
metrics::counter!(crate::init_metrics::FUTURE_POLL_TIMER_EXCEEDED, "timer" => this.name.to_string()).increment(1);
|
||||
metrics::histogram!(crate::init_metrics::FUTURE_POLL_TIMER_EXCEEDED_SECONDS, "timer" => this.name.to_string()).record(elapsed.as_secs_f64());
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "poll-timer-warnings"))]
|
||||
tracing::debug!(
|
||||
"Future {} polled for {} seconds",
|
||||
this.name,
|
||||
elapsed.as_secs()
|
||||
);
|
||||
} else if elapsed > Duration::from_millis(1) {
|
||||
#[cfg(feature = "poll-timer-warnings")]
|
||||
tracing::warn!("Future {} polled for {} ms", this.name, elapsed.as_millis());
|
||||
if elapsed > Duration::from_secs(1) {
|
||||
#[cfg(feature = "poll-timer-warnings")]
|
||||
tracing::warn!(
|
||||
"Future {} polled for {} seconds",
|
||||
this.name,
|
||||
elapsed.as_secs()
|
||||
);
|
||||
|
||||
#[cfg(not(feature = "poll-timer-warnings"))]
|
||||
tracing::debug!("Future {} polled for {} ms", this.name, elapsed.as_millis());
|
||||
} else if elapsed > Duration::from_micros(200) {
|
||||
#[cfg(feature = "poll-timer-warnings")]
|
||||
tracing::debug!(
|
||||
"Future {} polled for {} microseconds",
|
||||
this.name,
|
||||
elapsed.as_micros(),
|
||||
);
|
||||
#[cfg(not(feature = "poll-timer-warnings"))]
|
||||
tracing::trace!(
|
||||
"Future {} polled for {} microseconds",
|
||||
this.name,
|
||||
elapsed.as_micros(),
|
||||
);
|
||||
} else if elapsed > Duration::from_micros(1) {
|
||||
tracing::trace!(
|
||||
"Future {} polled for {} microseconds",
|
||||
this.name,
|
||||
elapsed.as_micros()
|
||||
);
|
||||
#[cfg(not(feature = "poll-timer-warnings"))]
|
||||
tracing::debug!(
|
||||
"Future {} polled for {} seconds",
|
||||
this.name,
|
||||
elapsed.as_secs()
|
||||
);
|
||||
} else if elapsed > Duration::from_millis(1) {
|
||||
#[cfg(feature = "poll-timer-warnings")]
|
||||
tracing::warn!("Future {} polled for {} ms", this.name, elapsed.as_millis());
|
||||
|
||||
#[cfg(not(feature = "poll-timer-warnings"))]
|
||||
tracing::debug!("Future {} polled for {} ms", this.name, elapsed.as_millis());
|
||||
} else if elapsed > Duration::from_micros(200) {
|
||||
#[cfg(feature = "poll-timer-warnings")]
|
||||
tracing::debug!(
|
||||
"Future {} polled for {} microseconds",
|
||||
this.name,
|
||||
elapsed.as_micros(),
|
||||
);
|
||||
#[cfg(not(feature = "poll-timer-warnings"))]
|
||||
tracing::trace!(
|
||||
"Future {} polled for {} microseconds",
|
||||
this.name,
|
||||
elapsed.as_micros(),
|
||||
);
|
||||
} else if elapsed > Duration::from_micros(1) {
|
||||
tracing::trace!(
|
||||
"Future {} polled for {} microseconds",
|
||||
this.name,
|
||||
elapsed.as_micros()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
out
|
||||
|
|
Loading…
Reference in a new issue