diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b38a40a..6c785c4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## 4.2.2 + +* Remove some unnecessary async locks +* Fix client pool `wait_for_connect` implementation + +## 4.2.1 + +* Fix https://github.com/aembke/fred.rs/issues/11 + ## 4.2.0 * Support Sentinel clients diff --git a/Cargo.toml b/Cargo.toml index c63ec295..e5f70eb7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fred" -version = "4.2.1" +version = "4.2.2" authors = ["Alec Embke "] edition = "2018" description = "An async Redis client for Rust built on Futures and Tokio." @@ -16,7 +16,7 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [dependencies] -tokio = { version = "1.11", features = ["full"] } +tokio = { version = "1", features = ["full"] } bytes = "1.0" futures = "0.3" parking_lot = "0.11" @@ -30,7 +30,7 @@ native-tls = { version = "0.2", optional = true } tokio-native-tls = { version = "0.3", optional = true } rand = "0.8" tokio-util = { version = "0.6", features = ["codec"] } -tokio-stream = "0.1.5" +tokio-stream = "0.1" indexmap = { version = "1.7", optional = true } sha-1 = "0.9" tracing = { version = "0.1", optional = true } @@ -81,3 +81,5 @@ sentinel-client = [] sentinel-tests = [] # a testing feature to randomly stop, restart, and rebalance the cluster while tests are running chaos-monkey = ["custom-reconnect-errors"] +# tests that may not work on some systems that have low file descriptor limits +fd-tests = [] diff --git a/bin/pipeline_test/flamegraphs/.gitkeep b/bin/pipeline_test/flamegraphs/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/bin/pipeline_test/flamegraphs/flamegraph-no-tracing.svg b/bin/pipeline_test/flamegraphs/flamegraph-no-tracing.svg deleted file mode 100644 index ed9f011a..00000000 --- a/bin/pipeline_test/flamegraphs/flamegraph-no-tracing.svg +++ /dev/null @@ -1,412 +0,0 @@ -Flame Graph Reset ZoomSearch perf_4.19 (6 samples, 0.12%)entry_SYSCALL_64_after_hwframe (6 samples, 0.12%)do_syscall_64 (6 samples, 0.12%)__x64_sys_execve (6 samples, 0.12%)__do_execve_file.isra.36 (6 samples, 0.12%)search_binary_handler (6 samples, 0.12%)load_elf_binary (6 samples, 0.12%)setup_new_exec (6 samples, 0.12%)strrchr (6 samples, 0.12%)[ld-2.28.so] (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)_dl_catch_exception (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)[ld-2.28.so] (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (1 samples, 0.02%)do_syscall_64 (1 samples, 0.02%)__x64_sys_mprotect (1 samples, 0.02%)do_mprotect_pkey (1 samples, 0.02%)mprotect_fixup (1 samples, 0.02%)__split_vma (1 samples, 0.02%)__vma_adjust (1 samples, 0.02%)vma_interval_tree_insert (1 samples, 0.02%)[unknown] (1 samples, 0.02%)clone (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (1 samples, 0.02%)do_syscall_64 (1 samples, 0.02%)_do_fork (1 samples, 0.02%)copy_process.part.37 (1 samples, 0.02%)__vmalloc_node_range (1 samples, 0.02%)__get_vm_area_node (1 samples, 0.02%)alloc_vmap_area (1 samples, 0.02%)__insert_vmap_area (1 samples, 0.02%)_start (6 samples, 0.12%)__libc_start_main (6 samples, 0.12%)main (6 samples, 0.12%)std::rt::lang_start_internal (6 samples, 0.12%)std::panic::catch_unwind (6 samples, 0.12%)std::panicking::try (6 samples, 0.12%)std::panicking::try::do_call (6 samples, 0.12%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once (6 samples, 0.12%)std::rt::lang_start::_{{closure}} (6 samples, 0.12%)std::sys_common::backtrace::__rust_begin_short_backtrace (6 samples, 0.12%)core::ops::function::FnOnce::call_once (6 samples, 0.12%)pipeline_test::main (6 samples, 0.12%)tokio::runtime::builder::Builder::build (6 samples, 0.12%)tokio::runtime::builder::Builder::build_threaded_runtime (6 samples, 0.12%)tokio::runtime::thread_pool::worker::Launch::launch (6 samples, 0.12%)tokio::runtime::blocking::pool::spawn_blocking (6 samples, 0.12%)tokio::runtime::handle::Handle::spawn_blocking (6 samples, 0.12%)tokio::runtime::handle::Handle::spawn_blocking_inner (6 samples, 0.12%)tokio::runtime::blocking::pool::Spawner::spawn (6 samples, 0.12%)tokio::runtime::blocking::pool::Spawner::spawn_thread (6 samples, 0.12%)std::thread::Builder::spawn (6 samples, 0.12%)std::thread::Builder::spawn_unchecked (6 samples, 0.12%)std::sys::unix::thread::Thread::new (6 samples, 0.12%)__pthread_create_2_1 (6 samples, 0.12%)page_fault (6 samples, 0.12%)__do_page_fault (6 samples, 0.12%)handle_mm_fault (6 samples, 0.12%)__handle_mm_fault (6 samples, 0.12%)do_huge_pmd_anonymous_page (6 samples, 0.12%)clear_huge_page (1 samples, 0.02%)clear_subpage (1 samples, 0.02%)clear_page_rep (1 samples, 0.02%)entry_SYSCALL_64 (5 samples, 0.10%)__ctype_init (2 samples, 0.04%)__sigsetjmp (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (5 samples, 0.10%)do_syscall_64 (5 samples, 0.10%)sigaltstack (6 samples, 0.12%)entry_SYSCALL_64_after_hwframe (6 samples, 0.12%)do_syscall_64 (6 samples, 0.12%)__x64_sys_sigaltstack (6 samples, 0.12%)_copy_to_user (1 samples, 0.02%)copy_user_generic_string (1 samples, 0.02%)get_unmapped_area (3 samples, 0.06%)arch_get_unmapped_area_topdown (2 samples, 0.04%)unmapped_area_topdown (2 samples, 0.04%)do_mmap (5 samples, 0.10%)mmap_region (1 samples, 0.02%)perf_event_mmap (1 samples, 0.02%)perf_iterate_sb (1 samples, 0.02%)perf_iterate_ctx (1 samples, 0.02%)__perf_event_task_sched_out (1 samples, 0.02%)ctx_sched_out (1 samples, 0.02%)amd_pmu_disable_all (1 samples, 0.02%)amd_pmu_wait_on_overflow (1 samples, 0.02%)native_read_msr (1 samples, 0.02%)down_write_killable (2 samples, 0.04%)call_rwsem_down_write_failed_killable (2 samples, 0.04%)rwsem_down_write_failed_killable (2 samples, 0.04%)schedule (2 samples, 0.04%)__schedule (2 samples, 0.04%)pick_next_task_fair (1 samples, 0.02%)load_balance (1 samples, 0.02%)can_migrate_task (1 samples, 0.02%)mmap64 (8 samples, 0.16%)entry_SYSCALL_64_after_hwframe (8 samples, 0.16%)do_syscall_64 (8 samples, 0.16%)ksys_mmap_pgoff (8 samples, 0.16%)vm_mmap_pgoff (8 samples, 0.16%)security_mmap_file (1 samples, 0.02%)pipeline_test (151 samples, 3.04%)pip..clone (143 samples, 2.88%)cl..start_thread (24 samples, 0.48%)std::sys::unix::thread::Thread::new::thread_start (16 samples, 0.32%)std::sys::unix::stack_overflow::Handler::new (15 samples, 0.30%)std::sys::unix::stack_overflow::imp::make_handler (15 samples, 0.30%)std::sys::unix::stack_overflow::imp::get_stack (9 samples, 0.18%)std::sys::unix::stack_overflow::imp::get_stackp (9 samples, 0.18%)sigaltstack (1 samples, 0.02%)entry_SYSCALL_64 (1 samples, 0.02%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_flush (2 samples, 0.04%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write_vectored (2 samples, 0.04%)tokio::net::tcp::stream::TcpStream::poll_write_vectored_priv (2 samples, 0.04%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored (2 samples, 0.04%)tokio::io::driver::registration::Registration::poll_write_io (2 samples, 0.04%)tokio::io::driver::registration::Registration::poll_io (2 samples, 0.04%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored::_{{closure}} (2 samples, 0.04%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored (2 samples, 0.04%)mio::io_source::IoSource<T>::do_io (2 samples, 0.04%)mio::sys::unix::IoSourceState::do_io (2 samples, 0.04%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored::_{{closure}} (2 samples, 0.04%)<&std::fs::File as std::io::Write>::write_vectored (2 samples, 0.04%)std::sys::unix::fs::File::write_vectored (2 samples, 0.04%)std::sys::unix::fd::FileDesc::write_vectored (2 samples, 0.04%)writev (2 samples, 0.04%)entry_SYSCALL_64 (2 samples, 0.04%)__libc_recv (2 samples, 0.04%)entry_SYSCALL_64 (2 samples, 0.04%)[anon] (5 samples, 0.10%)mio::sys::unix::waker::eventfd::Waker::wake (1 samples, 0.02%)<&std::fs::File as std::io::Write>::write (1 samples, 0.02%)std::sys::unix::fs::File::write (1 samples, 0.02%)std::sys::unix::fd::FileDesc::write (1 samples, 0.02%)__libc_write (1 samples, 0.02%)entry_SYSCALL_64 (1 samples, 0.02%)fred::client::RedisClient::connect::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::multiplexer::commands::init::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::multiplexer::Multiplexer::connect_and_flush::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::multiplexer::utils::connect_centralized::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::protocol::connection::create_authenticated_connection::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::protocol::connection::authenticate::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::protocol::connection::request_response::_{{closure}} (1 samples, 0.02%)<futures_util::sink::send::Send<Si,Item> as core::future::future::Future>::poll (1 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::poll_flush (1 samples, 0.02%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_flush (1 samples, 0.02%)tokio_util::util::poll_write_buf (1 samples, 0.02%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write_vectored (1 samples, 0.02%)tokio::net::tcp::stream::TcpStream::poll_write_vectored_priv (1 samples, 0.02%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_write_io (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_io (1 samples, 0.02%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored::_{{closure}} (1 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored (1 samples, 0.02%)mio::io_source::IoSource<T>::do_io (1 samples, 0.02%)mio::sys::unix::IoSourceState::do_io (1 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored::_{{closure}} (1 samples, 0.02%)<&std::fs::File as std::io::Write>::write_vectored (1 samples, 0.02%)std::sys::unix::fs::File::write_vectored (1 samples, 0.02%)std::sys::unix::fd::FileDesc::write_vectored (1 samples, 0.02%)writev (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (1 samples, 0.02%)do_syscall_64 (1 samples, 0.02%)do_writev (1 samples, 0.02%)vfs_writev (1 samples, 0.02%)do_iter_write (1 samples, 0.02%)do_iter_readv_writev (1 samples, 0.02%)sock_write_iter (1 samples, 0.02%)sock_sendmsg (1 samples, 0.02%)tcp_sendmsg (1 samples, 0.02%)tcp_sendmsg_locked (1 samples, 0.02%)__tcp_push_pending_frames (1 samples, 0.02%)tcp_write_xmit (1 samples, 0.02%)__tcp_transmit_skb (1 samples, 0.02%)__ip_queue_xmit (1 samples, 0.02%)ip_output (1 samples, 0.02%)ip_finish_output2 (1 samples, 0.02%)__local_bh_enable_ip (1 samples, 0.02%)do_softirq.part.19 (1 samples, 0.02%)do_softirq_own_stack (1 samples, 0.02%)__softirqentry_text_start (1 samples, 0.02%)net_rx_action (1 samples, 0.02%)process_backlog (1 samples, 0.02%)__netif_receive_skb_one_core (1 samples, 0.02%)ip_rcv (1 samples, 0.02%)nf_hook_slow (1 samples, 0.02%)ipv4_conntrack_in (1 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::poll_ready (1 samples, 0.02%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_ready (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)<log::Level as core::cmp::PartialOrd<log::LevelFilter>>::le (1 samples, 0.02%)alloc::vec::Vec<T,A>::as_mut_ptr (1 samples, 0.02%)[libc-2.28.so] (4 samples, 0.08%)cfree (2 samples, 0.04%)core::ptr::drop_in_place<redis_protocol::types::Frame> (9 samples, 0.18%)core::ptr::drop_in_place<alloc::vec::Vec<redis_protocol::types::Frame>> (8 samples, 0.16%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (8 samples, 0.16%)core::ptr::drop_in_place<[redis_protocol::types::Frame]> (7 samples, 0.14%)core::ptr::drop_in_place<redis_protocol::types::Frame> (1 samples, 0.02%)fred::metrics::SizeStats::sample (4 samples, 0.08%)core::num::<impl usize>::saturating_add (1 samples, 0.02%)lock_api::rwlock::RwLock<R,T>::write (2 samples, 0.04%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (2 samples, 0.04%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (20 samples, 0.40%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (20 samples, 0.40%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (19 samples, 0.38%)fred::protocol::codec::encode_frame (19 samples, 0.38%)redis_protocol::encode::encode_bytes (3 samples, 0.06%)redis_protocol::encode::attempt_encoding (2 samples, 0.04%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (26 samples, 0.52%)<&mut S as futures_sink::Sink<Item>>::poll_ready (26 samples, 0.52%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (26 samples, 0.52%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (26 samples, 0.52%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (26 samples, 0.52%)[libc-2.28.so] (5 samples, 0.10%)core::ptr::drop_in_place<redis_protocol::types::Frame> (1 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::Vec<redis_protocol::types::Frame>> (1 samples, 0.02%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<redis_protocol::types::Frame>> (1 samples, 0.02%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.02%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (2 samples, 0.04%)<&mut S as futures_sink::Sink<Item>>::poll_ready (2 samples, 0.04%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (2 samples, 0.04%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (2 samples, 0.04%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (2 samples, 0.04%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (2 samples, 0.04%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (2 samples, 0.04%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (2 samples, 0.04%)fred::protocol::codec::encode_frame (2 samples, 0.04%)fred::metrics::SizeStats::sample (1 samples, 0.02%)bytes::bytes_mut::BytesMut::is_empty (1 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (3 samples, 0.06%)bytes::bytes_mut::BytesMut::set_start (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_ready (5 samples, 0.10%)tokio::io::driver::Handle::inner (3 samples, 0.06%)alloc::sync::Weak<T>::upgrade (3 samples, 0.06%)__fdget_pos (9 samples, 0.18%)__fget_light (9 samples, 0.18%)__fget (8 samples, 0.16%)__fsnotify_parent (1 samples, 0.02%)inet_sendmsg (3 samples, 0.06%)security_socket_sendmsg (3 samples, 0.06%)aa_sk_perm (1 samples, 0.02%)__local_bh_enable_ip (1 samples, 0.02%)lock_sock_nested (3 samples, 0.06%)_raw_spin_lock_bh (3 samples, 0.06%)native_queued_spin_lock_slowpath (1 samples, 0.02%)_raw_spin_lock_irqsave (1 samples, 0.02%)__tcp_push_pending_frames (4 samples, 0.08%)tcp_write_xmit (4 samples, 0.08%)__tcp_transmit_skb (4 samples, 0.08%)__ip_queue_xmit (4 samples, 0.08%)ip_output (4 samples, 0.08%)ip_finish_output2 (4 samples, 0.08%)__local_bh_enable_ip (4 samples, 0.08%)do_softirq.part.19 (4 samples, 0.08%)do_softirq_own_stack (4 samples, 0.08%)__softirqentry_text_start (4 samples, 0.08%)net_rx_action (4 samples, 0.08%)process_backlog (4 samples, 0.08%)__netif_receive_skb_one_core (4 samples, 0.08%)ip_rcv (4 samples, 0.08%)ip_local_deliver (4 samples, 0.08%)ip_local_deliver_finish (4 samples, 0.08%)tcp_v4_rcv (4 samples, 0.08%)tcp_v4_do_rcv (4 samples, 0.08%)tcp_rcv_established (4 samples, 0.08%)sock_def_readable (3 samples, 0.06%)__wake_up_common_lock (3 samples, 0.06%)__wake_up_common (3 samples, 0.06%)ep_poll_callback (3 samples, 0.06%)__wake_up_common (3 samples, 0.06%)try_to_wake_up (3 samples, 0.06%)select_task_rq_fair (1 samples, 0.02%)select_idle_sibling (1 samples, 0.02%)available_idle_cpu (1 samples, 0.02%)sock_def_readable (1 samples, 0.02%)__wake_up_common_lock (1 samples, 0.02%)__wake_up_common (1 samples, 0.02%)ep_poll_callback (1 samples, 0.02%)_raw_spin_lock_irqsave (1 samples, 0.02%)__release_sock (6 samples, 0.12%)tcp_v4_do_rcv (6 samples, 0.12%)tcp_rcv_established (6 samples, 0.12%)tcp_ack (1 samples, 0.02%)__kfree_skb (1 samples, 0.02%)kfree (1 samples, 0.02%)release_sock (8 samples, 0.16%)tcp_release_cb (1 samples, 0.02%)__sk_dst_check (2 samples, 0.04%)ipv4_dst_check (1 samples, 0.02%)ip_send_check (6 samples, 0.12%)__nf_conntrack_find_get (4 samples, 0.08%)get_l4proto (3 samples, 0.06%)hash_conntrack_raw (1 samples, 0.02%)tcp_error (1 samples, 0.02%)_raw_spin_lock_bh (2 samples, 0.04%)nf_conntrack_in (24 samples, 0.48%)tcp_packet (11 samples, 0.22%)nf_ct_seq_offset (3 samples, 0.06%)nf_nat_ipv4_local_fn (2 samples, 0.04%)nf_nat_ipv4_fn (1 samples, 0.02%)ip_local_out (34 samples, 0.68%)__ip_local_out (34 samples, 0.68%)nf_hook_slow (28 samples, 0.56%)nft_do_chain_ipv4 (2 samples, 0.04%)nft_do_chain (2 samples, 0.04%)ip_finish_output (2 samples, 0.04%)netif_rx_internal (3 samples, 0.06%)enqueue_to_backlog (2 samples, 0.04%)sk_free (1 samples, 0.02%)refcount_sub_and_test_checked (1 samples, 0.02%)dev_hard_start_xmit (13 samples, 0.26%)loopback_xmit (11 samples, 0.22%)tcp_wfree (4 samples, 0.08%)refcount_sub_and_test_checked (2 samples, 0.04%)netdev_pick_tx (1 samples, 0.02%)__dev_queue_xmit (27 samples, 0.54%)validate_xmit_skb (8 samples, 0.16%)netif_skb_features (5 samples, 0.10%)skb_network_protocol (1 samples, 0.02%)__kfree_skb_flush (2 samples, 0.04%)raw_local_deliver (2 samples, 0.04%)inet_ehashfn (2 samples, 0.04%)__inet_lookup_established (9 samples, 0.18%)refcount_inc_not_zero_checked (2 samples, 0.04%)_raw_spin_lock (1 samples, 0.02%)__cgroup_bpf_run_filter_skb (1 samples, 0.02%)sk_filter_trim_cap (2 samples, 0.04%)security_sock_rcv_skb (1 samples, 0.02%)ipv4_dst_check (2 samples, 0.04%)__tcp_ack_snd_check (1 samples, 0.02%)sched_clock_cpu (1 samples, 0.02%)sched_clock (1 samples, 0.02%)native_sched_clock (1 samples, 0.02%)sk_reset_timer (3 samples, 0.06%)mod_timer (1 samples, 0.02%)kfree (1 samples, 0.02%)__kfree_skb (4 samples, 0.08%)skb_release_data (3 samples, 0.06%)bictcp_acked (2 samples, 0.04%)kfree_skbmem (1 samples, 0.02%)kmem_cache_free (3 samples, 0.06%)__slab_free (3 samples, 0.06%)tcp_ack_update_rtt.isra.49 (3 samples, 0.06%)tcp_rate_gen (1 samples, 0.02%)tcp_rearm_rto (2 samples, 0.04%)tcp_ack (33 samples, 0.66%)tcp_update_pacing_rate (5 samples, 0.10%)_raw_spin_lock_irqsave (1 samples, 0.02%)sched_clock_cpu (1 samples, 0.02%)sched_clock (1 samples, 0.02%)native_sched_clock (1 samples, 0.02%)select_task_rq_fair (4 samples, 0.08%)ttwu_do_activate (1 samples, 0.02%)enqueue_task_fair (1 samples, 0.02%)__wake_up_common (20 samples, 0.40%)try_to_wake_up (16 samples, 0.32%)ttwu_do_wakeup (1 samples, 0.02%)sock_def_readable (33 samples, 0.66%)__wake_up_common_lock (29 samples, 0.58%)__wake_up_common (29 samples, 0.58%)ep_poll_callback (29 samples, 0.58%)_raw_spin_lock_irqsave (7 samples, 0.14%)tcp_event_data_recv (1 samples, 0.02%)tcp_v4_do_rcv (85 samples, 1.71%)tcp_rcv_established (82 samples, 1.65%)tcp_data_queue (42 samples, 0.85%)tcp_queue_rcv (3 samples, 0.06%)tcp_v4_fill_cb (3 samples, 0.06%)ip_local_deliver_finish (114 samples, 2.29%)i..tcp_v4_rcv (110 samples, 2.21%)t..tcp_v4_inbound_md5_hash (1 samples, 0.02%)tcp_parse_md5sig_option (1 samples, 0.02%)ipv4_confirm (3 samples, 0.06%)nf_ct_deliver_cached_events (3 samples, 0.06%)ipv4_helper (2 samples, 0.04%)ip_local_deliver (123 samples, 2.48%)ip..nf_hook_slow (9 samples, 0.18%)nft_do_chain_ipv4 (3 samples, 0.06%)nft_do_chain (1 samples, 0.02%)ip_rcv_core.isra.19 (2 samples, 0.04%)ip_rcv_finish (1 samples, 0.02%)ipv4_conntrack_defrag (1 samples, 0.02%)net_rx_action (148 samples, 2.98%)net..process_backlog (141 samples, 2.84%)pr..__netif_receive_skb_one_core (140 samples, 2.82%)__..ip_rcv (139 samples, 2.80%)ip..nf_hook_slow (11 samples, 0.22%)nf_nat_ipv4_in (3 samples, 0.06%)nf_nat_packet (1 samples, 0.02%)ip_finish_output2 (188 samples, 3.78%)ip_f..__local_bh_enable_ip (156 samples, 3.14%)__l..do_softirq.part.19 (155 samples, 3.12%)do_..do_softirq_own_stack (155 samples, 3.12%)do_..__softirqentry_text_start (154 samples, 3.10%)__s..run_timer_softirq (1 samples, 0.02%)ip_finish_output (1 samples, 0.02%)__cgroup_bpf_run_filter_skb (1 samples, 0.02%)ipv4_confirm (2 samples, 0.04%)nf_ct_deliver_cached_events (2 samples, 0.04%)ipv4_helper (1 samples, 0.02%)__ip_queue_xmit (238 samples, 4.79%)__ip_q..ip_output (201 samples, 4.05%)ip_o..nf_hook_slow (6 samples, 0.12%)nf_nat_ipv4_out (1 samples, 0.02%)nf_nat_packet (1 samples, 0.02%)__list_add_valid (1 samples, 0.02%)__skb_clone (6 samples, 0.12%)__copy_skb_header (4 samples, 0.08%)bictcp_cwnd_event (2 samples, 0.04%)refcount_add_checked (2 samples, 0.04%)refcount_add_not_zero_checked (2 samples, 0.04%)skb_clone (2 samples, 0.04%)tcp_established_options (1 samples, 0.02%)tcp_rate_skb_sent (1 samples, 0.02%)__tcp_transmit_skb (264 samples, 5.31%)__tcp_t..tcp_v4_send_check (3 samples, 0.06%)sched_clock_cpu (2 samples, 0.04%)sched_clock (2 samples, 0.04%)native_sched_clock (2 samples, 0.04%)tcp_rbtree_insert (1 samples, 0.02%)__tcp_push_pending_frames (278 samples, 5.59%)__tcp_p..tcp_write_xmit (278 samples, 5.59%)tcp_wri..tcp_event_new_data_sent (2 samples, 0.04%)tcp_rearm_rto (1 samples, 0.02%)copyin (3 samples, 0.06%)copy_user_generic_string (3 samples, 0.06%)_copy_from_iter_full (4 samples, 0.08%)iov_iter_advance (1 samples, 0.02%)__kmalloc_reserve.isra.49 (8 samples, 0.16%)__kmalloc_node_track_caller (7 samples, 0.14%)_cond_resched (1 samples, 0.02%)rcu_all_qs (1 samples, 0.02%)kmem_cache_alloc_node (5 samples, 0.10%)sk_stream_alloc_skb (29 samples, 0.58%)__alloc_skb (27 samples, 0.54%)ksize (10 samples, 0.20%)skb_entail (1 samples, 0.02%)tcp_chrono_start (1 samples, 0.02%)skb_put (2 samples, 0.04%)tcp_push (2 samples, 0.04%)tcp_rate_check_app_limited (3 samples, 0.06%)tcp_send_mss (7 samples, 0.14%)tcp_current_mss (7 samples, 0.14%)ipv4_mtu (3 samples, 0.06%)do_iter_readv_writev (359 samples, 7.22%)do_iter_re..sock_write_iter (356 samples, 7.16%)sock_write..sock_sendmsg (356 samples, 7.16%)sock_sendm..tcp_sendmsg (348 samples, 7.00%)tcp_sendm..tcp_sendmsg_locked (335 samples, 6.74%)tcp_sendm..tcp_tx_timestamp (1 samples, 0.02%)fsnotify (1 samples, 0.02%)rw_verify_area (3 samples, 0.06%)do_iter_write (374 samples, 7.53%)do_iter_wr..security_file_permission (6 samples, 0.12%)common_file_perm (3 samples, 0.06%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::poll_flush (418 samples, 8.41%)<tokio_util:..<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_flush (418 samples, 8.41%)<tokio_util:..tokio_util::util::poll_write_buf (417 samples, 8.39%)tokio_util::..<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write_vectored (412 samples, 8.29%)<tokio::net:..tokio::net::tcp::stream::TcpStream::poll_write_vectored_priv (411 samples, 8.27%)tokio::net::..tokio::io::poll_evented::PollEvented<E>::poll_write_vectored (411 samples, 8.27%)tokio::io::p..tokio::io::driver::registration::Registration::poll_write_io (411 samples, 8.27%)tokio::io::d..tokio::io::driver::registration::Registration::poll_io (409 samples, 8.23%)tokio::io::..tokio::io::poll_evented::PollEvented<E>::poll_write_vectored::_{{closure}} (401 samples, 8.07%)tokio::io::..<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored (401 samples, 8.07%)<&mio::net:..mio::io_source::IoSource<T>::do_io (400 samples, 8.05%)mio::io_sou..mio::sys::unix::IoSourceState::do_io (400 samples, 8.05%)mio::sys::u..<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored::_{{closure}} (400 samples, 8.05%)<&mio::net:..<&std::fs::File as std::io::Write>::write_vectored (400 samples, 8.05%)<&std::fs::..std::sys::unix::fs::File::write_vectored (400 samples, 8.05%)std::sys::u..std::sys::unix::fd::FileDesc::write_vectored (400 samples, 8.05%)std::sys::u..writev (400 samples, 8.05%)writeventry_SYSCALL_64_after_hwframe (398 samples, 8.01%)entry_SYSCA..do_syscall_64 (398 samples, 8.01%)do_syscall_..do_writev (397 samples, 7.99%)do_writevvfs_writev (385 samples, 7.75%)vfs_writevimport_iovec (8 samples, 0.16%)rw_copy_check_uvector (6 samples, 0.12%)_copy_from_user (6 samples, 0.12%)copy_user_generic_string (4 samples, 0.08%)[libc-2.28.so] (1 samples, 0.02%)cfree (2 samples, 0.04%)[libc-2.28.so] (4 samples, 0.08%)core::ptr::drop_in_place<redis_protocol::types::Frame> (5 samples, 0.10%)core::ptr::drop_in_place<alloc::vec::Vec<redis_protocol::types::Frame>> (5 samples, 0.10%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (5 samples, 0.10%)core::ptr::drop_in_place<[redis_protocol::types::Frame]> (5 samples, 0.10%)core::ptr::drop_in_place<redis_protocol::types::Frame> (1 samples, 0.02%)redis_protocol::encode::attempt_encoding (2 samples, 0.04%)redis_protocol::encode::gen_array (1 samples, 0.02%)bytes::bytes_mut::BytesMut::extend_from_slice (1 samples, 0.02%)fred::multiplexer::commands::init::_{{closure}}::_{{closure}}::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::multiplexer::commands::handle_command_t::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::multiplexer::commands::handle_command::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::multiplexer::commands::write_command_t::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::multiplexer::commands::write_command::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::multiplexer::Multiplexer::write::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::multiplexer::utils::write_centralized_command::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::multiplexer::utils::write_command::_{{closure}} (459 samples, 9.24%)fred::multipl..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (459 samples, 9.24%)<core::future..fred::protocol::connection::write_command::_{{closure}} (459 samples, 9.24%)fred::protoco..<futures_util::sink::send::Send<Si,Item> as core::future::future::Future>::poll (433 samples, 8.71%)<futures_uti..<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_flush (431 samples, 8.67%)<futures_uti..futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (13 samples, 0.26%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (13 samples, 0.26%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (13 samples, 0.26%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (13 samples, 0.26%)fred::protocol::codec::encode_frame (13 samples, 0.26%)redis_protocol::encode::encode_bytes (5 samples, 0.10%)redis_protocol::utils::zero_extend (2 samples, 0.04%)log::max_level (1 samples, 0.02%)core::sync::atomic::AtomicUsize::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)[libc-2.28.so] (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (3 samples, 0.06%)[libc-2.28.so] (4 samples, 0.08%)<F as futures_core::future::TryFuture>::try_poll (26 samples, 0.52%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (26 samples, 0.52%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (17 samples, 0.34%)core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::responses::process_centralized_frame::{{closure}}>> (3 samples, 0.06%)core::ptr::drop_in_place<fred::multiplexer::responses::process_centralized_frame::{{closure}}> (3 samples, 0.06%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (2 samples, 0.04%)[libc-2.28.so] (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (2 samples, 0.04%)bytes::bytes_mut::BytesMut::set_start (1 samples, 0.02%)bytes::bytes_mut::BytesMut::split_to (2 samples, 0.04%)bytes::bytes_mut::BytesMut::shallow_clone (1 samples, 0.02%)bytes::bytes_mut::increment_shared (1 samples, 0.02%)bytes::bytes_mut::BytesMut::kind (2 samples, 0.04%)core::ptr::drop_in_place<bytes::bytes_mut::BytesMut> (3 samples, 0.06%)<bytes::bytes_mut::BytesMut as core::ops::drop::Drop>::drop (3 samples, 0.06%)bytes::bytes_mut::release_shared (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,fred::metrics::SizeStats>> (3 samples, 0.06%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (3 samples, 0.06%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (3 samples, 0.06%)fred::metrics::SizeStats::sample (6 samples, 0.12%)core::num::<impl usize>::saturating_add (1 samples, 0.02%)lock_api::rwlock::RwLock<R,T>::write (2 samples, 0.04%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (2 samples, 0.04%)redis_protocol::decode::frame_type (4 samples, 0.08%)core::str::converts::from_utf8 (7 samples, 0.14%)core::str::validations::run_utf8_validation (7 samples, 0.14%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (1 samples, 0.02%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (1 samples, 0.02%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)core::slice::index::<impl core::ops::index::Index<I> for [T]>::index (1 samples, 0.02%)<core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::index (1 samples, 0.02%)core::sync::atomic::AtomicPtr<T>::load (2 samples, 0.04%)core::sync::atomic::atomic_load (2 samples, 0.04%)memchr::memchr::x86::avx::forward_search1 (1 samples, 0.02%)redis_protocol::decode::read_to_crlf_s (25 samples, 0.50%)redis_protocol::decode::read_to_crlf (15 samples, 0.30%)<&[u8] as nom::traits::FindSubstring<&[u8]>>::find_substring (14 samples, 0.28%)memchr::memchr::memchr (9 samples, 0.18%)memchr::memchr::memchr::imp (9 samples, 0.18%)memchr::memchr::x86::memchr (9 samples, 0.18%)memchr::memchr::x86::avx::memchr (7 samples, 0.14%)memchr::memchr::x86::sse2::memchr (3 samples, 0.06%)core::cmp::min (1 samples, 0.02%)core::cmp::Ord::min (1 samples, 0.02%)core::cmp::min_by (1 samples, 0.02%)<i64 as core::num::FromStrRadixHelper>::checked_add (2 samples, 0.04%)<i64 as core::num::FromStrRadixHelper>::checked_mul (1 samples, 0.02%)core::num::<impl i64>::checked_mul (1 samples, 0.02%)core::num::<impl i64>::overflowing_mul (1 samples, 0.02%)<fred::protocol::codec::RedisCodec as tokio_util::codec::decoder::Decoder>::decode (68 samples, 1.37%)fred::protocol::codec::decode_frame (66 samples, 1.33%)redis_protocol::decode::decode_bytes (43 samples, 0.87%)redis_protocol::decode::decode (41 samples, 0.83%)redis_protocol::decode::parse_frame (38 samples, 0.76%)redis_protocol::decode::parse_integer (31 samples, 0.62%)redis_protocol::decode::to_i64 (6 samples, 0.12%)core::str::<impl str>::parse (6 samples, 0.12%)core::num::<impl core::str::traits::FromStr for i64>::from_str (6 samples, 0.12%)core::num::from_str_radix (6 samples, 0.12%)core::str::<impl str>::is_empty (1 samples, 0.02%)<tokio_util::codec::framed_impl::RWFrames as core::borrow::BorrowMut<tokio_util::codec::framed_impl::ReadFrame>>::borrow_mut (2 samples, 0.04%)log::max_level (1 samples, 0.02%)core::sync::atomic::AtomicUsize::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::chunk_mut (1 samples, 0.02%)bytes::bytes_mut::BytesMut::uninit_slice (1 samples, 0.02%)bytes::buf::uninit_slice::UninitSlice::from_raw_parts_mut (1 samples, 0.02%)std::io::error::Error::kind (1 samples, 0.02%)std::sys::unix::decode_error_kind (1 samples, 0.02%)tokio::io::driver::registration::Registration::clear_readiness (1 samples, 0.02%)tokio::io::driver::scheduled_io::ScheduledIo::clear_readiness (1 samples, 0.02%)<tokio::io::driver::ready::Ready as core::ops::arith::Sub>::sub (1 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::io::driver::Inner>>> (1 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::io::driver::Inner>> (1 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_ready (3 samples, 0.06%)tokio::io::driver::scheduled_io::ScheduledIo::poll_readiness (1 samples, 0.02%)tokio::io::driver::Direction::mask (1 samples, 0.02%)__slab_free (1 samples, 0.02%)skb_free_head (1 samples, 0.02%)dst_release (1 samples, 0.02%)skb_release_all (3 samples, 0.06%)skb_release_head_state (2 samples, 0.04%)sock_rfree (1 samples, 0.02%)__kfree_skb (9 samples, 0.18%)skb_release_data (4 samples, 0.08%)_raw_spin_unlock_bh (1 samples, 0.02%)kfree_skbmem (2 samples, 0.04%)refcount_sub_and_test_checked (2 samples, 0.04%)lock_sock_nested (4 samples, 0.08%)_raw_spin_lock_bh (4 samples, 0.08%)native_queued_spin_lock_slowpath (4 samples, 0.08%)__check_object_size (3 samples, 0.06%)__virt_addr_valid (1 samples, 0.02%)skb_copy_datagram_iter (7 samples, 0.14%)_copy_to_iter (3 samples, 0.06%)copyout (2 samples, 0.04%)copy_user_generic_string (2 samples, 0.04%)tcp_cleanup_rbuf (1 samples, 0.02%)__tcp_select_window (1 samples, 0.02%)inet_recvmsg (29 samples, 0.58%)tcp_recvmsg (29 samples, 0.58%)tcp_rcv_space_adjust (4 samples, 0.08%)sched_clock_cpu (3 samples, 0.06%)sched_clock (3 samples, 0.06%)native_sched_clock (3 samples, 0.06%)sock_recvmsg (2 samples, 0.04%)security_socket_recvmsg (1 samples, 0.02%)apparmor_socket_recvmsg (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (40 samples, 0.80%)do_syscall_64 (40 samples, 0.80%)__x64_sys_recvfrom (38 samples, 0.76%)__sys_recvfrom (38 samples, 0.76%)sockfd_lookup_light (6 samples, 0.12%)__fget_light (5 samples, 0.10%)__fget (4 samples, 0.08%)__libc_recv (41 samples, 0.83%)syscall_return_via_sysret (1 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_core::stream::Stream>::poll_next (135 samples, 2.72%)<t..<tokio_util::codec::framed_impl::FramedImpl<T,U,R> as futures_core::stream::Stream>::poll_next (135 samples, 2.72%)<t..tokio_util::util::poll_read_buf (57 samples, 1.15%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_read::AsyncRead>::poll_read (56 samples, 1.13%)tokio::net::tcp::stream::TcpStream::poll_read_priv (54 samples, 1.09%)tokio::io::poll_evented::PollEvented<E>::poll_read (54 samples, 1.09%)tokio::io::driver::registration::Registration::poll_read_io (54 samples, 1.09%)tokio::io::driver::registration::Registration::poll_io (53 samples, 1.07%)tokio::io::poll_evented::PollEvented<E>::poll_read::_{{closure}} (46 samples, 0.93%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read (46 samples, 0.93%)mio::io_source::IoSource<T>::do_io (46 samples, 0.93%)mio::sys::unix::IoSourceState::do_io (46 samples, 0.93%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read::_{{closure}} (46 samples, 0.93%)<&std::net::tcp::TcpStream as std::io::Read>::read (46 samples, 0.93%)std::sys_common::net::TcpStream::read (45 samples, 0.91%)std::sys::unix::net::Socket::read (45 samples, 0.91%)std::sys::unix::net::Socket::recv_with_flags (45 samples, 0.91%)std::sys::unix::cvt (3 samples, 0.06%)std::io::error::Error::last_os_error (2 samples, 0.04%)std::sys::unix::os::errno (2 samples, 0.04%)__errno_location (2 samples, 0.04%)core::ptr::drop_in_place<futures_util::lock::bilock::BiLockGuard<tokio_util::codec::framed::Framed<tokio::net::tcp::stream::TcpStream,fred::protocol::codec::RedisCodec>>> (4 samples, 0.08%)<futures_util::lock::bilock::BiLockGuard<T> as core::ops::drop::Drop>::drop (4 samples, 0.08%)futures_util::lock::bilock::BiLock<T>::unlock (4 samples, 0.08%)<S as futures_core::stream::TryStream>::try_poll_next (145 samples, 2.92%)<S..<futures_util::stream::stream::split::SplitStream<S> as futures_core::stream::Stream>::poll_next (144 samples, 2.90%)<f..futures_util::lock::bilock::BiLock<T>::poll_lock (5 samples, 0.10%)core::option::Option<T>::unwrap_or_else (1 samples, 0.02%)futures_util::lock::bilock::BiLock<T>::poll_lock::_{{closure}} (1 samples, 0.02%)alloc::boxed::Box<T>::new (1 samples, 0.02%)alloc::alloc::exchange_malloc (1 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.02%)alloc::alloc::Global::alloc_impl (1 samples, 0.02%)alloc::alloc::alloc (1 samples, 0.02%)__libc_malloc (1 samples, 0.02%)[libc-2.28.so] (7 samples, 0.14%)core::option::Option<T>::is_some (1 samples, 0.02%)[libc-2.28.so] (6 samples, 0.12%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (200 samples, 4.02%)fred..<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (200 samples, 4.02%)fred..core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (200 samples, 4.02%)core..fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (200 samples, 4.02%)fred..futures_util::future::future::FutureExt::poll_unpin (200 samples, 4.02%)futu..<core::pin::Pin<P> as core::future::future::Future>::poll (200 samples, 4.02%)<cor..<core::pin::Pin<P> as core::future::future::Future>::poll (200 samples, 4.02%)<cor..<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<F as futures_core::future::TryFuture>::try_poll (200 samples, 4.02%)<F a..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..<F as futures_core::future::TryFuture>::try_poll (200 samples, 4.02%)<F a..<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (200 samples, 4.02%)<fut..core::pin::Pin<P>::set (18 samples, 0.36%)core::ptr::drop_in_place<core::option::Option<core::future::from_generator::GenFuture<fred::multiplexer::utils::spawn_centralized_listener::{{closure}}::{{closure}}::{{closure}}>>> (5 samples, 0.10%)core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::utils::spawn_centralized_listener::{{closure}}::{{closure}}::{{closure}}>> (1 samples, 0.02%)core::ptr::drop_in_place<fred::multiplexer::utils::spawn_centralized_listener::{{closure}}::{{closure}}::{{closure}}> (1 samples, 0.02%)__list_add_valid (1 samples, 0.02%)__sched_yield (3 samples, 0.06%)entry_SYSCALL_64_after_hwframe (3 samples, 0.06%)do_syscall_64 (3 samples, 0.06%)__x64_sys_sched_yield (3 samples, 0.06%)schedule (3 samples, 0.06%)__schedule (3 samples, 0.06%)pick_next_task_fair (3 samples, 0.06%)update_curr (1 samples, 0.02%)__calc_delta (1 samples, 0.02%)std::thread::yield_now (1 samples, 0.02%)std::sys::unix::thread::Thread::yield_now (1 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::tx_release (1 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::tx_release::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (674 samples, 13.56%)<core::future::from_..pipeline_test::spawn_client_task::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (14 samples, 0.28%)fred::client::RedisClient::incr::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (14 samples, 0.28%)fred::commands::keys::incr::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (14 samples, 0.28%)fred::commands::one_arg_value_cmd::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (14 samples, 0.28%)fred::utils::request_response::_{{closure}} (14 samples, 0.28%)fred::utils::send_command (14 samples, 0.28%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (14 samples, 0.28%)tokio::sync::mpsc::chan::Tx<T,S>::send (14 samples, 0.28%)tokio::sync::mpsc::chan::Chan<T,S>::send (14 samples, 0.28%)tokio::sync::mpsc::list::Tx<T>::push (14 samples, 0.28%)tokio::sync::mpsc::list::Tx<T>::find_block (14 samples, 0.28%)tokio::sync::mpsc::block::start_index (1 samples, 0.02%)__rust_probestack (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)fred::client::RedisClientInner::log_client_name_fn (1 samples, 0.02%)core::option::Option<T>::take (1 samples, 0.02%)core::mem::take (1 samples, 0.02%)core::mem::replace (1 samples, 0.02%)core::mem::swap (1 samples, 0.02%)core::ptr::swap_nonoverlapping_one (1 samples, 0.02%)core::ptr::read (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>> (2 samples, 0.04%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.04%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (2 samples, 0.04%)fred::multiplexer::responses::check_command_resp_tx (13 samples, 0.26%)fred::protocol::types::RedisCommand::take_resp_tx (13 samples, 0.26%)fred::utils::take_locked (13 samples, 0.26%)lock_api::rwlock::RwLock<R,T>::write (10 samples, 0.20%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (10 samples, 0.20%)[libc-2.28.so] (2 samples, 0.04%)alloc::sync::Arc<T>::drop_slow (8 samples, 0.16%)core::mem::drop (8 samples, 0.16%)core::ptr::drop_in_place<alloc::sync::Weak<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>>> (8 samples, 0.16%)<alloc::sync::Weak<T> as core::ops::drop::Drop>::drop (8 samples, 0.16%)core::ptr::drop_in_place<alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>>> (17 samples, 0.34%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (17 samples, 0.34%)cfree (1 samples, 0.02%)[libc-2.28.so] (8 samples, 0.16%)cfree (5 samples, 0.10%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (24 samples, 0.48%)core::ptr::drop_in_place<[fred::types::RedisValue]> (24 samples, 0.48%)core::ptr::drop_in_place<fred::types::RedisValue> (11 samples, 0.22%)[libc-2.28.so] (12 samples, 0.24%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (16 samples, 0.32%)alloc::alloc::dealloc (16 samples, 0.32%)cfree (4 samples, 0.08%)core::ptr::drop_in_place<alloc::vec::Vec<fred::types::RedisValue>> (41 samples, 0.83%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<fred::types::RedisValue>> (17 samples, 0.34%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (17 samples, 0.34%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.02%)core::ptr::drop_in_place<fred::protocol::types::RedisCommandKind> (1 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>>> (1 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)[libc-2.28.so] (10 samples, 0.20%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (11 samples, 0.22%)tokio::sync::oneshot::Sender<T>::send::_{{closure}} (11 samples, 0.22%)core::ptr::drop_in_place<core::option::Option<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>> (1 samples, 0.02%)tokio::sync::oneshot::State::set_complete (15 samples, 0.30%)core::sync::atomic::AtomicUsize::fetch_or (15 samples, 0.30%)core::sync::atomic::atomic_or (15 samples, 0.30%)tokio::runtime::task::harness::Harness<T,S>::to_task (1 samples, 0.02%)tokio::runtime::task::harness::SchedulerView<S>::to_task (1 samples, 0.02%)tokio::runtime::task::Task<S>::from_raw (1 samples, 0.02%)tokio::runtime::task::raw::RawTask::from_raw (1 samples, 0.02%)tokio::runtime::task::waker::wake_by_ref (21 samples, 0.42%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (19 samples, 0.38%)tokio::runtime::task::state::State::transition_to_notified (17 samples, 0.34%)core::sync::atomic::AtomicUsize::fetch_or (17 samples, 0.34%)core::sync::atomic::atomic_or (17 samples, 0.34%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_td_cleanup (1 samples, 0.02%)xhci_giveback_urb_in_irq.isra.40 (1 samples, 0.02%)__usb_hcd_giveback_urb (1 samples, 0.02%)snd_complete_urb (1 samples, 0.02%)usb_hcd_submit_urb (1 samples, 0.02%)xhci_urb_enqueue (1 samples, 0.02%)xhci_queue_isoc_tx_prepare (1 samples, 0.02%)std::thread::local::LocalKey<T>::with (2 samples, 0.04%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.04%)tokio::runtime::thread_pool::worker::CURRENT::FOO::__getit (2 samples, 0.04%)std::thread::local::fast::Key<T>::get (2 samples, 0.04%)std::thread::local::lazy::LazyKeyInner<T>::get (2 samples, 0.04%)core::option::Option<T>::as_ref (2 samples, 0.04%)core::option::Option<T>::as_mut (1 samples, 0.02%)core::option::Option<T>::take (1 samples, 0.02%)core::mem::take (1 samples, 0.02%)core::mem::replace (1 samples, 0.02%)core::mem::swap (1 samples, 0.02%)core::ptr::swap_nonoverlapping_one (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)__fdget_pos (2 samples, 0.04%)__fget_light (2 samples, 0.04%)__fget (2 samples, 0.04%)_raw_spin_lock_irqsave (2 samples, 0.04%)select_idle_sibling (1 samples, 0.02%)available_idle_cpu (1 samples, 0.02%)select_task_rq_fair (3 samples, 0.06%)update_cfs_rq_h_load (1 samples, 0.02%)account_entity_enqueue (1 samples, 0.02%)ttwu_do_activate (3 samples, 0.06%)enqueue_task_fair (3 samples, 0.06%)enqueue_entity (3 samples, 0.06%)update_load_avg (2 samples, 0.04%)__update_load_avg_cfs_rq (1 samples, 0.02%)ttwu_do_wakeup (2 samples, 0.04%)check_preempt_curr (1 samples, 0.02%)resched_curr (1 samples, 0.02%)__wake_up_common (15 samples, 0.30%)try_to_wake_up (15 samples, 0.30%)update_rq_clock (1 samples, 0.02%)sched_clock_cpu (1 samples, 0.02%)sched_clock (1 samples, 0.02%)native_sched_clock (1 samples, 0.02%)__wake_up_common (19 samples, 0.38%)ep_poll_callback (19 samples, 0.38%)_raw_spin_lock_irqsave (4 samples, 0.08%)_copy_from_user (1 samples, 0.02%)copy_user_generic_string (1 samples, 0.02%)eventfd_write (21 samples, 0.42%)_raw_spin_lock_irq (1 samples, 0.02%)<tokio::io::driver::Handle as tokio::park::Unpark>::unpark (24 samples, 0.48%)tokio::io::driver::Handle::wakeup (24 samples, 0.48%)mio::sys::unix::waker::eventfd::Waker::wake (24 samples, 0.48%)<&std::fs::File as std::io::Write>::write (24 samples, 0.48%)std::sys::unix::fs::File::write (24 samples, 0.48%)std::sys::unix::fd::FileDesc::write (24 samples, 0.48%)__libc_write (24 samples, 0.48%)entry_SYSCALL_64_after_hwframe (24 samples, 0.48%)do_syscall_64 (24 samples, 0.48%)ksys_write (24 samples, 0.48%)vfs_write (22 samples, 0.44%)security_file_permission (1 samples, 0.02%)common_file_perm (1 samples, 0.02%)<tokio::park::either::Either<A,B> as tokio::park::Unpark>::unpark (1 samples, 0.02%)<tokio::runtime::park::Unparker as tokio::park::Unpark>::unpark (10 samples, 0.20%)tokio::runtime::park::Inner::unpark (10 samples, 0.20%)_nv020074rm (1 samples, 0.02%)_raw_spin_lock_irqsave (1 samples, 0.02%)default_send_IPI_single_phys (1 samples, 0.02%)entry_SYSCALL_64 (2 samples, 0.04%)get_futex_key (2 samples, 0.04%)__unqueue_futex (2 samples, 0.04%)plist_del (2 samples, 0.04%)mark_wake_futex (17 samples, 0.34%)wake_q_add (5 samples, 0.10%)_raw_spin_unlock_irqrestore (3 samples, 0.06%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_td_cleanup (1 samples, 0.02%)xhci_giveback_urb_in_irq.isra.40 (1 samples, 0.02%)__usb_hcd_giveback_urb (1 samples, 0.02%)snd_complete_urb (1 samples, 0.02%)retire_playback_urb (1 samples, 0.02%)snd_usb_pcm_delay.part.14 (1 samples, 0.02%)xhci_get_frame (1 samples, 0.02%)select_task_rq_fair (12 samples, 0.24%)select_idle_sibling (1 samples, 0.02%)available_idle_cpu (1 samples, 0.02%)account_entity_enqueue (2 samples, 0.04%)update_cfs_group (1 samples, 0.02%)ttwu_do_activate (9 samples, 0.18%)enqueue_task_fair (9 samples, 0.18%)enqueue_entity (6 samples, 0.12%)update_load_avg (3 samples, 0.06%)__update_load_avg_se (1 samples, 0.02%)ttwu_do_wakeup (3 samples, 0.06%)check_preempt_curr (3 samples, 0.06%)resched_curr (3 samples, 0.06%)entry_SYSCALL_64_after_hwframe (83 samples, 1.67%)do_syscall_64 (83 samples, 1.67%)__x64_sys_futex (83 samples, 1.67%)do_futex (82 samples, 1.65%)futex_wake (81 samples, 1.63%)wake_up_q (42 samples, 0.85%)try_to_wake_up (41 samples, 0.83%)update_rq_clock (2 samples, 0.04%)sched_clock_cpu (2 samples, 0.04%)sched_clock (2 samples, 0.04%)native_sched_clock (2 samples, 0.04%)<parking_lot_core::thread_parker::imp::UnparkHandle as parking_lot_core::thread_parker::UnparkHandleT>::unpark (92 samples, 1.85%)<..syscall (92 samples, 1.85%)s..syscall_return_via_sysret (2 samples, 0.04%)<std::time::Instant as core::cmp::PartialOrd>::gt (1 samples, 0.02%)<std::sys::unix::time::inner::Instant as core::cmp::PartialOrd>::partial_cmp (1 samples, 0.02%)<std::sys::unix::time::Timespec as core::cmp::PartialOrd>::partial_cmp (1 samples, 0.02%)<std::sys::unix::time::Timespec as core::cmp::Ord>::cmp (1 samples, 0.02%)core::tuple::<impl core::cmp::Ord for (A,B)>::cmp (1 samples, 0.02%)parking_lot_core::parking_lot::FairTimeout::should_timeout (9 samples, 0.18%)std::time::Instant::now (8 samples, 0.16%)std::sys::unix::time::inner::Instant::now (8 samples, 0.16%)std::sys::unix::time::inner::now (8 samples, 0.16%)__clock_gettime (8 samples, 0.16%)__vdso_clock_gettime (7 samples, 0.14%)[[vdso]] (5 samples, 0.10%)parking_lot_core::parking_lot::get_hashtable (1 samples, 0.02%)core::sync::atomic::AtomicPtr<T>::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)parking_lot_core::parking_lot::hash (1 samples, 0.02%)parking_lot::condvar::Condvar::notify_one_slow (114 samples, 2.29%)p..parking_lot_core::parking_lot::unpark_requeue (114 samples, 2.29%)p..parking_lot_core::parking_lot::lock_bucket_pair (4 samples, 0.08%)parking_lot_core::word_lock::WordLock::lock (1 samples, 0.02%)alloc::vec::Vec<T,A>::pop (13 samples, 0.26%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)hrtimer_interrupt (1 samples, 0.02%)__hrtimer_run_queues (1 samples, 0.02%)tick_sched_timer (1 samples, 0.02%)tick_sched_handle (1 samples, 0.02%)update_process_times (1 samples, 0.02%)scheduler_tick (1 samples, 0.02%)perf_event_task_tick (1 samples, 0.02%)amd_pmu_disable_all (1 samples, 0.02%)amd_pmu_wait_on_overflow (1 samples, 0.02%)delay_mwaitx (1 samples, 0.02%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.04%)fred::multiplexer::responses::respond_to_caller (319 samples, 6.42%)fred::mu..tokio::sync::oneshot::Sender<T>::send (260 samples, 5.23%)tokio:..tokio::sync::oneshot::Inner<T>::complete (247 samples, 4.97%)tokio:..tokio::sync::oneshot::Task::with_task (232 samples, 4.67%)tokio..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (232 samples, 4.67%)tokio..tokio::sync::oneshot::Task::with_task::_{{closure}} (232 samples, 4.67%)tokio..core::ops::function::FnOnce::call_once (232 samples, 4.67%)core:..core::task::wake::Waker::wake_by_ref (232 samples, 4.67%)core:..tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (208 samples, 4.19%)tokio..tokio::runtime::thread_pool::worker::Shared::schedule (208 samples, 4.19%)tokio..tokio::macros::scoped_tls::ScopedKey<T>::with (208 samples, 4.19%)tokio..tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (200 samples, 4.02%)toki..tokio::runtime::thread_pool::worker::Shared::schedule_local (198 samples, 3.98%)toki..tokio::runtime::thread_pool::worker::Shared::notify_parked (196 samples, 3.94%)toki..tokio::runtime::thread_pool::idle::Idle::worker_to_notify (47 samples, 0.95%)tokio::runtime::thread_pool::idle::Idle::notify_should_wakeup (32 samples, 0.64%)core::sync::atomic::AtomicUsize::fetch_add (17 samples, 0.34%)core::sync::atomic::atomic_add (17 samples, 0.34%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,fred::metrics::LatencyStats>> (9 samples, 0.18%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (9 samples, 0.18%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (9 samples, 0.18%)fred::metrics::LatencyStats::sample (12 samples, 0.24%)lock_api::rwlock::RwLock<R,T>::write (8 samples, 0.16%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (8 samples, 0.16%)core::result::Result<T,E>::ok (2 samples, 0.04%)std::time::Instant::duration_since (9 samples, 0.18%)std::sys::unix::time::inner::Instant::checked_sub_instant (5 samples, 0.10%)std::sys::unix::time::Timespec::sub_timespec (3 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialOrd<&B> for &A>::ge (1 samples, 0.02%)core::cmp::PartialOrd::ge (1 samples, 0.02%)<std::sys::unix::time::Timespec as core::cmp::PartialOrd>::partial_cmp (1 samples, 0.02%)<std::sys::unix::time::Timespec as core::cmp::Ord>::cmp (1 samples, 0.02%)core::tuple::<impl core::cmp::Ord for (A,B)>::cmp (1 samples, 0.02%)fred::multiplexer::responses::sample_latency (68 samples, 1.37%)std::time::Instant::now (29 samples, 0.58%)std::sys::unix::time::inner::Instant::now (28 samples, 0.56%)std::sys::unix::time::inner::now (28 samples, 0.56%)__clock_gettime (27 samples, 0.54%)__vdso_clock_gettime (26 samples, 0.52%)[[vdso]] (20 samples, 0.40%)<F as futures_core::future::TryFuture>::try_poll (412 samples, 8.29%)<F as future..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (412 samples, 8.29%)<core::futur..fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (412 samples, 8.29%)fred::multip..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (412 samples, 8.29%)<core::futur..fred::multiplexer::responses::process_centralized_frame::_{{closure}} (412 samples, 8.29%)fred::multip..fred::multiplexer::responses::process_response (412 samples, 8.29%)fred::multip..fred::utils::decr_atomic (9 samples, 0.18%)core::sync::atomic::AtomicUsize::fetch_sub (9 samples, 0.18%)core::sync::atomic::atomic_sub (9 samples, 0.18%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<F as futures_core::future::TryFuture>::try_poll (414 samples, 8.33%)<F as future..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<F as futures_core::future::TryFuture>::try_poll (414 samples, 8.33%)<F as future..<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (414 samples, 8.33%)<futures_uti..<S as futures_core::stream::TryStream>::try_poll_next (2 samples, 0.04%)<futures_util::stream::stream::split::SplitStream<S> as futures_core::stream::Stream>::poll_next (2 samples, 0.04%)<tokio_util::codec::framed::Framed<T,U> as futures_core::stream::Stream>::poll_next (2 samples, 0.04%)<tokio_util::codec::framed_impl::FramedImpl<T,U,R> as futures_core::stream::Stream>::poll_next (2 samples, 0.04%)tokio_util::util::poll_read_buf (2 samples, 0.04%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_read::AsyncRead>::poll_read (2 samples, 0.04%)tokio::net::tcp::stream::TcpStream::poll_read_priv (2 samples, 0.04%)tokio::io::poll_evented::PollEvented<E>::poll_read (2 samples, 0.04%)tokio::io::driver::registration::Registration::poll_read_io (2 samples, 0.04%)tokio::io::driver::registration::Registration::poll_io (2 samples, 0.04%)tokio::io::poll_evented::PollEvented<E>::poll_read::_{{closure}} (2 samples, 0.04%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read (2 samples, 0.04%)mio::io_source::IoSource<T>::do_io (2 samples, 0.04%)mio::sys::unix::IoSourceState::do_io (2 samples, 0.04%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read::_{{closure}} (2 samples, 0.04%)<&std::net::tcp::TcpStream as std::io::Read>::read (2 samples, 0.04%)std::sys_common::net::TcpStream::read (2 samples, 0.04%)std::sys::unix::net::Socket::read (2 samples, 0.04%)std::sys::unix::net::Socket::recv_with_flags (2 samples, 0.04%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2 samples, 0.04%)fred::multiplexer::responses::process_centralized_frame::_{{closure}} (2 samples, 0.04%)fred::multiplexer::responses::process_response (2 samples, 0.04%)fred::multiplexer::responses::respond_to_caller (2 samples, 0.04%)core::ptr::drop_in_place<alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>>> (2 samples, 0.04%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (2 samples, 0.04%)tokio::sync::oneshot::Sender<T>::send (2 samples, 0.04%)tokio::sync::oneshot::Inner<T>::complete (2 samples, 0.04%)tokio::sync::oneshot::Task::with_task (2 samples, 0.04%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (2 samples, 0.04%)tokio::sync::oneshot::Task::with_task::_{{closure}} (2 samples, 0.04%)core::ops::function::FnOnce::call_once (2 samples, 0.04%)core::task::wake::Waker::wake_by_ref (2 samples, 0.04%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule (2 samples, 0.04%)tokio::macros::scoped_tls::ScopedKey<T>::with (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule_local (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::notify_parked (2 samples, 0.04%)parking_lot::condvar::Condvar::notify_one_slow (2 samples, 0.04%)parking_lot_core::parking_lot::unpark_requeue (2 samples, 0.04%)<parking_lot_core::thread_parker::imp::UnparkHandle as parking_lot_core::thread_parker::UnparkHandleT>::unpark (2 samples, 0.04%)syscall (2 samples, 0.04%)entry_SYSCALL_64 (2 samples, 0.04%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,fred::types::RedisConfig>> (1 samples, 0.02%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (8 samples, 0.16%)fred::multiplexer::commands::check_deferred_multi_command::_{{closure}} (8 samples, 0.16%)fred::utils::should_send_multi_command (3 samples, 0.06%)fred::utils::is_clustered (3 samples, 0.06%)lock_api::rwlock::RwLock<R,T>::read (2 samples, 0.04%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (2 samples, 0.04%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (1 samples, 0.02%)<fred::protocol::types::RedisCommandKind as core::cmp::PartialEq>::eq (1 samples, 0.02%)[libc-2.28.so] (3 samples, 0.06%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,fred::types::RedisConfig>> (6 samples, 0.12%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (6 samples, 0.12%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (29 samples, 0.58%)fred::multiplexer::commands::check_command_structure::_{{closure}} (29 samples, 0.58%)fred::multiplexer::commands::check_transaction_hash_slot (13 samples, 0.26%)fred::utils::is_clustered (12 samples, 0.24%)lock_api::rwlock::RwLock<R,T>::read (6 samples, 0.12%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (6 samples, 0.12%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (1 samples, 0.02%)fred::multiplexer::commands::check_command_structure_t::_{{closure}} (33 samples, 0.66%)[libc-2.28.so] (4 samples, 0.08%)[libc-2.28.so] (4 samples, 0.08%)[libc-2.28.so] (3 samples, 0.06%)[libc-2.28.so] (7 samples, 0.14%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (4 samples, 0.08%)[libc-2.28.so] (4 samples, 0.08%)[libc-2.28.so] (4 samples, 0.08%)<&mut S as futures_sink::Sink<Item>>::poll_ready (9 samples, 0.18%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (8 samples, 0.16%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (4 samples, 0.08%)futures_util::lock::bilock::BiLock<T>::poll_lock (3 samples, 0.06%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (11 samples, 0.22%)<&mut S as futures_sink::Sink<Item>>::start_send (1 samples, 0.02%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::start_send (1 samples, 0.02%)core::ptr::drop_in_place<futures_util::lock::bilock::BiLockGuard<tokio_util::codec::framed::Framed<tokio::net::tcp::stream::TcpStream,fred::protocol::codec::RedisCodec>>> (1 samples, 0.02%)<futures_util::lock::bilock::BiLockGuard<T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)futures_util::lock::bilock::BiLock<T>::unlock (1 samples, 0.02%)<&mut S as futures_sink::Sink<Item>>::poll_ready (3 samples, 0.06%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (3 samples, 0.06%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (3 samples, 0.06%)futures_util::lock::bilock::BiLock<T>::poll_lock (2 samples, 0.04%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (4 samples, 0.08%)core::option::Option<T>::take (1 samples, 0.02%)core::mem::take (1 samples, 0.02%)core::mem::replace (1 samples, 0.02%)core::mem::swap (1 samples, 0.02%)core::ptr::swap_nonoverlapping_one (1 samples, 0.02%)core::ptr::swap_nonoverlapping (1 samples, 0.02%)core::ptr::swap_nonoverlapping_bytes (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::poll_flush (1 samples, 0.02%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_flush (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)core::ptr::drop_in_place<futures_util::lock::bilock::BiLockGuard<tokio_util::codec::framed::Framed<tokio::net::tcp::stream::TcpStream,fred::protocol::codec::RedisCodec>>> (3 samples, 0.06%)<futures_util::lock::bilock::BiLockGuard<T> as core::ops::drop::Drop>::drop (3 samples, 0.06%)futures_util::lock::bilock::BiLock<T>::unlock (1 samples, 0.02%)core::task::wake::Waker::wake (1 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (1 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::drop_reference (1 samples, 0.02%)tokio::runtime::task::state::State::ref_dec (1 samples, 0.02%)futures_util::lock::bilock::BiLock<T>::poll_lock (6 samples, 0.12%)core::option::Option<T>::unwrap_or_else (1 samples, 0.02%)futures_util::lock::bilock::BiLock<T>::poll_lock::_{{closure}} (1 samples, 0.02%)alloc::boxed::Box<T>::new (1 samples, 0.02%)alloc::alloc::exchange_malloc (1 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.02%)alloc::alloc::Global::alloc_impl (1 samples, 0.02%)alloc::alloc::alloc (1 samples, 0.02%)__libc_malloc (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::poll_ready (1 samples, 0.02%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_ready (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (1 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (3 samples, 0.06%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (3 samples, 0.06%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (3 samples, 0.06%)fred::protocol::codec::encode_frame (2 samples, 0.04%)fred::metrics::SizeStats::sample (1 samples, 0.02%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_flush (17 samples, 0.34%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (5 samples, 0.10%)[libc-2.28.so] (1 samples, 0.02%)<futures_util::sink::send::Send<Si,Item> as core::future::future::Future>::poll (24 samples, 0.48%)[libc-2.28.so] (2 samples, 0.04%)[libc-2.28.so] (10 samples, 0.20%)fred::client::RedisClientInner::log_client_name_fn (2 samples, 0.04%)<log::Level as core::cmp::PartialOrd<log::LevelFilter>>::le (2 samples, 0.04%)fred::multiplexer::Counters::should_send (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (4 samples, 0.08%)[libc-2.28.so] (4 samples, 0.08%)alloc::slice::<impl [T]>::to_vec (6 samples, 0.12%)alloc::slice::<impl [T]>::to_vec_in (6 samples, 0.12%)alloc::slice::hack::to_vec (6 samples, 0.12%)<T as alloc::slice::hack::ConvertVec>::to_vec (6 samples, 0.12%)alloc::vec::Vec<T,A>::with_capacity_in (6 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (6 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::allocate_in (6 samples, 0.12%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (6 samples, 0.12%)alloc::alloc::Global::alloc_impl (6 samples, 0.12%)alloc::alloc::alloc (6 samples, 0.12%)__libc_malloc (6 samples, 0.12%)[libc-2.28.so] (2 samples, 0.04%)alloc::vec::Vec<T,A>::push (4 samples, 0.08%)core::ptr::write (4 samples, 0.08%)alloc::vec::Vec<T>::with_capacity (12 samples, 0.24%)alloc::vec::Vec<T,A>::with_capacity_in (12 samples, 0.24%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (12 samples, 0.24%)alloc::raw_vec::RawVec<T,A>::allocate_in (12 samples, 0.24%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (12 samples, 0.24%)alloc::alloc::Global::alloc_impl (12 samples, 0.24%)alloc::alloc::alloc (12 samples, 0.24%)__libc_malloc (12 samples, 0.24%)fred::protocol::types::RedisCommandKind::cmd_str (7 samples, 0.14%)[libc-2.28.so] (7 samples, 0.14%)fred::protocol::types::RedisCommand::to_frame (75 samples, 1.51%)fred::protocol::utils::command_to_frame (75 samples, 1.51%)fred::protocol::utils::value_to_outgoing_frame (24 samples, 0.48%)__libc_malloc (7 samples, 0.14%)[libc-2.28.so] (5 samples, 0.10%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_td_cleanup (1 samples, 0.02%)xhci_giveback_urb_in_irq.isra.40 (1 samples, 0.02%)__usb_hcd_giveback_urb (1 samples, 0.02%)snd_complete_urb (1 samples, 0.02%)usb_hcd_submit_urb (1 samples, 0.02%)xhci_urb_enqueue (1 samples, 0.02%)xhci_queue_isoc_tx_prepare (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>> (6 samples, 0.12%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (6 samples, 0.12%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (6 samples, 0.12%)fred::utils::is_locked_some (16 samples, 0.32%)lock_api::rwlock::RwLock<R,T>::read (10 samples, 0.20%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (10 samples, 0.20%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (8 samples, 0.16%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (167 samples, 3.36%)<co..fred::protocol::connection::write_command::_{{closure}} (160 samples, 3.22%)fre..std::time::Instant::now (11 samples, 0.22%)std::sys::unix::time::inner::Instant::now (11 samples, 0.22%)std::sys::unix::time::inner::now (11 samples, 0.22%)__clock_gettime (11 samples, 0.22%)__vdso_clock_gettime (11 samples, 0.22%)[[vdso]] (10 samples, 0.20%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)hrtimer_interrupt (1 samples, 0.02%)__hrtimer_run_queues (1 samples, 0.02%)hrtimer_wakeup (1 samples, 0.02%)try_to_wake_up (1 samples, 0.02%)ttwu_do_wakeup (1 samples, 0.02%)check_preempt_curr (1 samples, 0.02%)[libc-2.28.so] (8 samples, 0.16%)alloc::collections::vec_deque::VecDeque<T>::back_mut (1 samples, 0.02%)alloc::collections::vec_deque::VecDeque<T>::get_mut (1 samples, 0.02%)alloc::collections::vec_deque::VecDeque<T>::push_back (3 samples, 0.06%)alloc::collections::vec_deque::VecDeque<T>::buffer_write (3 samples, 0.06%)core::ptr::write (3 samples, 0.06%)[libc-2.28.so] (3 samples, 0.06%)fred::multiplexer::utils::write_command::_{{closure}} (185 samples, 3.72%)fred..core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::protocol::connection::write_command::{{closure}}>> (2 samples, 0.04%)core::ptr::drop_in_place<fred::protocol::connection::write_command::{{closure}}> (1 samples, 0.02%)tokio::coop::CURRENT::__getit (1 samples, 0.02%)tokio::coop::poll_proceed (3 samples, 0.06%)std::thread::local::LocalKey<T>::with (3 samples, 0.06%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.06%)tokio::coop::poll_proceed::_{{closure}} (2 samples, 0.04%)tokio::coop::Budget::decrement (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (4 samples, 0.08%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.08%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (4 samples, 0.08%)core::sync::atomic::AtomicUsize::load (2 samples, 0.04%)core::sync::atomic::atomic_load (2 samples, 0.04%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (4 samples, 0.08%)tokio::sync::batch_semaphore::Semaphore::poll_acquire::_{{closure}} (4 samples, 0.08%)<core::task::wake::Waker as core::clone::Clone>::clone (4 samples, 0.08%)tokio::runtime::task::waker::clone_waker (4 samples, 0.08%)tokio::runtime::task::state::State::ref_inc (2 samples, 0.04%)core::array::_<impl core::default::Default for [T: _]>::default (1 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (3 samples, 0.06%)core::ptr::drop_in_place<core::option::Option<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>>> (2 samples, 0.04%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (2 samples, 0.04%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (2 samples, 0.04%)tokio::sync::batch_semaphore::Waiter::assign_permits (6 samples, 0.12%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (38 samples, 0.76%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (29 samples, 0.58%)tokio::util::linked_list::LinkedList<L,<L as tokio::util::linked_list::Link>::Target>::push_front (2 samples, 0.04%)<core::option::Option<T> as core::cmp::PartialEq>::eq (2 samples, 0.04%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (1 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (1 samples, 0.02%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)hrtimer_interrupt (1 samples, 0.02%)__hrtimer_run_queues (1 samples, 0.02%)tick_sched_timer (1 samples, 0.02%)tick_sched_handle (1 samples, 0.02%)update_process_times (1 samples, 0.02%)account_user_time (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (243 samples, 4.89%)<core:..tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (49 samples, 0.99%)tokio::sync::batch_semaphore::Semaphore::acquire (1 samples, 0.02%)[libc-2.28.so] (6 samples, 0.12%)core::ptr::drop_in_place<core::future::from_generator::GenFuture<tokio::sync::rwlock::RwLock<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>::write::{{closure}}>> (1 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::RwLock<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>::write::{{closure}}> (1 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.02%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)hrtimer_interrupt (1 samples, 0.02%)__hrtimer_run_queues (1 samples, 0.02%)tick_sched_timer (1 samples, 0.02%)tick_sched_handle (1 samples, 0.02%)update_process_times (1 samples, 0.02%)scheduler_tick (1 samples, 0.02%)task_tick_fair (1 samples, 0.02%)__update_load_avg_cfs_rq (1 samples, 0.02%)core::array::_<impl core::default::Default for [T: _]>::default (3 samples, 0.06%)tokio::runtime::task::state::State::transition_to_notified (1 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_or (1 samples, 0.02%)core::sync::atomic::atomic_or (1 samples, 0.02%)std::thread::local::LocalKey<T>::with (1 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (12 samples, 0.24%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (11 samples, 0.22%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (10 samples, 0.20%)tokio::runtime::thread_pool::worker::Shared::schedule (10 samples, 0.20%)tokio::macros::scoped_tls::ScopedKey<T>::with (9 samples, 0.18%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (6 samples, 0.12%)tokio::runtime::thread_pool::worker::Shared::schedule_local (4 samples, 0.08%)core::option::Option<T>::take (4 samples, 0.08%)core::mem::take (4 samples, 0.08%)core::mem::replace (4 samples, 0.08%)core::mem::swap (4 samples, 0.08%)core::ptr::swap_nonoverlapping_one (4 samples, 0.08%)core::intrinsics::copy_nonoverlapping (4 samples, 0.08%)core::iter::traits::iterator::Iterator::for_each (14 samples, 0.28%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (14 samples, 0.28%)core::iter::traits::iterator::Iterator::fold (14 samples, 0.28%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (14 samples, 0.28%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (13 samples, 0.26%)core::ops::function::FnMut::call_mut (13 samples, 0.26%)core::task::wake::Waker::wake (13 samples, 0.26%)tokio::runtime::task::waker::wake_by_val (1 samples, 0.02%)core::mem::drop (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (1 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.02%)core::option::Option<T>::unwrap_or_else (1 samples, 0.02%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 8]> (1 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (1 samples, 0.02%)tokio::sync::batch_semaphore::Waiter::assign_permits (1 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (26 samples, 0.52%)tokio::util::linked_list::LinkedList<L,<L as tokio::util::linked_list::Link>::Target>::pop_back (1 samples, 0.02%)tokio::util::linked_list::Pointers<T>::set_next (1 samples, 0.02%)core::ptr::write (1 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>> (28 samples, 0.56%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (28 samples, 0.56%)tokio::sync::batch_semaphore::Semaphore::release (1 samples, 0.02%)tokio::loom::std::parking_lot::Mutex<T>::lock (1 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (1 samples, 0.02%)core::sync::atomic::AtomicU8::compare_exchange_weak (1 samples, 0.02%)core::sync::atomic::atomic_compare_exchange_weak (1 samples, 0.02%)core::array::_<impl core::default::Default for [T: _]>::default (2 samples, 0.04%)core::iter::traits::iterator::Iterator::for_each (1 samples, 0.02%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (1 samples, 0.02%)core::iter::traits::iterator::Iterator::fold (1 samples, 0.02%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (1 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (8 samples, 0.16%)core::mem::drop (2 samples, 0.04%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (2 samples, 0.04%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (2 samples, 0.04%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<core::option::Option<fred::protocol::connection::RedisSink>>> (13 samples, 0.26%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (13 samples, 0.26%)tokio::sync::batch_semaphore::Semaphore::release (5 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::lock (5 samples, 0.10%)lock_api::mutex::Mutex<R,T>::lock (5 samples, 0.10%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (5 samples, 0.10%)core::result::Result<T,E>::map (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (318 samples, 6.40%)<core::f..fred::multiplexer::utils::write_centralized_command::_{{closure}} (312 samples, 6.28%)fred::mu..fred::multiplexer::utils::should_apply_backpressure (4 samples, 0.08%)[libc-2.28.so] (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (338 samples, 6.80%)<core::fu..fred::multiplexer::Multiplexer::write::_{{closure}} (330 samples, 6.64%)fred::mul..fred::multiplexer::utils::max_attempts_reached (2 samples, 0.04%)fred::protocol::types::RedisCommand::max_attempts_exceeded (2 samples, 0.04%)[libc-2.28.so] (12 samples, 0.24%)_nv029748rm (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (357 samples, 7.18%)<core::fut..fred::multiplexer::commands::write_command::_{{closure}} (352 samples, 7.08%)fred::mult..core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::Multiplexer::write::{{closure}}>> (1 samples, 0.02%)core::ptr::drop_in_place<fred::multiplexer::Multiplexer::write::{{closure}}> (1 samples, 0.02%)[libc-2.28.so] (4 samples, 0.08%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (395 samples, 7.95%)<core::futu..fred::multiplexer::commands::write_command_t::_{{closure}} (362 samples, 7.29%)fred::mult..core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::commands::write_command::{{closure}}>> (1 samples, 0.02%)core::ptr::drop_in_place<fred::multiplexer::commands::write_command::{{closure}}> (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (5 samples, 0.10%)<fred::protocol::types::RedisCommandKind as core::cmp::PartialEq>::eq (1 samples, 0.02%)[libc-2.28.so] (20 samples, 0.40%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)hrtimer_interrupt (1 samples, 0.02%)__hrtimer_run_queues (1 samples, 0.02%)tick_sched_timer (1 samples, 0.02%)tick_sched_handle (1 samples, 0.02%)update_process_times (1 samples, 0.02%)scheduler_tick (1 samples, 0.02%)perf_event_task_tick (1 samples, 0.02%)amd_pmu_disable_all (1 samples, 0.02%)x86_pmu_disable_all (1 samples, 0.02%)native_write_msr (1 samples, 0.02%)core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::commands::check_command_structure_t::{{closure}}>> (1 samples, 0.02%)fred::client::RedisClientInner::log_client_name_fn (1 samples, 0.02%)<log::Level as core::cmp::PartialOrd<log::LevelFilter>>::le (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,core::option::Option<fred::client::MultiPolicy>>> (4 samples, 0.08%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.08%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (4 samples, 0.08%)fred::multiplexer::commands::should_disable_pipeline (9 samples, 0.18%)fred::utils::is_locked_some (6 samples, 0.12%)lock_api::rwlock::RwLock<R,T>::read (2 samples, 0.04%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (2 samples, 0.04%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (472 samples, 9.50%)<futures_util:..<F as futures_core::future::TryFuture>::try_poll (472 samples, 9.50%)<F as futures_..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (472 samples, 9.50%)<core::future:..fred::multiplexer::commands::init::_{{closure}}::_{{closure}}::_{{closure}} (472 samples, 9.50%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (472 samples, 9.50%)<core::future:..fred::multiplexer::commands::handle_command_t::_{{closure}} (472 samples, 9.50%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (472 samples, 9.50%)<core::future:..fred::multiplexer::commands::handle_command::_{{closure}} (472 samples, 9.50%)fred::multiple..fred::utils::decr_atomic (7 samples, 0.14%)core::sync::atomic::AtomicUsize::fetch_sub (5 samples, 0.10%)core::sync::atomic::atomic_sub (5 samples, 0.10%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (3 samples, 0.06%)[libc-2.28.so] (6 samples, 0.12%)core::option::Option<T>::as_ref (1 samples, 0.02%)[libc-2.28.so] (2 samples, 0.04%)core::mem::drop (2 samples, 0.04%)core::ptr::drop_in_place<alloc::sync::Weak<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>>> (2 samples, 0.04%)<alloc::sync::Weak<T> as core::ops::drop::Drop>::drop (2 samples, 0.04%)alloc::sync::Weak<T>::inner (1 samples, 0.02%)alloc::rc::is_dangling (1 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::drop_reference (3 samples, 0.06%)tokio::runtime::task::state::State::ref_dec (2 samples, 0.04%)tokio::sync::oneshot::State::is_rx_task_set (1 samples, 0.02%)alloc::sync::Arc<T>::drop_slow (7 samples, 0.14%)core::ptr::drop_in_place<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>> (5 samples, 0.10%)<tokio::sync::oneshot::Inner<T> as core::ops::drop::Drop>::drop (5 samples, 0.10%)tokio::sync::oneshot::Task::drop_task (1 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.02%)tokio::sync::oneshot::Task::drop_task::_{{closure}} (1 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (1 samples, 0.02%)core::ptr::drop_in_place<core::task::wake::Waker> (1 samples, 0.02%)<core::task::wake::Waker as core::ops::drop::Drop>::drop (1 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>>>> (20 samples, 0.40%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>>> (20 samples, 0.40%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (20 samples, 0.40%)cfree (8 samples, 0.16%)<tokio::coop::RestoreOnPending as core::ops::drop::Drop>::drop (3 samples, 0.06%)std::thread::local::LocalKey<T>::with (1 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.02%)tokio::coop::RestoreOnPending::made_progress (1 samples, 0.02%)core::cell::Cell<T>::set (1 samples, 0.02%)core::cell::Cell<T>::replace (1 samples, 0.02%)core::mem::replace (1 samples, 0.02%)core::mem::swap (1 samples, 0.02%)core::ptr::swap_nonoverlapping_one (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)tokio::coop::CURRENT::__getit (2 samples, 0.04%)std::thread::local::fast::Key<T>::get (1 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (1 samples, 0.02%)core::option::Option<T>::as_ref (1 samples, 0.02%)core::cell::Cell<T>::set (7 samples, 0.14%)core::cell::Cell<T>::replace (7 samples, 0.14%)core::mem::replace (7 samples, 0.14%)core::mem::swap (7 samples, 0.14%)core::ptr::swap_nonoverlapping_one (7 samples, 0.14%)core::intrinsics::copy_nonoverlapping (7 samples, 0.14%)tokio::coop::poll_proceed (10 samples, 0.20%)std::thread::local::LocalKey<T>::with (10 samples, 0.20%)std::thread::local::LocalKey<T>::try_with (10 samples, 0.20%)tokio::coop::poll_proceed::_{{closure}} (8 samples, 0.16%)tokio::coop::Budget::decrement (1 samples, 0.02%)tokio::sync::oneshot::State::is_complete (1 samples, 0.02%)tokio::sync::oneshot::State::is_rx_task_set (1 samples, 0.02%)tokio::sync::oneshot::State::load (7 samples, 0.14%)core::sync::atomic::AtomicUsize::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)tokio::sync::oneshot::State::set_rx_task (9 samples, 0.18%)core::sync::atomic::AtomicUsize::fetch_or (9 samples, 0.18%)core::sync::atomic::atomic_or (9 samples, 0.18%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (63 samples, 1.27%)tokio::sync::oneshot::Inner<T>::poll_recv (35 samples, 0.70%)tokio::sync::oneshot::Task::set_task (2 samples, 0.04%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (2 samples, 0.04%)tokio::sync::oneshot::Task::set_task::_{{closure}} (2 samples, 0.04%)<core::task::wake::Waker as core::clone::Clone>::clone (2 samples, 0.04%)tokio::runtime::task::waker::clone_waker (2 samples, 0.04%)tokio::runtime::task::state::State::ref_inc (1 samples, 0.02%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (92 samples, 1.85%)<..tokio::runtime::task::harness::poll_future::_{{closure}} (92 samples, 1.85%)t..tokio::runtime::task::core::CoreStage<T>::poll (92 samples, 1.85%)t..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (92 samples, 1.85%)t..tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (92 samples, 1.85%)t..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (92 samples, 1.85%)<..pipeline_test::spawn_client_task::_{{closure}} (92 samples, 1.85%)p..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (92 samples, 1.85%)<..fred::client::RedisClient::incr::_{{closure}} (92 samples, 1.85%)f..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (92 samples, 1.85%)<..fred::commands::keys::incr::_{{closure}} (92 samples, 1.85%)f..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (92 samples, 1.85%)<..fred::commands::one_arg_value_cmd::_{{closure}} (92 samples, 1.85%)f..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (92 samples, 1.85%)<..fred::utils::request_response::_{{closure}} (92 samples, 1.85%)f..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (92 samples, 1.85%)<..fred::utils::wait_for_response::_{{closure}} (89 samples, 1.79%)f..fred::globals::globals (2 samples, 0.04%)<fred::globals::GLOBALS as core::ops::deref::Deref>::deref (1 samples, 0.02%)<fred::globals::GLOBALS as core::ops::deref::Deref>::deref::__stability (1 samples, 0.02%)lazy_static::lazy::Lazy<T>::get (1 samples, 0.02%)std::sync::once::Once::call_once (1 samples, 0.02%)std::sync::once::Once::is_completed (1 samples, 0.02%)epoll_wait (3 samples, 0.06%)entry_SYSCALL_64 (3 samples, 0.06%)fred::multiplexer::Multiplexer::write::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::multiplexer::utils::write_centralized_command::_{{closure}} (1 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<core::option::Option<fred::protocol::connection::RedisSink>>> (1 samples, 0.02%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_flush (1 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::poll_flush (1 samples, 0.02%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_flush (1 samples, 0.02%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write_vectored (1 samples, 0.02%)tokio::net::tcp::stream::TcpStream::poll_write_vectored_priv (1 samples, 0.02%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_write_io (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_io (1 samples, 0.02%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored::_{{closure}} (1 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored (1 samples, 0.02%)mio::io_source::IoSource<T>::do_io (1 samples, 0.02%)mio::sys::unix::IoSourceState::do_io (1 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored::_{{closure}} (1 samples, 0.02%)<&std::fs::File as std::io::Write>::write_vectored (1 samples, 0.02%)std::sys::unix::fs::File::write_vectored (1 samples, 0.02%)std::sys::unix::fd::FileDesc::write_vectored (1 samples, 0.02%)writev (1 samples, 0.02%)entry_SYSCALL_64 (1 samples, 0.02%)alloc::string::String::new (1 samples, 0.02%)<&T as core::fmt::Display>::fmt (2 samples, 0.04%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.08%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.04%)<&mut W as core::fmt::Write>::write_str (10 samples, 0.20%)<alloc::string::String as core::fmt::Write>::write_str (7 samples, 0.14%)alloc::string::String::push_str (7 samples, 0.14%)alloc::vec::Vec<T,A>::extend_from_slice (7 samples, 0.14%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (7 samples, 0.14%)alloc::vec::Vec<T,A>::append_elements (7 samples, 0.14%)core::ptr::mut_ptr::<impl *mut T>::add (2 samples, 0.04%)core::ptr::mut_ptr::<impl *mut T>::offset (2 samples, 0.04%)<u64 as core::fmt::num::DisplayInt>::to_u64 (2 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.02%)__libc_malloc (14 samples, 0.28%)[libc-2.28.so] (4 samples, 0.08%)__rdl_alloc (4 samples, 0.08%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (4 samples, 0.08%)__rust_alloc (2 samples, 0.04%)alloc::raw_vec::finish_grow (24 samples, 0.48%)core::result::Result<T,E>::map_err (1 samples, 0.02%)core::cmp::max (1 samples, 0.02%)core::cmp::Ord::max (1 samples, 0.02%)core::cmp::max_by (1 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (28 samples, 0.56%)alloc::raw_vec::RawVec<T,A>::reserve (27 samples, 0.54%)alloc::raw_vec::RawVec<T,A>::try_reserve (27 samples, 0.54%)alloc::raw_vec::RawVec<T,A>::grow_amortized (27 samples, 0.54%)core::option::Option<T>::ok_or (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (34 samples, 0.68%)<alloc::string::String as core::fmt::Write>::write_str (34 samples, 0.68%)alloc::string::String::push_str (34 samples, 0.68%)alloc::vec::Vec<T,A>::extend_from_slice (34 samples, 0.68%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (34 samples, 0.68%)alloc::vec::Vec<T,A>::append_elements (34 samples, 0.68%)core::ptr::mut_ptr::<impl *mut T>::add (4 samples, 0.08%)core::ptr::mut_ptr::<impl *mut T>::offset (4 samples, 0.08%)core::fmt::Formatter::alternate (1 samples, 0.02%)<T as alloc::string::ToString>::to_string (81 samples, 1.63%)core::fmt::Write::write_fmt (79 samples, 1.59%)core::fmt::write (79 samples, 1.59%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (49 samples, 0.99%)core::fmt::num::imp::fmt_u64 (44 samples, 0.89%)core::fmt::Formatter::pad_integral (10 samples, 0.20%)core::fmt::Formatter::pad_integral::write_prefix (4 samples, 0.08%)[libc-2.28.so] (11 samples, 0.22%)__rdl_dealloc (1 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::dealloc (1 samples, 0.02%)__rust_dealloc (2 samples, 0.04%)core::ptr::drop_in_place<alloc::string::String> (19 samples, 0.38%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (19 samples, 0.38%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (19 samples, 0.38%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (19 samples, 0.38%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (19 samples, 0.38%)alloc::alloc::dealloc (19 samples, 0.38%)cfree (5 samples, 0.10%)core::slice::<impl [T]>::clone_from_slice (1 samples, 0.02%)core::clone::Clone::clone_from (1 samples, 0.02%)<&T as core::fmt::Display>::fmt (2 samples, 0.04%)alloc::vec::Vec<T,A>::reserve (5 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::reserve (4 samples, 0.08%)core::intrinsics::copy_nonoverlapping (2 samples, 0.04%)[libc-2.28.so] (2 samples, 0.04%)<&mut W as core::fmt::Write>::write_str (13 samples, 0.26%)<alloc::string::String as core::fmt::Write>::write_str (8 samples, 0.16%)alloc::string::String::push_str (8 samples, 0.16%)alloc::vec::Vec<T,A>::extend_from_slice (8 samples, 0.16%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (8 samples, 0.16%)alloc::vec::Vec<T,A>::append_elements (8 samples, 0.16%)core::ptr::mut_ptr::<impl *mut T>::add (1 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.02%)<core::iter::adapters::zip::Zip<A,B> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.02%)<core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::next (1 samples, 0.02%)alloc::vec::Vec<T,A>::as_mut_ptr (1 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::current_memory (2 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::set_ptr (1 samples, 0.02%)__libc_malloc (15 samples, 0.30%)__rdl_alloc (3 samples, 0.06%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (3 samples, 0.06%)alloc::raw_vec::finish_grow (23 samples, 0.46%)__rust_alloc (1 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (38 samples, 0.76%)alloc::raw_vec::RawVec<T,A>::reserve (31 samples, 0.62%)alloc::raw_vec::RawVec<T,A>::try_reserve (30 samples, 0.60%)alloc::raw_vec::RawVec<T,A>::grow_amortized (30 samples, 0.60%)core::cmp::max (2 samples, 0.04%)core::cmp::Ord::max (2 samples, 0.04%)core::cmp::max_by (2 samples, 0.04%)core::intrinsics::copy_nonoverlapping (5 samples, 0.10%)[libc-2.28.so] (5 samples, 0.10%)<&mut W as core::fmt::Write>::write_str (52 samples, 1.05%)<alloc::string::String as core::fmt::Write>::write_str (52 samples, 1.05%)alloc::string::String::push_str (52 samples, 1.05%)alloc::vec::Vec<T,A>::extend_from_slice (52 samples, 1.05%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (52 samples, 1.05%)alloc::vec::Vec<T,A>::append_elements (52 samples, 1.05%)core::ptr::mut_ptr::<impl *mut T>::add (5 samples, 0.10%)core::ptr::mut_ptr::<impl *mut T>::offset (5 samples, 0.10%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (76 samples, 1.53%)core::fmt::num::imp::fmt_u64 (75 samples, 1.51%)core::fmt::Formatter::pad_integral (20 samples, 0.40%)core::fmt::Formatter::pad_integral::write_prefix (14 samples, 0.28%)core::iter::traits::iterator::Iterator::zip (1 samples, 0.02%)core::iter::adapters::zip::Zip<A,B>::new (1 samples, 0.02%)<core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::new (1 samples, 0.02%)core::cmp::min (1 samples, 0.02%)core::cmp::Ord::min (1 samples, 0.02%)core::cmp::min_by (1 samples, 0.02%)core::fmt::Write::write_fmt (115 samples, 2.31%)c..core::fmt::write (114 samples, 2.29%)c..core::slice::<impl [T]>::get (1 samples, 0.02%)<usize as core::slice::index::SliceIndex<[T]>>::get (1 samples, 0.02%)<T as alloc::string::ToString>::to_string (116 samples, 2.33%)<..core::result::Result<T,E>::expect (1 samples, 0.02%)[libc-2.28.so] (13 samples, 0.26%)__rdl_dealloc (1 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::dealloc (1 samples, 0.02%)__rust_dealloc (4 samples, 0.08%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (28 samples, 0.56%)alloc::alloc::dealloc (28 samples, 0.56%)cfree (10 samples, 0.20%)core::ptr::drop_in_place<alloc::string::String> (29 samples, 0.58%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (29 samples, 0.58%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (29 samples, 0.58%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (29 samples, 0.58%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.02%)core::slice::<impl [T]>::clone_from_slice (10 samples, 0.20%)core::clone::Clone::clone_from (10 samples, 0.20%)[libc-2.28.so] (10 samples, 0.20%)core::slice::index::<impl core::ops::index::IndexMut<I> for [T]>::index_mut (1 samples, 0.02%)<core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::index_mut (1 samples, 0.02%)<core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::get_unchecked_mut (1 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::add (1 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.02%)__log10_finite (14 samples, 0.28%)[libm-2.28.so] (8 samples, 0.16%)redis_protocol::utils::bulkstring_encode_len (18 samples, 0.36%)redis_protocol::utils::digits_in_number (18 samples, 0.36%)std::f64::<impl f64>::log10 (15 samples, 0.30%)std::f64::<impl f64>::log_wrapper (15 samples, 0.30%)std::f64::_<impl f64>::log10::_{{closure}} (15 samples, 0.30%)log10f32x (1 samples, 0.02%)redis_protocol::encode::gen_bulkstring (182 samples, 3.66%)redi..redis_protocol::utils::check_offset (1 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.04%)<alloc::vec::Vec<T,A> as core::ops::deref::Deref>::deref (1 samples, 0.02%)std::f64::<impl f64>::floor (3 samples, 0.06%)[libm-2.28.so] (3 samples, 0.06%)@plt (2 samples, 0.04%)__log10_finite (24 samples, 0.48%)[libm-2.28.so] (16 samples, 0.32%)core::iter::traits::iterator::Iterator::fold (44 samples, 0.89%)redis_protocol::utils::array_encode_len::_{{closure}} (42 samples, 0.85%)core::result::Result<T,E>::and_then (42 samples, 0.85%)redis_protocol::utils::array_encode_len::_{{closure}}::_{{closure}} (42 samples, 0.85%)redis_protocol::utils::encode_len (42 samples, 0.85%)redis_protocol::utils::bulkstring_encode_len (34 samples, 0.68%)redis_protocol::utils::digits_in_number (34 samples, 0.68%)std::f64::<impl f64>::log10 (26 samples, 0.52%)std::f64::<impl f64>::log_wrapper (26 samples, 0.52%)std::f64::_<impl f64>::log10::_{{closure}} (26 samples, 0.52%)log10f32x (1 samples, 0.02%)redis_protocol::encode::attempt_encoding (348 samples, 7.00%)redis_pro..redis_protocol::encode::gen_array (341 samples, 6.86%)redis_pro..redis_protocol::utils::array_encode_len (54 samples, 1.09%)redis_protocol::utils::digits_in_number (10 samples, 0.20%)std::f64::<impl f64>::log10 (6 samples, 0.12%)std::f64::<impl f64>::log_wrapper (6 samples, 0.12%)std::f64::_<impl f64>::log10::_{{closure}} (6 samples, 0.12%)__log10_finite (6 samples, 0.12%)[libm-2.28.so] (3 samples, 0.06%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (349 samples, 7.02%)<futures_..<&mut S as futures_sink::Sink<Item>>::poll_ready (349 samples, 7.02%)<&mut S a..<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (349 samples, 7.02%)<futures_..futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (349 samples, 7.02%)futures_u..futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (349 samples, 7.02%)futures_u..<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (349 samples, 7.02%)<tokio_ut..<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (349 samples, 7.02%)<tokio_ut..<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (349 samples, 7.02%)<fred::pr..fred::protocol::codec::encode_frame (349 samples, 7.02%)fred::pro..redis_protocol::encode::encode_bytes (349 samples, 7.02%)redis_pro..redis_protocol::utils::zero_extend (1 samples, 0.02%)bytes::bytes_mut::BytesMut::extend_from_slice (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (1 samples, 0.02%)<alloc::string::String as core::fmt::Write>::write_str (1 samples, 0.02%)alloc::string::String::push_str (1 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (1 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (1 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (1 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (2 samples, 0.04%)<alloc::string::String as core::fmt::Write>::write_str (2 samples, 0.04%)alloc::string::String::push_str (2 samples, 0.04%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.04%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.04%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.04%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::try_reserve (2 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::grow_amortized (2 samples, 0.04%)alloc::raw_vec::finish_grow (2 samples, 0.04%)__libc_malloc (2 samples, 0.04%)<T as alloc::string::ToString>::to_string (7 samples, 0.14%)core::fmt::Write::write_fmt (7 samples, 0.14%)core::fmt::write (7 samples, 0.14%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (5 samples, 0.10%)core::fmt::num::imp::fmt_u64 (5 samples, 0.10%)core::fmt::Formatter::pad_integral (3 samples, 0.06%)[libc-2.28.so] (1 samples, 0.02%)core::ptr::drop_in_place<alloc::string::String> (2 samples, 0.04%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (2 samples, 0.04%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (2 samples, 0.04%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.04%)alloc::alloc::dealloc (2 samples, 0.04%)cfree (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (2 samples, 0.04%)<alloc::string::String as core::fmt::Write>::write_str (1 samples, 0.02%)alloc::string::String::push_str (1 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (1 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (1 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.02%)__libc_malloc (2 samples, 0.04%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)ahci_multi_irqs_intr_hard (1 samples, 0.02%)ahci_handle_port_interrupt (1 samples, 0.02%)ata_qc_complete_multiple (1 samples, 0.02%)ata_scsi_qc_complete (1 samples, 0.02%)blk_mq_complete_request (1 samples, 0.02%)smp_call_function_single_async (1 samples, 0.02%)generic_exec_single (1 samples, 0.02%)llist_add_batch (1 samples, 0.02%)__rdl_alloc (1 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (1 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (6 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::reserve (6 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::try_reserve (6 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::grow_amortized (6 samples, 0.12%)alloc::raw_vec::finish_grow (5 samples, 0.10%)__rust_alloc (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (7 samples, 0.14%)<alloc::string::String as core::fmt::Write>::write_str (7 samples, 0.14%)alloc::string::String::push_str (7 samples, 0.14%)alloc::vec::Vec<T,A>::extend_from_slice (7 samples, 0.14%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (7 samples, 0.14%)alloc::vec::Vec<T,A>::append_elements (7 samples, 0.14%)core::ptr::mut_ptr::<impl *mut T>::add (1 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.02%)core::fmt::Write::write_fmt (14 samples, 0.28%)core::fmt::write (14 samples, 0.28%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (10 samples, 0.20%)core::fmt::num::imp::fmt_u64 (10 samples, 0.20%)core::fmt::Formatter::pad_integral (3 samples, 0.06%)core::fmt::Formatter::pad_integral::write_prefix (1 samples, 0.02%)<T as alloc::string::ToString>::to_string (17 samples, 0.34%)core::result::Result<T,E>::expect (3 samples, 0.06%)__rust_dealloc (1 samples, 0.02%)core::ptr::drop_in_place<alloc::string::String> (5 samples, 0.10%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (5 samples, 0.10%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (5 samples, 0.10%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (5 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (5 samples, 0.10%)alloc::alloc::dealloc (5 samples, 0.10%)cfree (4 samples, 0.08%)core::slice::<impl [T]>::clone_from_slice (1 samples, 0.02%)core::clone::Clone::clone_from (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)redis_protocol::encode::gen_bulkstring (25 samples, 0.50%)redis_protocol::utils::bulkstring_encode_len (2 samples, 0.04%)redis_protocol::utils::digits_in_number (2 samples, 0.04%)std::f64::<impl f64>::log10 (1 samples, 0.02%)std::f64::<impl f64>::log_wrapper (1 samples, 0.02%)std::f64::_<impl f64>::log10::_{{closure}} (1 samples, 0.02%)__log10_finite (1 samples, 0.02%)[libm-2.28.so] (1 samples, 0.02%)<alloc::vec::Vec<T,A> as core::ops::deref::Deref>::deref (1 samples, 0.02%)std::f64::<impl f64>::floor (1 samples, 0.02%)[libm-2.28.so] (1 samples, 0.02%)core::iter::traits::iterator::Iterator::fold (7 samples, 0.14%)redis_protocol::utils::array_encode_len::_{{closure}} (7 samples, 0.14%)core::result::Result<T,E>::and_then (7 samples, 0.14%)redis_protocol::utils::array_encode_len::_{{closure}}::_{{closure}} (7 samples, 0.14%)redis_protocol::utils::encode_len (7 samples, 0.14%)redis_protocol::utils::bulkstring_encode_len (5 samples, 0.10%)redis_protocol::utils::digits_in_number (5 samples, 0.10%)std::f64::<impl f64>::log10 (3 samples, 0.06%)std::f64::<impl f64>::log_wrapper (3 samples, 0.06%)std::f64::_<impl f64>::log10::_{{closure}} (3 samples, 0.06%)__log10_finite (3 samples, 0.06%)__log10_finite (1 samples, 0.02%)[libm-2.28.so] (1 samples, 0.02%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (45 samples, 0.91%)<&mut S as futures_sink::Sink<Item>>::poll_ready (45 samples, 0.91%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (45 samples, 0.91%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (45 samples, 0.91%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (45 samples, 0.91%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (45 samples, 0.91%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (45 samples, 0.91%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (45 samples, 0.91%)fred::protocol::codec::encode_frame (45 samples, 0.91%)redis_protocol::encode::encode_bytes (45 samples, 0.91%)redis_protocol::encode::attempt_encoding (45 samples, 0.91%)redis_protocol::encode::gen_array (44 samples, 0.89%)redis_protocol::utils::array_encode_len (9 samples, 0.18%)redis_protocol::utils::digits_in_number (2 samples, 0.04%)std::f64::<impl f64>::log10 (2 samples, 0.04%)std::f64::<impl f64>::log_wrapper (2 samples, 0.04%)std::f64::_<impl f64>::log10::_{{closure}} (2 samples, 0.04%)log10f32x (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (3 samples, 0.06%)<alloc::string::String as core::fmt::Write>::write_str (2 samples, 0.04%)alloc::string::String::push_str (2 samples, 0.04%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.04%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.04%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.04%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.04%)<u64 as core::fmt::num::DisplayInt>::to_u64 (2 samples, 0.04%)__libc_malloc (8 samples, 0.16%)[libc-2.28.so] (4 samples, 0.08%)<&mut W as core::fmt::Write>::write_str (10 samples, 0.20%)<alloc::string::String as core::fmt::Write>::write_str (9 samples, 0.18%)alloc::string::String::push_str (9 samples, 0.18%)alloc::vec::Vec<T,A>::extend_from_slice (9 samples, 0.18%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (9 samples, 0.18%)alloc::vec::Vec<T,A>::append_elements (9 samples, 0.18%)alloc::vec::Vec<T,A>::reserve (9 samples, 0.18%)alloc::raw_vec::RawVec<T,A>::reserve (9 samples, 0.18%)alloc::raw_vec::RawVec<T,A>::try_reserve (9 samples, 0.18%)alloc::raw_vec::RawVec<T,A>::grow_amortized (9 samples, 0.18%)alloc::raw_vec::finish_grow (9 samples, 0.18%)__rust_alloc (1 samples, 0.02%)<T as alloc::string::ToString>::to_string (22 samples, 0.44%)core::fmt::Write::write_fmt (22 samples, 0.44%)core::fmt::write (21 samples, 0.42%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (15 samples, 0.30%)core::fmt::num::imp::fmt_u64 (13 samples, 0.26%)core::fmt::Formatter::pad_integral (3 samples, 0.06%)core::ptr::drop_in_place<alloc::string::String> (1 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (1 samples, 0.02%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (1 samples, 0.02%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.02%)alloc::alloc::dealloc (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)alloc::string::String::new (1 samples, 0.02%)<&T as core::fmt::Display>::fmt (1 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (1 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (2 samples, 0.04%)<alloc::string::String as core::fmt::Write>::write_str (2 samples, 0.04%)alloc::string::String::push_str (2 samples, 0.04%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.04%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.04%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.04%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)<u64 as core::fmt::num::DisplayInt>::to_u64 (1 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.02%)alloc::raw_vec::finish_grow (2 samples, 0.04%)__rust_alloc (1 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (6 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::reserve (5 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::try_reserve (5 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::grow_amortized (5 samples, 0.10%)core::cmp::max (2 samples, 0.04%)core::cmp::Ord::max (2 samples, 0.04%)core::cmp::max_by (2 samples, 0.04%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (10 samples, 0.20%)<alloc::string::String as core::fmt::Write>::write_str (10 samples, 0.20%)alloc::string::String::push_str (10 samples, 0.20%)alloc::vec::Vec<T,A>::extend_from_slice (10 samples, 0.20%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (10 samples, 0.20%)alloc::vec::Vec<T,A>::append_elements (10 samples, 0.20%)core::ptr::mut_ptr::<impl *mut T>::add (1 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.02%)<T as alloc::string::ToString>::to_string (26 samples, 0.52%)core::fmt::Write::write_fmt (25 samples, 0.50%)core::fmt::write (24 samples, 0.48%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (15 samples, 0.30%)core::fmt::num::imp::fmt_u64 (13 samples, 0.26%)core::fmt::Formatter::pad_integral (3 samples, 0.06%)core::fmt::Formatter::pad_integral::write_prefix (1 samples, 0.02%)[libc-2.28.so] (5 samples, 0.10%)__rdl_dealloc (1 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::dealloc (1 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (13 samples, 0.26%)alloc::alloc::dealloc (13 samples, 0.26%)cfree (7 samples, 0.14%)core::ptr::drop_in_place<alloc::string::String> (14 samples, 0.28%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (14 samples, 0.28%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (14 samples, 0.28%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (14 samples, 0.28%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.02%)core::clone::Clone::clone_from (3 samples, 0.06%)[libc-2.28.so] (3 samples, 0.06%)core::slice::<impl [T]>::clone_from_slice (4 samples, 0.08%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (1 samples, 0.02%)std::f64::<impl f64>::floor (1 samples, 0.02%)[libm-2.28.so] (1 samples, 0.02%)redis_protocol::encode::gen_bulkstring (50 samples, 1.01%)redis_protocol::utils::bulkstring_encode_len (4 samples, 0.08%)redis_protocol::utils::digits_in_number (4 samples, 0.08%)std::f64::<impl f64>::log10 (2 samples, 0.04%)std::f64::<impl f64>::log_wrapper (2 samples, 0.04%)std::f64::_<impl f64>::log10::_{{closure}} (2 samples, 0.04%)__log10_finite (2 samples, 0.04%)[libm-2.28.so] (2 samples, 0.04%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.04%)@plt (1 samples, 0.02%)fred::multiplexer::commands::handle_command::_{{closure}} (479 samples, 9.64%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (479 samples, 9.64%)<core::future:..fred::multiplexer::commands::write_command_t::_{{closure}} (478 samples, 9.62%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (478 samples, 9.62%)<core::future:..fred::multiplexer::commands::write_command::_{{closure}} (478 samples, 9.62%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (478 samples, 9.62%)<core::future:..fred::multiplexer::Multiplexer::write::_{{closure}} (478 samples, 9.62%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (478 samples, 9.62%)<core::future:..fred::multiplexer::utils::write_centralized_command::_{{closure}} (478 samples, 9.62%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (478 samples, 9.62%)<core::future:..fred::multiplexer::utils::write_command::_{{closure}} (478 samples, 9.62%)fred::multiple..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (478 samples, 9.62%)<core::future:..fred::protocol::connection::write_command::_{{closure}} (478 samples, 9.62%)fred::protocol..<futures_util::sink::send::Send<Si,Item> as core::future::future::Future>::poll (129 samples, 2.60%)<f..<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_flush (84 samples, 1.69%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (84 samples, 1.69%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (84 samples, 1.69%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (84 samples, 1.69%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (84 samples, 1.69%)fred::protocol::codec::encode_frame (84 samples, 1.69%)redis_protocol::encode::encode_bytes (84 samples, 1.69%)redis_protocol::encode::attempt_encoding (84 samples, 1.69%)redis_protocol::encode::gen_array (84 samples, 1.69%)redis_protocol::utils::array_encode_len (11 samples, 0.22%)core::iter::traits::iterator::Iterator::fold (11 samples, 0.22%)redis_protocol::utils::array_encode_len::_{{closure}} (9 samples, 0.18%)core::result::Result<T,E>::and_then (9 samples, 0.18%)redis_protocol::utils::array_encode_len::_{{closure}}::_{{closure}} (9 samples, 0.18%)redis_protocol::utils::encode_len (9 samples, 0.18%)redis_protocol::utils::bulkstring_encode_len (6 samples, 0.12%)redis_protocol::utils::digits_in_number (5 samples, 0.10%)std::f64::<impl f64>::log10 (4 samples, 0.08%)std::f64::<impl f64>::log_wrapper (4 samples, 0.08%)std::f64::_<impl f64>::log10::_{{closure}} (4 samples, 0.08%)__log10_finite (4 samples, 0.08%)[libm-2.28.so] (2 samples, 0.04%)tokio::coop::poll_proceed (1 samples, 0.02%)std::thread::local::LocalKey<T>::with (1 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.02%)tokio::coop::CURRENT::__getit (1 samples, 0.02%)std::thread::local::fast::Key<T>::get (1 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (1 samples, 0.02%)core::option::Option<T>::as_ref (1 samples, 0.02%)core::sync::atomic::AtomicUsize::compare_exchange (1 samples, 0.02%)core::sync::atomic::atomic_compare_exchange (1 samples, 0.02%)core::sync::atomic::AtomicUsize::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (1 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (15 samples, 0.30%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (11 samples, 0.22%)tokio::sync::batch_semaphore::Waiter::assign_permits (2 samples, 0.04%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (2 samples, 0.04%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (2 samples, 0.04%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (23 samples, 0.46%)tokio::sync::rwlock::RwLock<T>::read::_{{closure}} (23 samples, 0.46%)tokio::sync::batch_semaphore::Semaphore::acquire (2 samples, 0.04%)core::option::Option<T>::and_then (1 samples, 0.02%)fred::multiplexer::responses::last_centralized_command_ends_transaction::_{{closure}}::_{{closure}} (1 samples, 0.02%)fred::protocol::types::RedisCommandKind::is_exec (1 samples, 0.02%)core::array::_<impl core::default::Default for [T: _]>::default (2 samples, 0.04%)tokio::runtime::task::state::State::transition_to_notified (2 samples, 0.04%)core::sync::atomic::AtomicUsize::fetch_or (2 samples, 0.04%)core::sync::atomic::atomic_or (2 samples, 0.04%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (5 samples, 0.10%)core::ops::function::FnMut::call_mut (5 samples, 0.10%)core::task::wake::Waker::wake (5 samples, 0.10%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (5 samples, 0.10%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (5 samples, 0.10%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (3 samples, 0.06%)tokio::runtime::thread_pool::worker::Shared::schedule (3 samples, 0.06%)tokio::macros::scoped_tls::ScopedKey<T>::with (3 samples, 0.06%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (1 samples, 0.02%)core::option::Option<T>::as_mut (1 samples, 0.02%)core::iter::traits::iterator::Iterator::for_each (7 samples, 0.14%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (7 samples, 0.14%)core::iter::traits::iterator::Iterator::fold (7 samples, 0.14%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (7 samples, 0.14%)core::ops::function::FnMut::call_mut (1 samples, 0.02%)core::option::Option<T>::take (1 samples, 0.02%)core::mem::take (1 samples, 0.02%)core::mem::replace (1 samples, 0.02%)core::mem::swap (1 samples, 0.02%)core::ptr::swap_nonoverlapping_one (1 samples, 0.02%)core::ptr::read (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (14 samples, 0.28%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 8]> (2 samples, 0.04%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (2 samples, 0.04%)fred::multiplexer::responses::last_centralized_command_ends_transaction::_{{closure}} (44 samples, 0.89%)core::ptr::drop_in_place<tokio::sync::rwlock::read_guard::RwLockReadGuard<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>> (18 samples, 0.36%)<tokio::sync::rwlock::read_guard::RwLockReadGuard<T> as core::ops::drop::Drop>::drop (18 samples, 0.36%)tokio::sync::batch_semaphore::Semaphore::release (3 samples, 0.06%)tokio::loom::std::parking_lot::Mutex<T>::lock (1 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (1 samples, 0.02%)tokio::sync::batch_semaphore::Acquire::project (1 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::poll_acquire::_{{closure}} (1 samples, 0.02%)<core::task::wake::Waker as core::clone::Clone>::clone (1 samples, 0.02%)tokio::runtime::task::waker::clone_waker (1 samples, 0.02%)tokio::runtime::task::state::State::ref_inc (1 samples, 0.02%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_td_cleanup (1 samples, 0.02%)xhci_giveback_urb_in_irq.isra.40 (1 samples, 0.02%)__usb_hcd_giveback_urb (1 samples, 0.02%)snd_complete_urb (1 samples, 0.02%)usb_hcd_submit_urb (1 samples, 0.02%)xhci_urb_enqueue (1 samples, 0.02%)xhci_queue_isoc_tx_prepare (1 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (13 samples, 0.26%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (11 samples, 0.22%)tokio::sync::batch_semaphore::Waiter::assign_permits (2 samples, 0.04%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (64 samples, 1.29%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (19 samples, 0.38%)tokio::sync::batch_semaphore::Semaphore::acquire (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (3 samples, 0.06%)[libc-2.28.so] (3 samples, 0.06%)[libc-2.28.so] (3 samples, 0.06%)core::ptr::mut_ptr::<impl *mut T>::add (1 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.02%)alloc::collections::vec_deque::VecDeque<T>::buffer_read (12 samples, 0.24%)core::ptr::read (11 samples, 0.22%)alloc::collections::vec_deque::VecDeque<T>::pop_front (13 samples, 0.26%)alloc::collections::vec_deque::VecDeque<T>::is_empty (1 samples, 0.02%)core::array::_<impl core::default::Default for [T: _]>::default (3 samples, 0.06%)core::iter::traits::iterator::Iterator::for_each (3 samples, 0.06%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (3 samples, 0.06%)core::iter::traits::iterator::Iterator::fold (3 samples, 0.06%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (3 samples, 0.06%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (2 samples, 0.04%)core::ops::function::FnMut::call_mut (2 samples, 0.04%)core::task::wake::Waker::wake (2 samples, 0.04%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (2 samples, 0.04%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (2 samples, 0.04%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule (2 samples, 0.04%)tokio::macros::scoped_tls::ScopedKey<T>::with (2 samples, 0.04%)std::thread::local::LocalKey<T>::with (1 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.02%)tokio::runtime::thread_pool::worker::CURRENT::FOO::__getit (1 samples, 0.02%)std::thread::local::fast::Key<T>::get (1 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (1 samples, 0.02%)core::option::Option<T>::as_ref (1 samples, 0.02%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_dma_to_transfer_ring (1 samples, 0.02%)core::mem::drop (3 samples, 0.06%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (3 samples, 0.06%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (3 samples, 0.06%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (3 samples, 0.06%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 8]> (2 samples, 0.04%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (2 samples, 0.04%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (15 samples, 0.30%)tokio::sync::batch_semaphore::Waiter::assign_permits (1 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>> (20 samples, 0.40%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (20 samples, 0.40%)tokio::sync::batch_semaphore::Semaphore::release (5 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::lock (3 samples, 0.06%)lock_api::mutex::Mutex<R,T>::lock (3 samples, 0.06%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (3 samples, 0.06%)fred::multiplexer::responses::check_pubsub_message (3 samples, 0.06%)fred::multiplexer::responses::check_redirection_error (1 samples, 0.02%)redis_protocol::types::Frame::is_moved_or_ask_error (1 samples, 0.02%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (137 samples, 2.76%)fr..futures_util::future::future::FutureExt::poll_unpin (137 samples, 2.76%)fu..<core::pin::Pin<P> as core::future::future::Future>::poll (137 samples, 2.76%)<c..<core::pin::Pin<P> as core::future::future::Future>::poll (137 samples, 2.76%)<c..<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<F as futures_core::future::TryFuture>::try_poll (137 samples, 2.76%)<F..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<F as futures_core::future::TryFuture>::try_poll (137 samples, 2.76%)<F..<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (137 samples, 2.76%)<f..<F as futures_core::future::TryFuture>::try_poll (137 samples, 2.76%)<F..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (137 samples, 2.76%)<c..fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (137 samples, 2.76%)fr..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (137 samples, 2.76%)<c..fred::multiplexer::responses::process_centralized_frame::_{{closure}} (127 samples, 2.56%)fr..fred::multiplexer::responses::process_response (1 samples, 0.02%)<core::pin::Pin<P> as futures_core::future::FusedFuture>::is_terminated (5 samples, 0.10%)<core::pin::Pin<P> as futures_core::future::FusedFuture>::is_terminated (5 samples, 0.10%)<futures_util::future::future::fuse::Fuse<Fut> as futures_core::future::FusedFuture>::is_terminated (5 samples, 0.10%)core::option::Option<T>::is_none (3 samples, 0.06%)core::option::Option<T>::is_some (3 samples, 0.06%)[libc-2.28.so] (5 samples, 0.10%)futures_util::future::future::FutureExt::poll_unpin (2 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (1 samples, 0.02%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (1 samples, 0.02%)std::sys_common::backtrace::__rust_begin_short_backtrace (13 samples, 0.26%)tokio::runtime::blocking::pool::Spawner::spawn_thread::_{{closure}} (13 samples, 0.26%)tokio::runtime::blocking::pool::Inner::run (13 samples, 0.26%)tokio::runtime::task::Notified<S>::run (13 samples, 0.26%)tokio::runtime::task::raw::RawTask::poll (13 samples, 0.26%)tokio::runtime::task::harness::Harness<T,S>::poll (13 samples, 0.26%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (13 samples, 0.26%)tokio::runtime::task::harness::poll_future (13 samples, 0.26%)std::panic::catch_unwind (13 samples, 0.26%)std::panicking::try (13 samples, 0.26%)std::panicking::try::do_call (13 samples, 0.26%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (13 samples, 0.26%)tokio::runtime::task::harness::poll_future::_{{closure}} (13 samples, 0.26%)tokio::runtime::task::core::CoreStage<T>::poll (13 samples, 0.26%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (13 samples, 0.26%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (13 samples, 0.26%)<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (13 samples, 0.26%)tokio::runtime::thread_pool::worker::Launch::launch::_{{closure}} (13 samples, 0.26%)tokio::runtime::thread_pool::worker::run (13 samples, 0.26%)tokio::macros::scoped_tls::ScopedKey<T>::set (13 samples, 0.26%)tokio::runtime::thread_pool::worker::run::_{{closure}} (13 samples, 0.26%)tokio::runtime::thread_pool::worker::Context::run (13 samples, 0.26%)tokio::runtime::thread_pool::worker::Context::run_task (13 samples, 0.26%)tokio::coop::budget (13 samples, 0.26%)tokio::coop::with_budget (13 samples, 0.26%)std::thread::local::LocalKey<T>::with (13 samples, 0.26%)std::thread::local::LocalKey<T>::try_with (13 samples, 0.26%)tokio::coop::with_budget::_{{closure}} (13 samples, 0.26%)tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (13 samples, 0.26%)tokio::runtime::task::Notified<S>::run (13 samples, 0.26%)tokio::runtime::task::raw::RawTask::poll (13 samples, 0.26%)tokio::runtime::task::harness::Harness<T,S>::poll (13 samples, 0.26%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (13 samples, 0.26%)tokio::runtime::task::harness::poll_future (13 samples, 0.26%)std::panic::catch_unwind (13 samples, 0.26%)std::panicking::try (13 samples, 0.26%)std::panicking::try::do_call (13 samples, 0.26%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (13 samples, 0.26%)tokio::runtime::task::harness::poll_future::_{{closure}} (13 samples, 0.26%)tokio::runtime::task::core::CoreStage<T>::poll (13 samples, 0.26%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (13 samples, 0.26%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (13 samples, 0.26%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (13 samples, 0.26%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (13 samples, 0.26%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (13 samples, 0.26%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (13 samples, 0.26%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (13 samples, 0.26%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (13 samples, 0.26%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)std::thread::local::LocalKey<T>::with (6 samples, 0.12%)std::thread::local::LocalKey<T>::try_with (6 samples, 0.12%)tokio::coop::with_budget::_{{closure}} (6 samples, 0.12%)tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (6 samples, 0.12%)tokio::runtime::task::Notified<S>::run (6 samples, 0.12%)tokio::runtime::task::raw::RawTask::poll (6 samples, 0.12%)tokio::runtime::task::harness::Harness<T,S>::poll (6 samples, 0.12%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (6 samples, 0.12%)tokio::runtime::task::harness::poll_future (6 samples, 0.12%)std::panic::catch_unwind (6 samples, 0.12%)std::panicking::try (6 samples, 0.12%)std::panicking::try::do_call (6 samples, 0.12%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (6 samples, 0.12%)tokio::runtime::task::harness::poll_future::_{{closure}} (6 samples, 0.12%)tokio::runtime::task::core::CoreStage<T>::poll (6 samples, 0.12%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (6 samples, 0.12%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (6 samples, 0.12%)pipeline_test::spawn_client_task::_{{closure}} (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (6 samples, 0.12%)fred::client::RedisClient::incr::_{{closure}} (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (6 samples, 0.12%)fred::commands::keys::incr::_{{closure}} (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (6 samples, 0.12%)fred::commands::one_arg_value_cmd::_{{closure}} (6 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (6 samples, 0.12%)fred::utils::request_response::_{{closure}} (6 samples, 0.12%)fred::protocol::types::RedisCommand::new (6 samples, 0.12%)alloc::sync::Arc<T>::new (6 samples, 0.12%)alloc::alloc::exchange_malloc (6 samples, 0.12%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (6 samples, 0.12%)alloc::alloc::Global::alloc_impl (6 samples, 0.12%)alloc::alloc::alloc (6 samples, 0.12%)__libc_malloc (6 samples, 0.12%)[libc-2.28.so] (6 samples, 0.12%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (3 samples, 0.06%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (3 samples, 0.06%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (3 samples, 0.06%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (3 samples, 0.06%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (3 samples, 0.06%)futures_util::future::future::FutureExt::poll_unpin (3 samples, 0.06%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.06%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (3 samples, 0.06%)<F as futures_core::future::TryFuture>::try_poll (3 samples, 0.06%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (3 samples, 0.06%)<F as futures_core::future::TryFuture>::try_poll (3 samples, 0.06%)<futures_util::future::try_future::ErrInto<Fut,E> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.06%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (3 samples, 0.06%)<F as futures_core::future::TryFuture>::try_poll (3 samples, 0.06%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (3 samples, 0.06%)[libc-2.28.so] (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::mpsc::unbounded::UnboundedSender<fred::protocol::types::RedisCommand>>>> (2 samples, 0.04%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.04%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (2 samples, 0.04%)fred::utils::incr_atomic (2 samples, 0.04%)core::sync::atomic::AtomicUsize::fetch_add (2 samples, 0.04%)core::sync::atomic::atomic_add (2 samples, 0.04%)lock_api::rwlock::RwLock<R,T>::read (10 samples, 0.20%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (10 samples, 0.20%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (5 samples, 0.10%)[libc-2.28.so] (1 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (3 samples, 0.06%)[libc-2.28.so] (3 samples, 0.06%)tokio::sync::mpsc::list::Tx<T>::push (25 samples, 0.50%)tokio::sync::mpsc::block::Block<T>::write (4 samples, 0.08%)tokio::sync::mpsc::block::Block<T>::set_ready (1 samples, 0.02%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (1 samples, 0.02%)tokio::sync::mpsc::chan::Tx<T,S>::send (51 samples, 1.03%)tokio::sync::mpsc::chan::Chan<T,S>::send (51 samples, 1.03%)tokio::sync::task::atomic_waker::AtomicWaker::wake (23 samples, 0.46%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (18 samples, 0.36%)core::sync::atomic::AtomicUsize::fetch_or (18 samples, 0.36%)core::sync::atomic::atomic_or (18 samples, 0.36%)core::sync::atomic::AtomicUsize::compare_exchange (5 samples, 0.10%)core::sync::atomic::atomic_compare_exchange (5 samples, 0.10%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (91 samples, 1.83%)<..pipeline_test::spawn_client_task::_{{closure}} (88 samples, 1.77%)p..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (88 samples, 1.77%)<..fred::client::RedisClient::incr::_{{closure}} (88 samples, 1.77%)f..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (88 samples, 1.77%)<..fred::commands::keys::incr::_{{closure}} (88 samples, 1.77%)f..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (88 samples, 1.77%)<..fred::commands::one_arg_value_cmd::_{{closure}} (88 samples, 1.77%)f..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (88 samples, 1.77%)<..fred::utils::request_response::_{{closure}} (88 samples, 1.77%)f..fred::utils::send_command (88 samples, 1.77%)f..tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (69 samples, 1.39%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (18 samples, 0.36%)core::sync::atomic::AtomicUsize::load (13 samples, 0.26%)core::sync::atomic::atomic_load (13 samples, 0.26%)__rust_probestack (3 samples, 0.06%)tokio::runtime::task::harness::Harness<T,S>::poll (96 samples, 1.93%)t..tokio::runtime::task::harness::Harness<T,S>::poll_inner (96 samples, 1.93%)t..tokio::runtime::task::harness::poll_future (96 samples, 1.93%)t..std::panic::catch_unwind (96 samples, 1.93%)s..std::panicking::try (96 samples, 1.93%)s..std::panicking::try::do_call (96 samples, 1.93%)s..<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (96 samples, 1.93%)<..tokio::runtime::task::harness::poll_future::_{{closure}} (96 samples, 1.93%)t..tokio::runtime::task::core::CoreStage<T>::poll (96 samples, 1.93%)t..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (96 samples, 1.93%)t..tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (96 samples, 1.93%)t..<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (5 samples, 0.10%)tokio::runtime::thread_pool::worker::Launch::launch::_{{closure}} (5 samples, 0.10%)tokio::runtime::thread_pool::worker::run (5 samples, 0.10%)tokio::macros::scoped_tls::ScopedKey<T>::set (5 samples, 0.10%)tokio::runtime::thread_pool::worker::run::_{{closure}} (5 samples, 0.10%)tokio::runtime::thread_pool::worker::Context::run (5 samples, 0.10%)tokio::runtime::thread_pool::worker::Context::run_task (5 samples, 0.10%)tokio::coop::budget (5 samples, 0.10%)tokio::coop::with_budget (5 samples, 0.10%)std::thread::local::LocalKey<T>::with (5 samples, 0.10%)std::thread::local::LocalKey<T>::try_with (5 samples, 0.10%)tokio::coop::with_budget::_{{closure}} (5 samples, 0.10%)tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (5 samples, 0.10%)tokio::runtime::task::Notified<S>::run (5 samples, 0.10%)tokio::runtime::task::raw::RawTask::poll (5 samples, 0.10%)tokio::runtime::task::harness::Harness<T,S>::poll (5 samples, 0.10%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (5 samples, 0.10%)tokio::runtime::task::harness::poll_future (5 samples, 0.10%)std::panic::catch_unwind (5 samples, 0.10%)std::panicking::try (5 samples, 0.10%)std::panicking::try::do_call (5 samples, 0.10%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (5 samples, 0.10%)tokio::runtime::task::harness::poll_future::_{{closure}} (5 samples, 0.10%)tokio::runtime::task::core::CoreStage<T>::poll (5 samples, 0.10%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (5 samples, 0.10%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (5 samples, 0.10%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (5 samples, 0.10%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (2 samples, 0.04%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (2 samples, 0.04%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (2 samples, 0.04%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (2 samples, 0.04%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (2 samples, 0.04%)futures_util::future::future::FutureExt::poll_unpin (2 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (2 samples, 0.04%)[libc-2.28.so] (3 samples, 0.06%)[libc-2.28.so] (5 samples, 0.10%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (11 samples, 0.22%)fred::multiplexer::commands::handle_command::_{{closure}} (2 samples, 0.04%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (22 samples, 0.44%)fred::multiplexer::commands::handle_command_t::_{{closure}} (22 samples, 0.44%)[libc-2.28.so] (11 samples, 0.22%)<F as futures_core::future::TryFuture>::try_poll (39 samples, 0.78%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (39 samples, 0.78%)fred::multiplexer::commands::init::_{{closure}}::_{{closure}}::_{{closure}} (34 samples, 0.68%)[libc-2.28.so] (6 samples, 0.12%)tokio::coop::CURRENT::__getit (2 samples, 0.04%)std::thread::local::fast::Key<T>::get (1 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (1 samples, 0.02%)core::option::Option<T>::as_ref (1 samples, 0.02%)core::cell::Cell<T>::set (4 samples, 0.08%)core::cell::Cell<T>::replace (4 samples, 0.08%)core::mem::replace (4 samples, 0.08%)core::mem::swap (4 samples, 0.08%)core::ptr::swap_nonoverlapping_one (4 samples, 0.08%)core::intrinsics::copy_nonoverlapping (4 samples, 0.08%)tokio::coop::poll_proceed (8 samples, 0.16%)std::thread::local::LocalKey<T>::with (8 samples, 0.16%)std::thread::local::LocalKey<T>::try_with (8 samples, 0.16%)tokio::coop::poll_proceed::_{{closure}} (6 samples, 0.12%)tokio::coop::Budget::decrement (2 samples, 0.04%)<tokio::loom::std::atomic_usize::AtomicUsize as tokio::sync::mpsc::chan::Semaphore>::add_permit (3 samples, 0.06%)[libc-2.28.so] (4 samples, 0.08%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (1 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::read (6 samples, 0.12%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (5 samples, 0.10%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (5 samples, 0.10%)core::ptr::read (5 samples, 0.10%)__sched_yield (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (1 samples, 0.02%)do_syscall_64 (1 samples, 0.02%)__x64_sys_sched_yield (1 samples, 0.02%)schedule (1 samples, 0.02%)__schedule (1 samples, 0.02%)pick_next_task_fair (1 samples, 0.02%)update_curr (1 samples, 0.02%)cpuacct_charge (1 samples, 0.02%)std::thread::yield_now (1 samples, 0.02%)std::sys::unix::thread::Thread::yield_now (1 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::reclaim_blocks (4 samples, 0.08%)tokio::sync::mpsc::list::Tx<T>::reclaim_block (1 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::reclaim (1 samples, 0.02%)<T as core::convert::TryFrom<U>>::try_from (1 samples, 0.02%)pick_next_task_fair (3 samples, 0.06%)pick_next_entity (1 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::pop (23 samples, 0.46%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (11 samples, 0.22%)__sched_yield (4 samples, 0.08%)entry_SYSCALL_64_after_hwframe (4 samples, 0.08%)do_syscall_64 (4 samples, 0.08%)__x64_sys_sched_yield (4 samples, 0.08%)schedule (4 samples, 0.08%)__schedule (4 samples, 0.08%)update_rq_clock (1 samples, 0.02%)sched_clock_cpu (1 samples, 0.02%)sched_clock (1 samples, 0.02%)native_sched_clock (1 samples, 0.02%)<tokio_stream::wrappers::mpsc_unbounded::UnboundedReceiverStream<T> as futures_core::stream::Stream>::poll_next (43 samples, 0.87%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (43 samples, 0.87%)tokio::sync::mpsc::chan::Rx<T,S>::recv (43 samples, 0.87%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (33 samples, 0.66%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (33 samples, 0.66%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (3 samples, 0.06%)tokio::sync::task::atomic_waker::AtomicWaker::do_register (2 samples, 0.04%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.02%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::_{{closure}} (1 samples, 0.02%)<&core::task::wake::Waker as tokio::sync::task::atomic_waker::WakerRef>::into_waker (1 samples, 0.02%)<core::task::wake::Waker as core::clone::Clone>::clone (1 samples, 0.02%)tokio::runtime::task::waker::clone_waker (1 samples, 0.02%)tokio::runtime::task::state::State::ref_inc (1 samples, 0.02%)<S as futures_core::stream::TryStream>::try_poll_next (49 samples, 0.99%)<futures_util::stream::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next (49 samples, 0.99%)core::option::Option<T>::map (1 samples, 0.02%)<futures_util::stream::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next::_{{closure}} (1 samples, 0.02%)[libc-2.28.so] (7 samples, 0.14%)core::option::Option<T>::as_pin_mut (1 samples, 0.02%)core::option::Option<T>::as_mut (1 samples, 0.02%)core::option::Option<T>::is_some (1 samples, 0.02%)[libc-2.28.so] (43 samples, 0.87%)core::pin::Pin<P>::set (49 samples, 0.99%)core::ptr::drop_in_place<core::option::Option<core::future::from_generator::GenFuture<fred::multiplexer::commands::init::{{closure}}::{{closure}}::{{closure}}>>> (2 samples, 0.04%)core::ptr::drop_in_place<core::option::Option<(alloc::sync::Arc<fred::client::RedisClientInner>,fred::multiplexer::Multiplexer)>> (2 samples, 0.04%)fred::client::RedisClient::connect::_{{closure}} (153 samples, 3.08%)fre..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (153 samples, 3.08%)<co..fred::multiplexer::commands::init::_{{closure}} (153 samples, 3.08%)fre..<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (153 samples, 3.08%)<fu..futures_util::stream::try_stream::try_fold::_::<impl futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F>>::project (1 samples, 0.02%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (5 samples, 0.10%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (5 samples, 0.10%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (5 samples, 0.10%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (5 samples, 0.10%)<F as futures_core::future::TryFuture>::try_poll (1 samples, 0.02%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (1 samples, 0.02%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.02%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.02%)core::mem::drop (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,tokio::sync::broadcast::Slot<fred::error::RedisError>>> (1 samples, 0.02%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,tokio::sync::broadcast::Slot<fred::error::RedisError>>> (4 samples, 0.08%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.08%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (4 samples, 0.08%)std::panic::catch_unwind (175 samples, 3.52%)std..std::panicking::try (175 samples, 3.52%)std..std::panicking::try::do_call (175 samples, 3.52%)std..<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (175 samples, 3.52%)<st..tokio::runtime::task::harness::poll_future::_{{closure}} (175 samples, 3.52%)tok..tokio::runtime::task::core::CoreStage<T>::poll (175 samples, 3.52%)tok..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (175 samples, 3.52%)tok..tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (175 samples, 3.52%)tok..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (175 samples, 3.52%)<co..fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (22 samples, 0.44%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (22 samples, 0.44%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (22 samples, 0.44%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (22 samples, 0.44%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (22 samples, 0.44%)futures_util::future::future::FutureExt::poll_unpin (22 samples, 0.44%)<core::pin::Pin<P> as core::future::future::Future>::poll (22 samples, 0.44%)<core::pin::Pin<P> as core::future::future::Future>::poll (22 samples, 0.44%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (22 samples, 0.44%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (17 samples, 0.34%)<F as futures_core::future::TryFuture>::try_poll (17 samples, 0.34%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (17 samples, 0.34%)<F as futures_core::future::TryFuture>::try_poll (17 samples, 0.34%)<futures_util::future::try_future::ErrInto<Fut,E> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (17 samples, 0.34%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (17 samples, 0.34%)<F as futures_core::future::TryFuture>::try_poll (17 samples, 0.34%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (17 samples, 0.34%)tokio::sync::broadcast::Receiver<T>::recv::_{{closure}} (17 samples, 0.34%)<tokio::sync::broadcast::Recv<T> as core::future::future::Future>::poll (16 samples, 0.32%)tokio::sync::broadcast::Receiver<T>::recv_ref (16 samples, 0.32%)tokio::loom::std::parking_lot::RwLock<T>::read (8 samples, 0.16%)lock_api::rwlock::RwLock<R,T>::read (8 samples, 0.16%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (8 samples, 0.16%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (2 samples, 0.04%)core::sync::atomic::AtomicUsize::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)tokio::runtime::task::harness::poll_future (176 samples, 3.54%)toki..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.02%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::client::RedisClient::connect::_{{closure}} (1 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.02%)fred::multiplexer::commands::init::_{{closure}} (1 samples, 0.02%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (1 samples, 0.02%)<F as futures_core::future::TryFuture>::try_poll (1 samples, 0.02%)tokio::sync::mpsc::chan::Rx<T,S>::recv (1 samples, 0.02%)core::ptr::drop_in_place<tokio::coop::RestoreOnPending> (1 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::pop (1 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::read (1 samples, 0.02%)__sched_yield (1 samples, 0.02%)entry_SYSCALL_64 (1 samples, 0.02%)fred::client::RedisClient::connect::_{{closure}} (8 samples, 0.16%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (4 samples, 0.08%)fred::multiplexer::commands::init::_{{closure}} (4 samples, 0.08%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (2 samples, 0.04%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (2 samples, 0.04%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (2 samples, 0.04%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (2 samples, 0.04%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (2 samples, 0.04%)futures_util::future::future::FutureExt::poll_unpin (2 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (2 samples, 0.04%)<F as futures_core::future::TryFuture>::try_poll (2 samples, 0.04%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (2 samples, 0.04%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (2 samples, 0.04%)<T as core::convert::Into<U>>::into (2 samples, 0.04%)<fred::types::RedisValue as core::convert::From<fred::types::RedisKey>>::from (2 samples, 0.04%)__libc_malloc (2 samples, 0.04%)<T as core::convert::Into<U>>::into (12 samples, 0.24%)<fred::types::RedisKey as core::convert::From<&str>>::from (4 samples, 0.08%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (4 samples, 0.08%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (4 samples, 0.08%)alloc::slice::<impl [T]>::to_vec (4 samples, 0.08%)alloc::slice::<impl [T]>::to_vec_in (4 samples, 0.08%)alloc::slice::hack::to_vec (4 samples, 0.08%)<T as alloc::slice::hack::ConvertVec>::to_vec (4 samples, 0.08%)alloc::vec::Vec<T,A>::with_capacity_in (4 samples, 0.08%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (4 samples, 0.08%)alloc::raw_vec::RawVec<T,A>::allocate_in (4 samples, 0.08%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (4 samples, 0.08%)alloc::alloc::Global::alloc_impl (4 samples, 0.08%)alloc::alloc::alloc (3 samples, 0.06%)__rdl_alloc (1 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (2 samples, 0.04%)[libc-2.28.so] (2 samples, 0.04%)[libc-2.28.so] (18 samples, 0.36%)__libc_malloc (13 samples, 0.26%)[libc-2.28.so] (6 samples, 0.12%)fred::commands::one_arg_value_cmd::_{{closure}}::_{{closure}} (17 samples, 0.34%)alloc::alloc::exchange_malloc (14 samples, 0.28%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (14 samples, 0.28%)alloc::alloc::Global::alloc_impl (14 samples, 0.28%)alloc::alloc::alloc (14 samples, 0.28%)__rust_alloc (1 samples, 0.02%)__libc_malloc (6 samples, 0.12%)alloc::sync::Arc<T>::new (7 samples, 0.14%)alloc::alloc::exchange_malloc (7 samples, 0.14%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (7 samples, 0.14%)alloc::alloc::Global::alloc_impl (7 samples, 0.14%)alloc::alloc::alloc (7 samples, 0.14%)__rdl_alloc (1 samples, 0.02%)fred::protocol::types::RedisCommand::new (11 samples, 0.22%)std::time::Instant::now (2 samples, 0.04%)std::sys::unix::time::inner::Instant::now (2 samples, 0.04%)std::sys::unix::time::inner::now (2 samples, 0.04%)__clock_gettime (2 samples, 0.04%)fred::utils::send_command (1 samples, 0.02%)<alloc::sync::Arc<T> as core::clone::Clone>::clone (2 samples, 0.04%)core::sync::atomic::AtomicUsize::fetch_add (2 samples, 0.04%)core::sync::atomic::atomic_add (2 samples, 0.04%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (76 samples, 1.53%)fred::utils::request_response::_{{closure}} (76 samples, 1.53%)tokio::sync::oneshot::channel (7 samples, 0.14%)alloc::sync::Arc<T>::new (5 samples, 0.10%)alloc::alloc::exchange_malloc (5 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (5 samples, 0.10%)alloc::alloc::Global::alloc_impl (5 samples, 0.10%)alloc::alloc::alloc (5 samples, 0.10%)__libc_malloc (5 samples, 0.10%)fred::protocol::utils::frame_to_single_result (2 samples, 0.04%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (94 samples, 1.89%)<..fred::commands::one_arg_value_cmd::_{{closure}} (94 samples, 1.89%)f..fred::utils::request_response (4 samples, 0.08%)core::future::from_generator (4 samples, 0.08%)[libc-2.28.so] (20 samples, 0.40%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (136 samples, 2.74%)<c..fred::client::RedisClient::incr::_{{closure}} (136 samples, 2.74%)fr..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (135 samples, 2.72%)<c..fred::commands::keys::incr::_{{closure}} (135 samples, 2.72%)fr..fred::commands::one_arg_ok_cmd (5 samples, 0.10%)core::future::from_generator (5 samples, 0.10%)core::ptr::drop_in_place<fred::types::RedisValue> (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Context::run (168 samples, 3.38%)tok..tokio::runtime::thread_pool::worker::Context::run_task (168 samples, 3.38%)tok..tokio::coop::budget (168 samples, 3.38%)tok..tokio::coop::with_budget (168 samples, 3.38%)tok..std::thread::local::LocalKey<T>::with (168 samples, 3.38%)std..std::thread::local::LocalKey<T>::try_with (168 samples, 3.38%)std..tokio::coop::with_budget::_{{closure}} (168 samples, 3.38%)tok..tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (168 samples, 3.38%)tok..tokio::runtime::task::Notified<S>::run (168 samples, 3.38%)tok..tokio::runtime::task::raw::RawTask::poll (168 samples, 3.38%)tok..tokio::runtime::task::harness::Harness<T,S>::poll (168 samples, 3.38%)tok..tokio::runtime::task::harness::Harness<T,S>::poll_inner (168 samples, 3.38%)tok..tokio::runtime::task::harness::poll_future (168 samples, 3.38%)tok..std::panic::catch_unwind (168 samples, 3.38%)std..std::panicking::try (168 samples, 3.38%)std..std::panicking::try::do_call (168 samples, 3.38%)std..<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (168 samples, 3.38%)<st..tokio::runtime::task::harness::poll_future::_{{closure}} (168 samples, 3.38%)tok..tokio::runtime::task::core::CoreStage<T>::poll (168 samples, 3.38%)tok..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (168 samples, 3.38%)tok..tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (168 samples, 3.38%)tok..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (168 samples, 3.38%)<co..pipeline_test::spawn_client_task::_{{closure}} (157 samples, 3.16%)pip..pipeline_test::utils::incr_atomic (7 samples, 0.14%)core::num::<impl usize>::saturating_add (7 samples, 0.14%)<T as core::convert::Into<U>>::into (4 samples, 0.08%)<fred::types::RedisKey as core::convert::From<&str>>::from (4 samples, 0.08%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (4 samples, 0.08%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (4 samples, 0.08%)alloc::slice::<impl [T]>::to_vec (4 samples, 0.08%)alloc::slice::<impl [T]>::to_vec_in (4 samples, 0.08%)alloc::slice::hack::to_vec (4 samples, 0.08%)<T as alloc::slice::hack::ConvertVec>::to_vec (4 samples, 0.08%)alloc::vec::Vec<T,A>::with_capacity_in (4 samples, 0.08%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (4 samples, 0.08%)alloc::raw_vec::RawVec<T,A>::allocate_in (4 samples, 0.08%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (4 samples, 0.08%)alloc::alloc::Global::alloc_impl (4 samples, 0.08%)alloc::alloc::alloc (4 samples, 0.08%)__libc_malloc (4 samples, 0.08%)[libc-2.28.so] (4 samples, 0.08%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (6 samples, 0.12%)fred::utils::request_response::_{{closure}} (6 samples, 0.12%)fred::protocol::types::RedisCommand::new (6 samples, 0.12%)std::time::Instant::now (6 samples, 0.12%)std::sys::unix::time::inner::Instant::now (6 samples, 0.12%)std::sys::unix::time::inner::now (6 samples, 0.12%)__clock_gettime (6 samples, 0.12%)__vdso_clock_gettime (5 samples, 0.10%)[[vdso]] (4 samples, 0.08%)[unknown] (2,744 samples, 55.22%)[unknown]tokio::runtime::thread_pool::worker::Context::run_task (14 samples, 0.28%)tokio::coop::budget (14 samples, 0.28%)tokio::coop::with_budget (14 samples, 0.28%)std::thread::local::LocalKey<T>::with (14 samples, 0.28%)std::thread::local::LocalKey<T>::try_with (14 samples, 0.28%)tokio::coop::with_budget::_{{closure}} (14 samples, 0.28%)tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (14 samples, 0.28%)tokio::runtime::task::Notified<S>::run (14 samples, 0.28%)tokio::runtime::task::raw::RawTask::poll (14 samples, 0.28%)tokio::runtime::task::harness::Harness<T,S>::poll (14 samples, 0.28%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (14 samples, 0.28%)tokio::runtime::task::harness::poll_future (14 samples, 0.28%)std::panic::catch_unwind (14 samples, 0.28%)std::panicking::try (14 samples, 0.28%)std::panicking::try::do_call (14 samples, 0.28%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (14 samples, 0.28%)tokio::runtime::task::harness::poll_future::_{{closure}} (14 samples, 0.28%)tokio::runtime::task::core::CoreStage<T>::poll (14 samples, 0.28%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (14 samples, 0.28%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (14 samples, 0.28%)pipeline_test::spawn_client_task::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (14 samples, 0.28%)fred::client::RedisClient::incr::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (14 samples, 0.28%)fred::commands::keys::incr::_{{closure}} (14 samples, 0.28%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (10 samples, 0.20%)fred::commands::one_arg_value_cmd::_{{closure}} (10 samples, 0.20%)fred::protocol::utils::frame_to_single_result (4 samples, 0.08%)core::ptr::drop_in_place<redis_protocol::types::Frame> (2 samples, 0.04%)ret_from_fork (6 samples, 0.12%)schedule_tail (6 samples, 0.12%)finish_task_switch (6 samples, 0.12%)call_function_interrupt (6 samples, 0.12%)smp_call_function_interrupt (6 samples, 0.12%)flush_smp_call_function_queue (6 samples, 0.12%)flush_tlb_func_remote (6 samples, 0.12%)entry_SYSCALL_64_after_hwframe (1 samples, 0.02%)do_syscall_64 (1 samples, 0.02%)__x64_sys_exit (1 samples, 0.02%)do_exit (1 samples, 0.02%)exit_signals (1 samples, 0.02%)_raw_spin_lock_irq (1 samples, 0.02%)native_queued_spin_lock_slowpath (1 samples, 0.02%)_raw_spin_lock_irq (1 samples, 0.02%)native_queued_spin_lock_slowpath (1 samples, 0.02%)__perf_event_task_sched_out (1 samples, 0.02%)ctx_sched_out (1 samples, 0.02%)amd_pmu_disable_all (1 samples, 0.02%)x86_pmu_disable_all (1 samples, 0.02%)native_read_msr (1 samples, 0.02%)down_read (8 samples, 0.16%)call_rwsem_down_read_failed (8 samples, 0.16%)rwsem_down_read_failed (8 samples, 0.16%)schedule (7 samples, 0.14%)__schedule (7 samples, 0.14%)finish_task_switch (6 samples, 0.12%)call_function_interrupt (6 samples, 0.12%)smp_call_function_interrupt (6 samples, 0.12%)flush_smp_call_function_queue (6 samples, 0.12%)llist_reverse_order (5 samples, 0.10%)find_vma_prev (12 samples, 0.24%)find_vma (12 samples, 0.24%)call_function_interrupt (6 samples, 0.12%)lru_add_drain (6 samples, 0.12%)lru_add_drain_cpu (6 samples, 0.12%)pagevec_lru_move_fn (6 samples, 0.12%)_raw_spin_lock_irqsave (6 samples, 0.12%)flush_tlb_mm_range (3 samples, 0.06%)smp_call_function_many (2 samples, 0.04%)madvise (30 samples, 0.60%)entry_SYSCALL_64_after_hwframe (30 samples, 0.60%)do_syscall_64 (30 samples, 0.60%)__x64_sys_madvise (30 samples, 0.60%)zap_page_range (10 samples, 0.20%)tlb_finish_mmu (4 samples, 0.08%)arch_tlb_finish_mmu (4 samples, 0.08%)tlb_flush_mmu_free (1 samples, 0.02%)release_pages (1 samples, 0.02%)_raw_spin_lock_irqsave (1 samples, 0.02%)native_queued_spin_lock_slowpath (1 samples, 0.02%)alloc::alloc::box_free (1 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::context::EnterGuard> (1 samples, 0.02%)<tokio::runtime::context::EnterGuard as core::ops::drop::Drop>::drop (1 samples, 0.02%)std::thread::local::LocalKey<T>::with (1 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.02%)<tokio::runtime::context::EnterGuard as core::ops::drop::Drop>::drop::_{{closure}} (1 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<tokio::runtime::handle::Handle>> (1 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::handle::Handle> (1 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::spawner::Spawner> (1 samples, 0.02%)core::mem::drop (5 samples, 0.10%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::runtime::blocking::pool::Shared>> (5 samples, 0.10%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (5 samples, 0.10%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (5 samples, 0.10%)parking_lot::raw_mutex::RawMutex::unlock_slow (5 samples, 0.10%)parking_lot_core::parking_lot::unpark_one (5 samples, 0.10%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (5 samples, 0.10%)parking_lot::raw_mutex::RawMutex::lock_slow (5 samples, 0.10%)parking_lot_core::parking_lot::park (5 samples, 0.10%)parking_lot_core::parking_lot::with_thread_data (5 samples, 0.10%)parking_lot_core::parking_lot::park::_{{closure}} (5 samples, 0.10%)parking_lot_core::parking_lot::lock_bucket (5 samples, 0.10%)parking_lot_core::parking_lot::hash (5 samples, 0.10%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park_until (5 samples, 0.10%)parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (5 samples, 0.10%)syscall (5 samples, 0.10%)entry_SYSCALL_64_after_hwframe (5 samples, 0.10%)tokio::loom::std::parking_lot::Condvar::wait_timeout (11 samples, 0.22%)parking_lot::condvar::Condvar::wait_for (11 samples, 0.22%)parking_lot::condvar::Condvar::wait_until_internal (11 samples, 0.22%)parking_lot_core::parking_lot::park (6 samples, 0.12%)parking_lot_core::parking_lot::with_thread_data (6 samples, 0.12%)parking_lot_core::parking_lot::park::_{{closure}} (6 samples, 0.12%)core::ops::function::FnOnce::call_once (1 samples, 0.02%)parking_lot::condvar::Condvar::wait_until_internal::_{{closure}} (1 samples, 0.02%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (6 samples, 0.12%)swapgs_restore_regs_and_return_to_usermode (1 samples, 0.02%)parking_lot_core::parking_lot::hash (6 samples, 0.12%)tokio::loom::std::parking_lot::Mutex<T>::lock (13 samples, 0.26%)lock_api::mutex::Mutex<R,T>::lock (13 samples, 0.26%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (13 samples, 0.26%)parking_lot::raw_mutex::RawMutex::lock_slow (13 samples, 0.26%)parking_lot_core::parking_lot::park (13 samples, 0.26%)parking_lot_core::parking_lot::with_thread_data (13 samples, 0.26%)parking_lot_core::parking_lot::park::_{{closure}} (13 samples, 0.26%)parking_lot_core::parking_lot::lock_bucket (7 samples, 0.14%)parking_lot_core::word_lock::WordLock::lock (1 samples, 0.02%)parking_lot_core::word_lock::WordLock::lock_slow (1 samples, 0.02%)parking_lot_core::spinwait::SpinWait::spin (1 samples, 0.02%)parking_lot_core::spinwait::cpu_relax (1 samples, 0.02%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (1 samples, 0.02%)tokio::time::driver::<impl tokio::time::driver::handle::Handle>::process (1 samples, 0.02%)tokio::time::driver::ClockTime::now (1 samples, 0.02%)tokio::time::clock::Clock::now (1 samples, 0.02%)tokio::time::clock::now (1 samples, 0.02%)std::time::Instant::now (1 samples, 0.02%)std::sys::unix::time::inner::Instant::now (1 samples, 0.02%)std::sys::unix::time::inner::now (1 samples, 0.02%)__clock_gettime (1 samples, 0.02%)__vdso_clock_gettime (1 samples, 0.02%)[[vdso]] (1 samples, 0.02%)mio::poll::Poll::poll (1 samples, 0.02%)mio::sys::unix::selector::epoll::Selector::select (1 samples, 0.02%)epoll_wait (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)<tokio::io::driver::Driver as tokio::park::Park>::park_timeout (2 samples, 0.04%)tokio::io::driver::Driver::turn (2 samples, 0.04%)tokio::io::driver::Driver::dispatch (1 samples, 0.02%)tokio::io::driver::scheduled_io::ScheduledIo::set_readiness (1 samples, 0.02%)<tokio::signal::unix::driver::Driver as tokio::park::Park>::park_timeout (3 samples, 0.06%)tokio::signal::unix::driver::Driver::process (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_read_ready (1 samples, 0.02%)tokio::io::driver::registration::Registration::poll_ready (1 samples, 0.02%)tokio::time::driver::Driver<P>::park_timeout (4 samples, 0.08%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park_timeout (4 samples, 0.08%)<tokio::process::imp::driver::Driver as tokio::park::Park>::park_timeout (4 samples, 0.08%)tokio::process::imp::GlobalOrphanQueue::reap_orphans (1 samples, 0.02%)tokio::process::imp::orphan::OrphanQueueImpl<T>::reap_orphans (1 samples, 0.02%)tokio::loom::std::parking_lot::Mutex<T>::try_lock (1 samples, 0.02%)lock_api::mutex::Mutex<R,T>::try_lock (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::try_lock (1 samples, 0.02%)<tokio::runtime::park::Parker as tokio::park::Park>::park_timeout (7 samples, 0.14%)<tokio::runtime::driver::Driver as tokio::park::Park>::park_timeout (6 samples, 0.12%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park_timeout (6 samples, 0.12%)<tokio::time::driver::Driver<P> as tokio::park::Park>::park_timeout (6 samples, 0.12%)tokio::time::driver::Driver<P>::park_internal (6 samples, 0.12%)tokio::time::driver::wheel::Wheel::next_expiration_time (1 samples, 0.02%)tokio::runtime::thread_pool::worker::Context::park_timeout (8 samples, 0.16%)tokio::runtime::queue::Local<T>::is_stealable (1 samples, 0.02%)tokio::runtime::queue::Inner<T>::is_empty (1 samples, 0.02%)core::sync::atomic::AtomicU16::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)tokio::runtime::thread_pool::worker::Context::maintenance (9 samples, 0.18%)tokio::runtime::thread_pool::worker::Core::maintenance (1 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (1 samples, 0.02%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park (1 samples, 0.02%)<tokio::time::driver::Driver<P> as tokio::park::Park>::park (1 samples, 0.02%)tokio::time::driver::Driver<P>::park_internal (1 samples, 0.02%)tokio::time::driver::<impl tokio::time::driver::handle::Handle>::process (1 samples, 0.02%)tokio::io::driver::Driver::turn (1 samples, 0.02%)mio::poll::Poll::poll (1 samples, 0.02%)mio::sys::unix::selector::epoll::Selector::select (1 samples, 0.02%)epoll_wait (1 samples, 0.02%)entry_SYSCALL_64 (1 samples, 0.02%)entry_SYSCALL_64 (14 samples, 0.28%)_raw_spin_lock (3 samples, 0.06%)do_sched_yield (23 samples, 0.46%)yield_task_fair (10 samples, 0.20%)_raw_spin_lock (6 samples, 0.12%)__list_add_valid (3 samples, 0.06%)check_cfs_rq_runtime (1 samples, 0.02%)pick_next_entity (12 samples, 0.24%)clear_buddies (5 samples, 0.10%)__calc_delta (8 samples, 0.16%)__cgroup_account_cputime (2 samples, 0.04%)cgroup_rstat_updated (1 samples, 0.02%)cpuacct_charge (28 samples, 0.56%)pick_next_task_fair (109 samples, 2.19%)p..update_curr (60 samples, 1.21%)update_min_vruntime (7 samples, 0.14%)rcu_note_context_switch (2 samples, 0.04%)entry_SYSCALL_64_after_hwframe (196 samples, 3.94%)entr..do_syscall_64 (192 samples, 3.86%)do_s..__x64_sys_sched_yield (186 samples, 3.74%)__x6..schedule (162 samples, 3.26%)sch..__schedule (156 samples, 3.14%)__s..update_rq_clock (18 samples, 0.36%)sched_clock_cpu (16 samples, 0.32%)sched_clock (16 samples, 0.32%)native_sched_clock (16 samples, 0.32%)__sched_yield (221 samples, 4.45%)__sch..syscall_return_via_sysret (3 samples, 0.06%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)hrtimer_interrupt (1 samples, 0.02%)__hrtimer_run_queues (1 samples, 0.02%)hrtimer_wakeup (1 samples, 0.02%)try_to_wake_up (1 samples, 0.02%)ttwu_do_activate (1 samples, 0.02%)enqueue_task_fair (1 samples, 0.02%)enqueue_entity (1 samples, 0.02%)update_load_avg (1 samples, 0.02%)dbs_update_util_handler (1 samples, 0.02%)parking_lot::condvar::Condvar::wait_until_internal (4 samples, 0.08%)parking_lot_core::parking_lot::park (4 samples, 0.08%)parking_lot_core::parking_lot::with_thread_data (4 samples, 0.08%)parking_lot_core::parking_lot::park::_{{closure}} (4 samples, 0.08%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (4 samples, 0.08%)parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (4 samples, 0.08%)syscall (4 samples, 0.08%)entry_SYSCALL_64 (4 samples, 0.08%)std::thread::yield_now (2 samples, 0.04%)std::sys::unix::thread::Thread::yield_now (2 samples, 0.04%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,()>> (11 samples, 0.22%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (11 samples, 0.22%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (6 samples, 0.12%)swapgs_restore_regs_and_return_to_usermode (1 samples, 0.02%)core::sync::atomic::AtomicUsize::compare_exchange (12 samples, 0.24%)core::sync::atomic::atomic_compare_exchange (12 samples, 0.24%)__sched_yield (6 samples, 0.12%)entry_SYSCALL_64 (6 samples, 0.12%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (31 samples, 0.62%)irq_work_interrupt (1 samples, 0.02%)smp_irq_work_interrupt (1 samples, 0.02%)irq_work_run (1 samples, 0.02%)irq_work_run_list (1 samples, 0.02%)core::sync::atomic::AtomicI32::load (33 samples, 0.66%)core::sync::atomic::atomic_load (33 samples, 0.66%)plist_add (2 samples, 0.04%)_raw_spin_lock (1 samples, 0.02%)__const_udelay (9 samples, 0.18%)amd_pmu_addr_offset (1 samples, 0.02%)delay_mwaitx (82 samples, 1.65%)amd_pmu_wait_on_overflow (121 samples, 2.44%)am..native_read_msr (26 samples, 0.52%)amd_pmu_addr_offset (11 samples, 0.22%)native_read_msr (42 samples, 0.85%)amd_pmu_disable_all (248 samples, 4.99%)amd_pm..x86_pmu_disable_all (123 samples, 2.48%)x8..native_write_msr (63 samples, 1.27%)sched_clock_cpu (3 samples, 0.06%)sched_clock (3 samples, 0.06%)native_sched_clock (3 samples, 0.06%)ctx_sched_out (254 samples, 5.11%)ctx_sc..x86_pmu_disable (2 samples, 0.04%)__perf_event_task_sched_out (261 samples, 5.25%)__perf..task_ctx_sched_out (1 samples, 0.02%)_raw_spin_lock (1 samples, 0.02%)account_entity_dequeue (4 samples, 0.08%)reweight_entity (3 samples, 0.06%)update_cfs_group (4 samples, 0.08%)__calc_delta (3 samples, 0.06%)__cgroup_account_cputime (1 samples, 0.02%)cpuacct_charge (2 samples, 0.04%)update_curr (15 samples, 0.30%)update_min_vruntime (1 samples, 0.02%)__update_load_avg_cfs_rq (2 samples, 0.04%)dequeue_entity (41 samples, 0.83%)update_load_avg (11 samples, 0.22%)__update_load_avg_se (3 samples, 0.06%)dequeue_task_fair (45 samples, 0.91%)update_min_vruntime (1 samples, 0.02%)apic_timer_interrupt (6 samples, 0.12%)smp_apic_timer_interrupt (6 samples, 0.12%)hrtimer_interrupt (6 samples, 0.12%)__hrtimer_run_queues (6 samples, 0.12%)timerfd_tmrproc (6 samples, 0.12%)timerfd_triggered (6 samples, 0.12%)__wake_up_common (6 samples, 0.12%)ep_poll_callback (6 samples, 0.12%)finish_task_switch (12 samples, 0.24%)irq_work_interrupt (6 samples, 0.12%)smp_irq_work_interrupt (6 samples, 0.12%)irq_work_run (6 samples, 0.12%)irq_work_run_list (6 samples, 0.12%)queue_work_on (6 samples, 0.12%)__queue_work (6 samples, 0.12%)insert_work (6 samples, 0.12%)pick_next_task_fair (10 samples, 0.20%)load_balance (1 samples, 0.02%)cpumask_next_and (1 samples, 0.02%)find_next_and_bit (1 samples, 0.02%)__update_idle_core (6 samples, 0.12%)pick_next_task_idle (9 samples, 0.18%)put_prev_task_fair (3 samples, 0.06%)put_prev_entity (3 samples, 0.06%)futex_wait_queue_me (355 samples, 7.14%)futex_wait..schedule (353 samples, 7.10%)schedule__schedule (352 samples, 7.08%)__scheduleupdate_rq_clock (5 samples, 0.10%)sched_clock_cpu (5 samples, 0.10%)sched_clock (5 samples, 0.10%)native_sched_clock (5 samples, 0.10%)_raw_spin_lock (2 samples, 0.04%)get_futex_key (8 samples, 0.16%)get_futex_value_locked (3 samples, 0.06%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (624 samples, 12.56%)<parking_lot_core::..parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (493 samples, 9.92%)parking_lot_co..syscall (493 samples, 9.92%)syscallentry_SYSCALL_64_after_hwframe (426 samples, 8.57%)entry_SYSCAL..do_syscall_64 (420 samples, 8.45%)do_syscall_64__x64_sys_futex (400 samples, 8.05%)__x64_sys_f..do_futex (397 samples, 7.99%)do_futexfutex_wait (397 samples, 7.99%)futex_waitfutex_wait_setup (36 samples, 0.72%)hash_futex (2 samples, 0.04%)core::ops::function::FnOnce::call_once (1 samples, 0.02%)parking_lot::condvar::Condvar::wait_until_internal::_{{closure}} (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.02%)parking_lot_core::parking_lot::hash (1 samples, 0.02%)parking_lot_core::parking_lot::lock_bucket (12 samples, 0.24%)parking_lot_core::word_lock::WordLock::lock (11 samples, 0.22%)parking_lot_core::parking_lot::park::_{{closure}} (640 samples, 12.88%)parking_lot_core::p..parking_lot_core::word_lock::WordLock::unlock (3 samples, 0.06%)core::sync::atomic::AtomicUsize::fetch_sub (3 samples, 0.06%)core::sync::atomic::atomic_sub (3 samples, 0.06%)tokio::loom::std::parking_lot::Condvar::wait (691 samples, 13.91%)tokio::loom::std::par..parking_lot::condvar::Condvar::wait (691 samples, 13.91%)parking_lot::condvar:..parking_lot::condvar::Condvar::wait_until_internal (684 samples, 13.77%)parking_lot::condvar:..parking_lot_core::parking_lot::park (642 samples, 12.92%)parking_lot_core::p..parking_lot_core::parking_lot::with_thread_data (642 samples, 12.92%)parking_lot_core::p..std::thread::local::LocalKey<T>::try_with (2 samples, 0.04%)tokio::runtime::park::Inner::park_condvar (720 samples, 14.49%)tokio::runtime::park::..tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.04%)mio::event::events::Events::iter (1 samples, 0.02%)core::result::Result<T,E>::map (1 samples, 0.02%)[libc-2.28.so] (1 samples, 0.02%)__fget_light (5 samples, 0.10%)__fget (5 samples, 0.10%)__pm_relax (5 samples, 0.10%)_raw_spin_lock_irq (3 samples, 0.06%)eventfd_poll (2 samples, 0.04%)irq_work_interrupt (1 samples, 0.02%)smp_irq_work_interrupt (1 samples, 0.02%)irq_work_run (1 samples, 0.02%)irq_work_run_list (1 samples, 0.02%)perf_pending_event (1 samples, 0.02%)perf_event_wakeup (1 samples, 0.02%)__wake_up_common_lock (1 samples, 0.02%)__wake_up_common (1 samples, 0.02%)pollwake (1 samples, 0.02%)try_to_wake_up (1 samples, 0.02%)llist_add_batch (1 samples, 0.02%)ep_scan_ready_list.constprop.22 (144 samples, 2.90%)ep..ep_send_events_proc (129 samples, 2.60%)ep..ep_item_poll.isra.18 (113 samples, 2.27%)e..sock_poll (55 samples, 1.11%)tcp_poll (24 samples, 0.48%)tcp_stream_memory_free (8 samples, 0.16%)__const_udelay (7 samples, 0.14%)delay_mwaitx (31 samples, 0.62%)amd_pmu_wait_on_overflow (42 samples, 0.85%)native_read_msr (4 samples, 0.08%)amd_pmu_addr_offset (1 samples, 0.02%)native_read_msr (15 samples, 0.30%)amd_pmu_disable_all (93 samples, 1.87%)a..x86_pmu_disable_all (47 samples, 0.95%)native_write_msr (28 samples, 0.56%)ctx_sched_out (96 samples, 1.93%)c..x86_pmu_disable (2 samples, 0.04%)__perf_event_task_sched_out (100 samples, 2.01%)_..task_ctx_sched_out (1 samples, 0.02%)_raw_spin_lock (3 samples, 0.06%)account_entity_dequeue (1 samples, 0.02%)reweight_entity (1 samples, 0.02%)update_cfs_group (3 samples, 0.06%)update_curr (2 samples, 0.04%)update_min_vruntime (1 samples, 0.02%)__update_load_avg_cfs_rq (1 samples, 0.02%)dequeue_task_fair (16 samples, 0.32%)dequeue_entity (14 samples, 0.28%)update_load_avg (6 samples, 0.12%)__update_load_avg_se (1 samples, 0.02%)finish_task_switch (7 samples, 0.14%)apic_timer_interrupt (7 samples, 0.14%)smp_apic_timer_interrupt (7 samples, 0.14%)hrtimer_interrupt (7 samples, 0.14%)__hrtimer_run_queues (1 samples, 0.02%)hrtimer_wakeup (1 samples, 0.02%)try_to_wake_up (1 samples, 0.02%)ttwu_do_activate (1 samples, 0.02%)enqueue_task_fair (1 samples, 0.02%)pick_next_task_fair (3 samples, 0.06%)pick_next_task_idle (2 samples, 0.04%)put_prev_task_fair (2 samples, 0.04%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_update_erst_dequeue (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (290 samples, 5.84%)entry_S..do_syscall_64 (289 samples, 5.82%)do_sysc..__x64_sys_epoll_wait (289 samples, 5.82%)__x64_s..do_epoll_wait (289 samples, 5.82%)do_epol..ep_poll (283 samples, 5.70%)ep_pollschedule_hrtimeout_range_clock (137 samples, 2.76%)sc..schedule (137 samples, 2.76%)sc..__schedule (137 samples, 2.76%)__..update_rq_clock (2 samples, 0.04%)sched_clock_cpu (2 samples, 0.04%)sched_clock (2 samples, 0.04%)native_sched_clock (2 samples, 0.04%)mio::poll::Poll::poll (298 samples, 6.00%)mio::pol..mio::sys::unix::selector::epoll::Selector::select (298 samples, 6.00%)mio::sys..epoll_wait (297 samples, 5.98%)epoll_wa..syscall_return_via_sysret (1 samples, 0.02%)tokio::io::driver::scheduled_io::ScheduledIo::set_readiness (9 samples, 0.18%)core::sync::atomic::AtomicUsize::load (5 samples, 0.10%)core::sync::atomic::atomic_load (5 samples, 0.10%)core::array::_<impl core::default::Default for [T: 32]>::default (1 samples, 0.02%)core::mem::drop (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::io::driver::scheduled_io::Waiters>> (1 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.02%)core::sync::atomic::AtomicU8::compare_exchange (1 samples, 0.02%)core::sync::atomic::atomic_compare_exchange (1 samples, 0.02%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 32]> (5 samples, 0.10%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (5 samples, 0.10%)tokio::runtime::task::harness::Harness<T,S>::drop_reference (1 samples, 0.02%)tokio::runtime::task::state::State::ref_dec (1 samples, 0.02%)tokio::runtime::task::state::State::transition_to_notified (2 samples, 0.04%)core::sync::atomic::AtomicUsize::fetch_or (2 samples, 0.04%)core::sync::atomic::atomic_or (2 samples, 0.04%)core::ptr::const_ptr::<impl *const T>::is_null (1 samples, 0.02%)core::ptr::const_ptr::<impl *const T>::guaranteed_eq (1 samples, 0.02%)core::task::wake::Waker::wake (7 samples, 0.14%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (7 samples, 0.14%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (6 samples, 0.12%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (4 samples, 0.08%)tokio::runtime::thread_pool::worker::Shared::schedule (4 samples, 0.08%)tokio::macros::scoped_tls::ScopedKey<T>::with (4 samples, 0.08%)std::thread::local::LocalKey<T>::with (1 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.02%)tokio::io::driver::scheduled_io::ScheduledIo::wake (15 samples, 0.30%)tokio::io::driver::scheduled_io::ScheduledIo::wake0 (15 samples, 0.30%)tokio::loom::std::parking_lot::Mutex<T>::lock (1 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (1 samples, 0.02%)tokio::util::slab::CachedPage<T>::get (1 samples, 0.02%)tokio::io::driver::Driver::dispatch (26 samples, 0.52%)tokio::util::slab::Slab<T>::get (2 samples, 0.04%)tokio::util::slab::Page<T>::slot (1 samples, 0.02%)<tokio::io::driver::Driver as tokio::park::Park>::park (333 samples, 6.70%)<tokio::i..tokio::io::driver::Driver::turn (333 samples, 6.70%)tokio::io..tokio::io::driver::ready::Ready::from_mio (2 samples, 0.04%)mio::event::event::Event::is_readable (1 samples, 0.02%)mio::sys::unix::selector::epoll::event::is_readable (1 samples, 0.02%)core::task::wake::Waker::will_wake (1 samples, 0.02%)<core::task::wake::RawWaker as core::cmp::PartialEq>::eq (1 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (1 samples, 0.02%)<core::task::wake::RawWakerVTable as core::cmp::PartialEq>::eq (1 samples, 0.02%)tokio::io::driver::Direction::mask (1 samples, 0.02%)<tokio::signal::unix::driver::Driver as tokio::park::Park>::park (342 samples, 6.88%)<tokio::s..tokio::signal::unix::driver::Driver::process (8 samples, 0.16%)tokio::io::driver::registration::Registration::poll_read_ready (7 samples, 0.14%)tokio::io::driver::registration::Registration::poll_ready (7 samples, 0.14%)tokio::io::driver::scheduled_io::ScheduledIo::poll_readiness (5 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.04%)core::sync::atomic::AtomicU8::compare_exchange_weak (2 samples, 0.04%)core::sync::atomic::atomic_compare_exchange_weak (2 samples, 0.04%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,alloc::vec::Vec<std::process::Child>>> (1 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,core::option::Option<tokio::sync::watch::Receiver<()>>>> (2 samples, 0.04%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (2 samples, 0.04%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park (347 samples, 6.98%)<tokio::p..<tokio::process::imp::driver::Driver as tokio::park::Park>::park (347 samples, 6.98%)<tokio::p..tokio::process::imp::GlobalOrphanQueue::reap_orphans (5 samples, 0.10%)tokio::process::imp::orphan::OrphanQueueImpl<T>::reap_orphans (5 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::lock (1 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (1 samples, 0.02%)core::mem::drop (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::time::driver::InnerState>> (1 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.02%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 32]> (9 samples, 0.18%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (6 samples, 0.12%)tokio::time::driver::Inner::lock (2 samples, 0.04%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.04%)tokio::time::driver::handle::Handle::get (1 samples, 0.02%)tokio::time::driver::wheel::Wheel::poll (3 samples, 0.06%)tokio::time::driver::wheel::Wheel::next_expiration (3 samples, 0.06%)tokio::time::driver::wheel::level::Level::next_expiration (3 samples, 0.06%)tokio::time::driver::wheel::level::Level::next_occupied_slot (3 samples, 0.06%)tokio::time::driver::<impl tokio::time::driver::handle::Handle>::process_at_time (16 samples, 0.32%)tokio::time::driver::wheel::Wheel::poll_at (1 samples, 0.02%)tokio::time::driver::wheel::Wheel::next_expiration (1 samples, 0.02%)tokio::time::driver::wheel::level::Level::next_expiration (1 samples, 0.02%)tokio::time::driver::<impl tokio::time::driver::handle::Handle>::process (22 samples, 0.44%)tokio::time::driver::ClockTime::now (6 samples, 0.12%)tokio::time::clock::Clock::now (6 samples, 0.12%)tokio::time::clock::now (6 samples, 0.12%)std::time::Instant::now (6 samples, 0.12%)std::sys::unix::time::inner::Instant::now (6 samples, 0.12%)std::sys::unix::time::inner::now (6 samples, 0.12%)__clock_gettime (5 samples, 0.10%)__vdso_clock_gettime (3 samples, 0.06%)[[vdso]] (3 samples, 0.06%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park (373 samples, 7.51%)<tokio::pa..<tokio::time::driver::Driver<P> as tokio::park::Park>::park (373 samples, 7.51%)<tokio::ti..tokio::time::driver::Driver<P>::park_internal (373 samples, 7.51%)tokio::tim..tokio::time::driver::wheel::Wheel::next_expiration_time (1 samples, 0.02%)tokio::time::driver::wheel::Wheel::next_expiration (1 samples, 0.02%)tokio::time::driver::wheel::level::Level::next_expiration (1 samples, 0.02%)<tokio::runtime::driver::Driver as tokio::park::Park>::park (376 samples, 7.57%)<tokio::ru..__sched_yield (3 samples, 0.06%)entry_SYSCALL_64 (3 samples, 0.06%)tokio::runtime::park::Inner::park_driver (381 samples, 7.67%)tokio::run..core::result::Result<T,E>::unwrap (2 samples, 0.04%)<tokio::runtime::park::Parker as tokio::park::Park>::park (1,354 samples, 27.25%)<tokio::runtime::park::Parker as tokio::park..tokio::runtime::park::Inner::park (1,348 samples, 27.13%)tokio::runtime::park::Inner::parktokio::util::try_lock::TryLock<T>::try_lock (5 samples, 0.10%)core::cell::RefCell<T>::borrow_mut (29 samples, 0.58%)core::cell::RefCell<T>::try_borrow_mut (29 samples, 0.58%)core::cell::BorrowRefMut::new (29 samples, 0.58%)core::cell::Cell<T>::set (18 samples, 0.36%)core::cell::Cell<T>::replace (18 samples, 0.36%)core::mem::replace (18 samples, 0.36%)core::mem::swap (18 samples, 0.36%)core::ptr::swap_nonoverlapping_one (18 samples, 0.36%)core::intrinsics::copy_nonoverlapping (18 samples, 0.36%)core::ptr::drop_in_place<core::option::Option<tokio::runtime::park::Parker>> (7 samples, 0.14%)core::result::Result<T,E>::expect (2 samples, 0.04%)core::sync::atomic::AtomicU16::load (5 samples, 0.10%)core::sync::atomic::atomic_load (5 samples, 0.10%)tokio::runtime::thread_pool::worker::Context::park_timeout (1,400 samples, 28.17%)tokio::runtime::thread_pool::worker::Context:..tokio::runtime::queue::Local<T>::is_stealable (6 samples, 0.12%)tokio::runtime::queue::Inner<T>::is_empty (6 samples, 0.12%)core::sync::atomic::AtomicU32::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::runtime::task::inject::Pointers>> (4 samples, 0.08%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.08%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (4 samples, 0.08%)tokio::runtime::task::inject::Inject<T>::is_closed (30 samples, 0.60%)tokio::loom::std::parking_lot::Mutex<T>::lock (26 samples, 0.52%)lock_api::mutex::Mutex<R,T>::lock (26 samples, 0.52%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (26 samples, 0.52%)tokio::runtime::thread_pool::worker::Core::maintenance (37 samples, 0.74%)tokio::runtime::thread_pool::worker::Worker::inject (5 samples, 0.10%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)irq_exit (1 samples, 0.02%)__softirqentry_text_start (1 samples, 0.02%)run_rebalance_domains (1 samples, 0.02%)update_blocked_averages (1 samples, 0.02%)update_load_avg (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,alloc::vec::Vec<usize>>> (1 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.02%)core::slice::<impl [T]>::contains (1 samples, 0.02%)<T as core::slice::cmp::SliceContains>::slice_contains (1 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::any (1 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.02%)tokio::runtime::thread_pool::idle::Idle::is_parked (12 samples, 0.24%)tokio::loom::std::parking_lot::Mutex<T>::lock (10 samples, 0.20%)lock_api::mutex::Mutex<R,T>::lock (10 samples, 0.20%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (10 samples, 0.20%)tokio::runtime::thread_pool::worker::Core::transition_from_parked (16 samples, 0.32%)tokio::runtime::thread_pool::idle::Idle::unpark_worker_by_id (3 samples, 0.06%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,alloc::vec::Vec<usize>>> (1 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,alloc::vec::Vec<usize>>> (10 samples, 0.20%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (10 samples, 0.20%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (10 samples, 0.20%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.04%)parking_lot::raw_mutex::RawMutex::lock_slow (1 samples, 0.02%)parking_lot_core::spinwait::SpinWait::spin (1 samples, 0.02%)parking_lot_core::thread_parker::imp::thread_yield (1 samples, 0.02%)__sched_yield (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (1 samples, 0.02%)do_syscall_64 (1 samples, 0.02%)__x64_sys_sched_yield (1 samples, 0.02%)schedule (1 samples, 0.02%)__schedule (1 samples, 0.02%)pick_next_task_fair (1 samples, 0.02%)update_curr (1 samples, 0.02%)cpuacct_charge (1 samples, 0.02%)tokio::runtime::thread_pool::idle::Idle::transition_worker_to_parked (13 samples, 0.26%)tokio::runtime::thread_pool::idle::State::dec_num_unparked (1 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_sub (1 samples, 0.02%)core::sync::atomic::atomic_sub (1 samples, 0.02%)tokio::runtime::thread_pool::worker::Context::park (1,470 samples, 29.58%)tokio::runtime::thread_pool::worker::Context::pa..tokio::runtime::thread_pool::worker::Core::transition_to_parked (17 samples, 0.34%)tokio::runtime::thread_pool::worker::Shared::notify_if_work_pending (4 samples, 0.08%)tokio::runtime::queue::Steal<T>::is_empty (4 samples, 0.08%)tokio::runtime::queue::Inner<T>::is_empty (4 samples, 0.08%)core::sync::atomic::AtomicU32::load (3 samples, 0.06%)core::sync::atomic::atomic_load (3 samples, 0.06%)core::cell::RefCell<T>::borrow_mut (1 samples, 0.02%)core::cell::RefCell<T>::try_borrow_mut (1 samples, 0.02%)core::cell::RefCell<T>::borrow_mut (9 samples, 0.18%)core::cell::RefCell<T>::try_borrow_mut (9 samples, 0.18%)core::cell::BorrowRefMut::new (9 samples, 0.18%)core::cell::Cell<T>::set (1 samples, 0.02%)core::cell::Cell<T>::replace (1 samples, 0.02%)core::mem::replace (1 samples, 0.02%)core::mem::swap (1 samples, 0.02%)core::ptr::swap_nonoverlapping_one (1 samples, 0.02%)core::intrinsics::copy_nonoverlapping (1 samples, 0.02%)core::option::Option<T>::take (11 samples, 0.22%)core::mem::take (11 samples, 0.22%)core::mem::replace (11 samples, 0.22%)core::mem::swap (11 samples, 0.22%)core::ptr::swap_nonoverlapping_one (11 samples, 0.22%)core::intrinsics::copy_nonoverlapping (11 samples, 0.22%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)hrtimer_interrupt (1 samples, 0.02%)__hrtimer_run_queues (1 samples, 0.02%)tick_sched_timer (1 samples, 0.02%)ktime_get (1 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<tokio::runtime::thread_pool::worker::Core>>> (1 samples, 0.02%)tokio::runtime::task::harness::SchedulerView<S>::transition_to_running (6 samples, 0.12%)tokio::runtime::task::state::State::transition_to_running (6 samples, 0.12%)tokio::runtime::task::state::State::fetch_update (3 samples, 0.06%)core::sync::atomic::AtomicUsize::compare_exchange (2 samples, 0.04%)core::sync::atomic::atomic_compare_exchange (2 samples, 0.04%)__rust_probestack (2 samples, 0.04%)core::task::poll::Poll<T>::is_ready (2 samples, 0.04%)__rust_probestack (1 samples, 0.02%)<core::pin::Pin<P> as futures_core::future::FusedFuture>::is_terminated (1 samples, 0.02%)<core::pin::Pin<P> as futures_core::future::FusedFuture>::is_terminated (1 samples, 0.02%)<futures_util::future::future::fuse::Fuse<Fut> as futures_core::future::FusedFuture>::is_terminated (1 samples, 0.02%)core::option::Option<T>::is_none (1 samples, 0.02%)core::option::Option<T>::is_some (1 samples, 0.02%)[libc-2.28.so] (5 samples, 0.10%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (13 samples, 0.26%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (11 samples, 0.22%)futures_util::future::future::FutureExt::poll_unpin (1 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.02%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (1 samples, 0.02%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (1 samples, 0.02%)futures_util::async_await::random::random::RNG::__getit (1 samples, 0.02%)std::thread::local::fast::Key<T>::get (1 samples, 0.02%)<core::num::wrapping::Wrapping<u64> as core::ops::bit::Shl<usize>>::shl (1 samples, 0.02%)core::num::<impl u64>::wrapping_shl (1 samples, 0.02%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (51 samples, 1.03%)tokio::runtime::task::harness::poll_future::_{{closure}} (49 samples, 0.99%)tokio::runtime::task::core::CoreStage<T>::poll (46 samples, 0.93%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (42 samples, 0.85%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (39 samples, 0.78%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (36 samples, 0.72%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (27 samples, 0.54%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (25 samples, 0.50%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (24 samples, 0.48%)futures_util::async_await::random::shuffle (8 samples, 0.16%)futures_util::async_await::random::gen_index (8 samples, 0.16%)futures_util::async_await::random::random (3 samples, 0.06%)std::thread::local::LocalKey<T>::with (3 samples, 0.06%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.06%)futures_util::async_await::random::random::_{{closure}} (2 samples, 0.04%)<core::num::wrapping::Wrapping<u64> as core::ops::bit::Shr<usize>>::shr (1 samples, 0.02%)core::num::<impl u64>::wrapping_shr (1 samples, 0.02%)std::panic::catch_unwind (63 samples, 1.27%)std::panicking::try (63 samples, 1.27%)std::panicking::try::do_call (63 samples, 1.27%)core::mem::manually_drop::ManuallyDrop<T>::new (12 samples, 0.24%)[libc-2.28.so] (7 samples, 0.14%)tokio::runtime::task::state::Snapshot::is_cancelled (3 samples, 0.06%)core::sync::atomic::AtomicUsize::compare_exchange (1 samples, 0.02%)core::sync::atomic::atomic_compare_exchange (1 samples, 0.02%)tokio::runtime::task::state::State::transition_to_idle (4 samples, 0.08%)tokio::runtime::task::state::State::fetch_update (4 samples, 0.08%)tokio::runtime::task::state::State::load (3 samples, 0.06%)core::sync::atomic::AtomicUsize::load (3 samples, 0.06%)core::sync::atomic::atomic_load (3 samples, 0.06%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (88 samples, 1.77%)t..tokio::runtime::task::harness::poll_future (81 samples, 1.63%)tokio::sync::oneshot::State::is_closed (5 samples, 0.10%)<tokio::io::driver::Handle as tokio::park::Unpark>::unpark (1 samples, 0.02%)tokio::io::driver::Handle::wakeup (1 samples, 0.02%)mio::sys::unix::waker::eventfd::Waker::wake (1 samples, 0.02%)<&std::fs::File as std::io::Write>::write (1 samples, 0.02%)std::sys::unix::fs::File::write (1 samples, 0.02%)std::sys::unix::fd::FileDesc::write (1 samples, 0.02%)__libc_write (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (1 samples, 0.02%)do_syscall_64 (1 samples, 0.02%)ksys_write (1 samples, 0.02%)vfs_write (1 samples, 0.02%)eventfd_write (1 samples, 0.02%)__wake_up_common (1 samples, 0.02%)ep_poll_callback (1 samples, 0.02%)__wake_up_common (1 samples, 0.02%)try_to_wake_up (1 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::poll (107 samples, 2.15%)t..tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::yield_now (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule (2 samples, 0.04%)tokio::macros::scoped_tls::ScopedKey<T>::with (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule_local (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::notify_parked (2 samples, 0.04%)tokio::runtime::thread_pool::idle::Idle::worker_to_notify (1 samples, 0.02%)tokio::runtime::thread_pool::idle::Idle::notify_should_wakeup (1 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_add (1 samples, 0.02%)core::sync::atomic::atomic_add (1 samples, 0.02%)tokio::coop::budget (152 samples, 3.06%)tok..tokio::coop::with_budget (152 samples, 3.06%)tok..std::thread::local::LocalKey<T>::with (152 samples, 3.06%)std..std::thread::local::LocalKey<T>::try_with (146 samples, 2.94%)st..tokio::coop::with_budget::_{{closure}} (144 samples, 2.90%)to..tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (144 samples, 2.90%)to..tokio::runtime::task::Notified<S>::run (123 samples, 2.48%)to..tokio::runtime::task::raw::RawTask::poll (123 samples, 2.48%)to..tokio::runtime::task::raw::poll (6 samples, 0.12%)tokio::runtime::thread_pool::idle::Idle::transition_worker_from_searching (6 samples, 0.12%)tokio::runtime::thread_pool::idle::State::dec_num_searching (6 samples, 0.12%)__fdget_pos (3 samples, 0.06%)__fget_light (3 samples, 0.06%)__fget (2 samples, 0.04%)fput (1 samples, 0.02%)__vfs_write (1 samples, 0.02%)__list_add_valid (2 samples, 0.04%)_raw_spin_lock_irqsave (5 samples, 0.10%)select_task_rq_fair (2 samples, 0.04%)__wake_up_common (8 samples, 0.16%)try_to_wake_up (8 samples, 0.16%)ttwu_do_activate (1 samples, 0.02%)enqueue_task_fair (1 samples, 0.02%)enqueue_entity (1 samples, 0.02%)rb_insert_color_cached (1 samples, 0.02%)__wake_up_common (14 samples, 0.28%)ep_poll_callback (13 samples, 0.26%)_raw_spin_lock_irqsave (3 samples, 0.06%)native_queued_spin_lock_slowpath (1 samples, 0.02%)eventfd_write (18 samples, 0.36%)_copy_from_user (4 samples, 0.08%)copy_user_generic_string (3 samples, 0.06%)fsnotify (1 samples, 0.02%)entry_SYSCALL_64_after_hwframe (26 samples, 0.52%)do_syscall_64 (26 samples, 0.52%)ksys_write (26 samples, 0.52%)vfs_write (22 samples, 0.44%)security_file_permission (2 samples, 0.04%)common_file_perm (2 samples, 0.04%)mio::sys::unix::waker::eventfd::Waker::wake (27 samples, 0.54%)<&std::fs::File as std::io::Write>::write (27 samples, 0.54%)std::sys::unix::fs::File::write (27 samples, 0.54%)std::sys::unix::fd::FileDesc::write (27 samples, 0.54%)__libc_write (27 samples, 0.54%)syscall_return_via_sysret (1 samples, 0.02%)<tokio::io::driver::Handle as tokio::park::Unpark>::unpark (30 samples, 0.60%)tokio::io::driver::Handle::wakeup (30 samples, 0.60%)tokio::io::driver::Handle::inner (3 samples, 0.06%)alloc::sync::Weak<T>::upgrade (3 samples, 0.06%)<tokio::park::either::Either<A,B> as tokio::park::Unpark>::unpark (2 samples, 0.04%)<tokio::runtime::park::Unparker as tokio::park::Unpark>::unpark (7 samples, 0.14%)tokio::runtime::park::Inner::unpark (7 samples, 0.14%)tokio::runtime::park::Inner::unpark_condvar (1 samples, 0.02%)tokio::loom::std::parking_lot::Mutex<T>::lock (1 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (1 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (1 samples, 0.02%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::unpark_lock (1 samples, 0.02%)core::sync::atomic::AtomicI32::store (1 samples, 0.02%)core::sync::atomic::atomic_store (1 samples, 0.02%)std::time::Instant::now (3 samples, 0.06%)std::sys::unix::time::inner::Instant::now (3 samples, 0.06%)std::sys::unix::time::inner::now (3 samples, 0.06%)parking_lot::condvar::Condvar::wait_until_internal (3 samples, 0.06%)parking_lot_core::parking_lot::park (3 samples, 0.06%)parking_lot_core::parking_lot::with_thread_data (3 samples, 0.06%)parking_lot_core::parking_lot::park::_{{closure}} (3 samples, 0.06%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (3 samples, 0.06%)parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (3 samples, 0.06%)syscall (3 samples, 0.06%)entry_SYSCALL_64 (3 samples, 0.06%)get_futex_key (6 samples, 0.12%)get_futex_key_refs.isra.12 (2 samples, 0.04%)hash_futex (1 samples, 0.02%)mark_wake_futex (18 samples, 0.36%)wake_q_add (6 samples, 0.12%)_raw_spin_lock (1 samples, 0.02%)_raw_spin_unlock_irqrestore (1 samples, 0.02%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_td_cleanup (1 samples, 0.02%)xhci_giveback_urb_in_irq.isra.40 (1 samples, 0.02%)__usb_hcd_giveback_urb (1 samples, 0.02%)usb_led_activity (1 samples, 0.02%)sched_clock_cpu (2 samples, 0.04%)sched_clock (2 samples, 0.04%)native_sched_clock (2 samples, 0.04%)select_idle_sibling (4 samples, 0.08%)available_idle_cpu (4 samples, 0.08%)select_task_rq_fair (25 samples, 0.50%)update_cfs_rq_h_load (2 samples, 0.04%)__enqueue_entity (1 samples, 0.02%)account_entity_enqueue (4 samples, 0.08%)update_cfs_group (1 samples, 0.02%)ttwu_do_activate (14 samples, 0.28%)enqueue_task_fair (14 samples, 0.28%)enqueue_entity (11 samples, 0.22%)update_load_avg (1 samples, 0.02%)__update_load_avg_cfs_rq (1 samples, 0.02%)ttwu_do_wakeup (2 samples, 0.04%)check_preempt_curr (2 samples, 0.04%)resched_curr (1 samples, 0.02%)<parking_lot_core::thread_parker::imp::UnparkHandle as parking_lot_core::thread_parker::UnparkHandleT>::unpark (102 samples, 2.05%)<..syscall (99 samples, 1.99%)s..entry_SYSCALL_64_after_hwframe (98 samples, 1.97%)e..do_syscall_64 (98 samples, 1.97%)d..__x64_sys_futex (98 samples, 1.97%)_..do_futex (97 samples, 1.95%)d..futex_wake (96 samples, 1.93%)f..wake_up_q (57 samples, 1.15%)try_to_wake_up (57 samples, 1.15%)update_rq_clock (1 samples, 0.02%)sched_clock_cpu (1 samples, 0.02%)parking_lot_core::parking_lot::FairTimeout::should_timeout (3 samples, 0.06%)std::time::Instant::now (3 samples, 0.06%)std::sys::unix::time::inner::Instant::now (3 samples, 0.06%)std::sys::unix::time::inner::now (3 samples, 0.06%)__clock_gettime (2 samples, 0.04%)__vdso_clock_gettime (1 samples, 0.02%)[[vdso]] (1 samples, 0.02%)parking_lot_core::parking_lot::lock_bucket_pair (2 samples, 0.04%)parking_lot::condvar::Condvar::notify_one_slow (112 samples, 2.25%)p..parking_lot_core::parking_lot::unpark_requeue (109 samples, 2.19%)p..parking_lot_core::parking_lot::unlock_bucket_pair (1 samples, 0.02%)parking_lot_core::word_lock::WordLock::unlock (1 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_sub (1 samples, 0.02%)core::sync::atomic::atomic_sub (1 samples, 0.02%)tokio::runtime::thread_pool::worker::Context::run_task (316 samples, 6.36%)tokio::r..tokio::runtime::thread_pool::worker::Core::transition_from_searching (161 samples, 3.24%)tok..tokio::runtime::thread_pool::worker::Shared::transition_worker_from_searching (161 samples, 3.24%)tok..tokio::runtime::thread_pool::worker::Shared::notify_parked (155 samples, 3.12%)tok..tokio::runtime::thread_pool::idle::Idle::worker_to_notify (4 samples, 0.08%)tokio::runtime::thread_pool::idle::Idle::notify_should_wakeup (4 samples, 0.08%)core::sync::atomic::AtomicUsize::fetch_add (2 samples, 0.04%)core::sync::atomic::atomic_add (2 samples, 0.04%)tokio::runtime::task::inject::Inject<T>::pop (3 samples, 0.06%)tokio::runtime::task::inject::Inject<T>::is_empty (3 samples, 0.06%)core::option::Option<T>::or_else (5 samples, 0.10%)tokio::runtime::thread_pool::worker::Core::next_task::_{{closure}} (4 samples, 0.08%)tokio::runtime::thread_pool::worker::Core::next_local_task (1 samples, 0.02%)core::option::Option<T>::or_else (1 samples, 0.02%)tokio::runtime::thread_pool::worker::Core::next_local_task::_{{closure}} (1 samples, 0.02%)tokio::runtime::queue::Local<T>::pop (1 samples, 0.02%)ret_from_intr (1 samples, 0.02%)do_IRQ (1 samples, 0.02%)handle_irq (1 samples, 0.02%)handle_edge_irq (1 samples, 0.02%)handle_irq_event (1 samples, 0.02%)handle_irq_event_percpu (1 samples, 0.02%)__handle_irq_event_percpu (1 samples, 0.02%)xhci_irq (1 samples, 0.02%)xhci_td_cleanup (1 samples, 0.02%)xhci_giveback_urb_in_irq.isra.40 (1 samples, 0.02%)__usb_hcd_giveback_urb (1 samples, 0.02%)snd_complete_urb (1 samples, 0.02%)prepare_playback_urb (1 samples, 0.02%)xhci_get_frame (1 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<tokio::runtime::task::Notified<alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>>> (2 samples, 0.04%)core::sync::atomic::AtomicU32::load (2 samples, 0.04%)core::sync::atomic::atomic_load (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Core::next_task (27 samples, 0.54%)tokio::runtime::thread_pool::worker::Core::next_local_task (7 samples, 0.14%)core::option::Option<T>::or_else (7 samples, 0.14%)tokio::runtime::thread_pool::worker::Core::next_local_task::_{{closure}} (5 samples, 0.10%)tokio::runtime::queue::Local<T>::pop (5 samples, 0.10%)tokio::runtime::queue::unpack (1 samples, 0.02%)core::num::<impl u16>::wrapping_add (1 samples, 0.02%)core::num::<impl u16>::wrapping_sub (2 samples, 0.04%)core::sync::atomic::AtomicU16::load (1 samples, 0.02%)core::sync::atomic::atomic_load (1 samples, 0.02%)core::sync::atomic::AtomicU32::load (4 samples, 0.08%)core::sync::atomic::atomic_load (4 samples, 0.08%)tokio::runtime::queue::Steal<T>::steal_into (104 samples, 2.09%)t..tokio::runtime::queue::Steal<T>::steal_into2 (101 samples, 2.03%)t..tokio::runtime::queue::unpack (65 samples, 1.31%)tokio::runtime::task::inject::Inject<T>::pop (2 samples, 0.04%)tokio::runtime::task::inject::Inject<T>::is_empty (2 samples, 0.04%)tokio::runtime::thread_pool::worker::Core::transition_to_searching (8 samples, 0.16%)apic_timer_interrupt (1 samples, 0.02%)smp_apic_timer_interrupt (1 samples, 0.02%)irq_exit (1 samples, 0.02%)__softirqentry_text_start (1 samples, 0.02%)run_rebalance_domains (1 samples, 0.02%)update_blocked_averages (1 samples, 0.02%)tokio::runtime::thread_pool::worker::Core::steal_work (143 samples, 2.88%)to..tokio::util::rand::FastRand::fastrand_n (2 samples, 0.04%)tokio::util::rand::FastRand::fastrand (2 samples, 0.04%)<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once (2,007 samples, 40.39%)<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::cal..<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once (2,007 samples, 40.39%)<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::cal..core::ops::function::FnOnce::call_once{{vtable.shim}} (2,006 samples, 40.37%)core::ops::function::FnOnce::call_once{{vtable.shim}}std::thread::Builder::spawn_unchecked::_{{closure}} (2,006 samples, 40.37%)std::thread::Builder::spawn_unchecked::_{{closure}}std::panic::catch_unwind (2,006 samples, 40.37%)std::panic::catch_unwindstd::panicking::try (2,006 samples, 40.37%)std::panicking::trystd::panicking::try::do_call (2,006 samples, 40.37%)std::panicking::try::do_call<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (2,006 samples, 40.37%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()..std::thread::Builder::spawn_unchecked::_{{closure}}::_{{closure}} (2,006 samples, 40.37%)std::thread::Builder::spawn_unchecked::_{{closure}}::_{{closure}}std::sys_common::backtrace::__rust_begin_short_backtrace (2,006 samples, 40.37%)std::sys_common::backtrace::__rust_begin_short_backtracetokio::runtime::blocking::pool::Spawner::spawn_thread::_{{closure}} (2,006 samples, 40.37%)tokio::runtime::blocking::pool::Spawner::spawn_thread::_{{closure}}tokio::runtime::blocking::pool::Inner::run (2,005 samples, 40.35%)tokio::runtime::blocking::pool::Inner::runtokio::runtime::task::Notified<S>::run (1,976 samples, 39.77%)tokio::runtime::task::Notified<S>::runtokio::runtime::task::raw::RawTask::poll (1,976 samples, 39.77%)tokio::runtime::task::raw::RawTask::polltokio::runtime::task::harness::Harness<T,S>::poll (1,976 samples, 39.77%)tokio::runtime::task::harness::Harness<T,S>::polltokio::runtime::task::harness::Harness<T,S>::poll_inner (1,976 samples, 39.77%)tokio::runtime::task::harness::Harness<T,S>::poll_innertokio::runtime::task::harness::poll_future (1,976 samples, 39.77%)tokio::runtime::task::harness::poll_futurestd::panic::catch_unwind (1,976 samples, 39.77%)std::panic::catch_unwindstd::panicking::try (1,976 samples, 39.77%)std::panicking::trystd::panicking::try::do_call (1,976 samples, 39.77%)std::panicking::try::do_call<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (1,976 samples, 39.77%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<(..tokio::runtime::task::harness::poll_future::_{{closure}} (1,976 samples, 39.77%)tokio::runtime::task::harness::poll_future::_{{closure}}tokio::runtime::task::core::CoreStage<T>::poll (1,976 samples, 39.77%)tokio::runtime::task::core::CoreStage<T>::polltokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1,976 samples, 39.77%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_muttokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (1,976 samples, 39.77%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}}<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (1,976 samples, 39.77%)<tokio::runtime::blocking::task::BlockingTask<T> as core::future:..tokio::runtime::thread_pool::worker::Launch::launch::_{{closure}} (1,976 samples, 39.77%)tokio::runtime::thread_pool::worker::Launch::launch::_{{closure}}tokio::runtime::thread_pool::worker::run (1,976 samples, 39.77%)tokio::runtime::thread_pool::worker::runtokio::macros::scoped_tls::ScopedKey<T>::set (1,970 samples, 39.65%)tokio::macros::scoped_tls::ScopedKey<T>::settokio::runtime::thread_pool::worker::run::_{{closure}} (1,970 samples, 39.65%)tokio::runtime::thread_pool::worker::run::_{{closure}}tokio::runtime::thread_pool::worker::Context::run (1,970 samples, 39.65%)tokio::runtime::thread_pool::worker::Context::runtokio::runtime::thread_pool::worker::Core::tick (1 samples, 0.02%)do_munmap (5 samples, 0.10%)find_vma (5 samples, 0.10%)down_write_killable (6 samples, 0.12%)call_rwsem_down_write_failed_killable (6 samples, 0.12%)rwsem_down_write_failed_killable (6 samples, 0.12%)schedule (6 samples, 0.12%)__schedule (6 samples, 0.12%)dequeue_task_fair (6 samples, 0.12%)dequeue_entity (6 samples, 0.12%)update_curr (6 samples, 0.12%)__task_rq_lock (1 samples, 0.02%)_raw_spin_lock (1 samples, 0.02%)native_queued_spin_lock_slowpath (1 samples, 0.02%)clone (2,057 samples, 41.40%)clonestart_thread (2,051 samples, 41.28%)start_threadstd::sys::unix::thread::Thread::new::thread_start (2,020 samples, 40.65%)std::sys::unix::thread::Thread::new::thread_startcore::ptr::drop_in_place<std::sys::unix::stack_overflow::Handler> (13 samples, 0.26%)<std::sys::unix::stack_overflow::Handler as core::ops::drop::Drop>::drop (13 samples, 0.26%)std::sys::unix::stack_overflow::imp::drop_handler (13 samples, 0.26%)__munmap (13 samples, 0.26%)entry_SYSCALL_64_after_hwframe (13 samples, 0.26%)do_syscall_64 (13 samples, 0.26%)__x64_sys_munmap (13 samples, 0.26%)vm_munmap (13 samples, 0.26%)up_write (2 samples, 0.04%)call_rwsem_wake (2 samples, 0.04%)rwsem_wake (2 samples, 0.04%)wake_up_q (2 samples, 0.04%)try_to_wake_up (2 samples, 0.04%)_raw_spin_lock_irqsave (1 samples, 0.02%)native_queued_spin_lock_slowpath (1 samples, 0.02%)entry_SYSCALL_64 (3 samples, 0.06%)entry_SYSCALL_64_after_hwframe (2 samples, 0.04%)do_syscall_64 (1 samples, 0.02%)__x64_sys_exit (1 samples, 0.02%)do_exit (1 samples, 0.02%)perf_event_exit_task (1 samples, 0.02%)ctx_sched_out (1 samples, 0.02%)amd_pmu_disable_all (1 samples, 0.02%)x86_pmu_disable_all (1 samples, 0.02%)native_read_msr (1 samples, 0.02%)all (4,969 samples, 100%)tokio-runtime-w (4,812 samples, 96.84%)tokio-runtime-wsyscall_return_via_sysret (1 samples, 0.02%) \ No newline at end of file diff --git a/bin/pipeline_test/flamegraphs/flamegraph-tracing.svg b/bin/pipeline_test/flamegraphs/flamegraph-tracing.svg deleted file mode 100644 index efc971a6..00000000 --- a/bin/pipeline_test/flamegraphs/flamegraph-tracing.svg +++ /dev/null @@ -1,412 +0,0 @@ -Flame Graph Reset ZoomSearch perf_event_exec (5 samples, 0.04%)perf_iterate_ctx (5 samples, 0.04%)perf_event_addr_filters_exec (5 samples, 0.04%)perf_4.19 (6 samples, 0.05%)entry_SYSCALL_64_after_hwframe (6 samples, 0.05%)do_syscall_64 (6 samples, 0.05%)__x64_sys_execve (6 samples, 0.05%)__do_execve_file.isra.36 (6 samples, 0.05%)search_binary_handler (6 samples, 0.05%)load_elf_binary (6 samples, 0.05%)setup_new_exec (6 samples, 0.05%)[unknown] (2 samples, 0.02%)tokio::loom::std::parking_lot::Mutex<T>::lock (5 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (5 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (5 samples, 0.04%)parking_lot::raw_mutex::RawMutex::lock_slow (5 samples, 0.04%)parking_lot_core::parking_lot::park (5 samples, 0.04%)parking_lot_core::parking_lot::with_thread_data (5 samples, 0.04%)parking_lot_core::parking_lot::park::_{{closure}} (5 samples, 0.04%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (5 samples, 0.04%)_start (6 samples, 0.05%)__libc_start_main (6 samples, 0.05%)main (6 samples, 0.05%)std::rt::lang_start_internal (6 samples, 0.05%)std::panic::catch_unwind (6 samples, 0.05%)std::panicking::try (6 samples, 0.05%)std::panicking::try::do_call (6 samples, 0.05%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once (6 samples, 0.05%)std::rt::lang_start::_{{closure}} (6 samples, 0.05%)std::sys_common::backtrace::__rust_begin_short_backtrace (6 samples, 0.05%)core::ops::function::FnOnce::call_once (6 samples, 0.05%)pipeline_test::main (6 samples, 0.05%)tokio::runtime::builder::Builder::build (6 samples, 0.05%)tokio::runtime::builder::Builder::build_threaded_runtime (6 samples, 0.05%)tokio::runtime::thread_pool::worker::Launch::launch (6 samples, 0.05%)tokio::runtime::blocking::pool::spawn_blocking (6 samples, 0.05%)tokio::runtime::handle::Handle::spawn_blocking (6 samples, 0.05%)tokio::runtime::handle::Handle::spawn_blocking_inner (6 samples, 0.05%)tokio::runtime::blocking::pool::Spawner::spawn (6 samples, 0.05%)ret_from_fork (5 samples, 0.04%)calculate_sigpending (5 samples, 0.04%)recalc_sigpending (5 samples, 0.04%)recalc_sigpending_tsk (5 samples, 0.04%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park (6 samples, 0.05%)<tokio::process::imp::driver::Driver as tokio::park::Park>::park (6 samples, 0.05%)<tokio::signal::unix::driver::Driver as tokio::park::Park>::park (6 samples, 0.05%)<tokio::io::driver::Driver as tokio::park::Park>::park (6 samples, 0.05%)tokio::io::driver::Driver::turn (6 samples, 0.05%)mio::poll::Poll::poll (6 samples, 0.05%)mio::sys::unix::selector::epoll::Selector::select (6 samples, 0.05%)epoll_wait (6 samples, 0.05%)entry_SYSCALL_64_after_hwframe (6 samples, 0.05%)do_syscall_64 (6 samples, 0.05%)exit_to_usermode_loop (6 samples, 0.05%)do_signal (6 samples, 0.05%)get_signal (6 samples, 0.05%)std::panic::catch_unwind (7 samples, 0.06%)std::panicking::try (7 samples, 0.06%)std::panicking::try::do_call (7 samples, 0.06%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (7 samples, 0.06%)std::thread::Builder::spawn_unchecked::_{{closure}}::_{{closure}} (7 samples, 0.06%)std::sys_common::backtrace::__rust_begin_short_backtrace (7 samples, 0.06%)pipeline_test::setup_tracing::_{{closure}} (7 samples, 0.06%)tokio::runtime::Runtime::block_on (7 samples, 0.06%)tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on (7 samples, 0.06%)tokio::runtime::basic_scheduler::InnerGuard<P>::block_on (7 samples, 0.06%)tokio::runtime::basic_scheduler::Inner<P>::block_on (7 samples, 0.06%)tokio::runtime::basic_scheduler::enter (7 samples, 0.06%)tokio::macros::scoped_tls::ScopedKey<T>::set (7 samples, 0.06%)tokio::runtime::basic_scheduler::enter::_{{closure}} (7 samples, 0.06%)tokio::runtime::basic_scheduler::Inner<P>::block_on::_{{closure}} (7 samples, 0.06%)<tokio::runtime::driver::Driver as tokio::park::Park>::park (7 samples, 0.06%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park (7 samples, 0.06%)<tokio::time::driver::Driver<P> as tokio::park::Park>::park (7 samples, 0.06%)tokio::time::driver::Driver<P>::park_internal (7 samples, 0.06%)<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once (8 samples, 0.06%)<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once (8 samples, 0.06%)core::ops::function::FnOnce::call_once{{vtable.shim}} (8 samples, 0.06%)std::thread::Builder::spawn_unchecked::_{{closure}} (8 samples, 0.06%)do_mmap (2 samples, 0.02%)mmap_region (2 samples, 0.02%)perf_event_mmap (2 samples, 0.02%)perf_iterate_sb (2 samples, 0.02%)perf_iterate_ctx (2 samples, 0.02%)mmap64 (4 samples, 0.03%)entry_SYSCALL_64_after_hwframe (4 samples, 0.03%)do_syscall_64 (4 samples, 0.03%)ksys_mmap_pgoff (4 samples, 0.03%)vm_mmap_pgoff (4 samples, 0.03%)down_write_killable (2 samples, 0.02%)call_rwsem_down_write_failed_killable (2 samples, 0.02%)rwsem_down_write_failed_killable (2 samples, 0.02%)schedule (2 samples, 0.02%)__schedule (2 samples, 0.02%)clone (145 samples, 1.16%)start_thread (29 samples, 0.23%)std::sys::unix::thread::Thread::new::thread_start (16 samples, 0.13%)std::sys::unix::stack_overflow::Handler::new (6 samples, 0.05%)std::sys::unix::stack_overflow::imp::make_handler (6 samples, 0.05%)std::sys::unix::stack_overflow::imp::get_stack (5 samples, 0.04%)std::sys::unix::stack_overflow::imp::get_stackp (5 samples, 0.04%)pipeline_test (155 samples, 1.24%)[[heap]] (3 samples, 0.02%)syscall (3 samples, 0.02%)entry_SYSCALL_64 (2 samples, 0.02%)[anon] (5 samples, 0.04%)<S as futures_core::stream::TryStream>::try_poll_next (8 samples, 0.06%)<futures_util::stream::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next (8 samples, 0.06%)[libc-2.28.so] (8 samples, 0.06%)core::option::Option<T>::is_some (2 samples, 0.02%)core::option::Option<T>::take (2 samples, 0.02%)core::mem::take (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::mem::swap (2 samples, 0.02%)core::ptr::swap_nonoverlapping_one (2 samples, 0.02%)core::ptr::swap_nonoverlapping (2 samples, 0.02%)core::ptr::swap_nonoverlapping_bytes (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)core::pin::Pin<P>::set (89 samples, 0.71%)[libc-2.28.so] (82 samples, 0.66%)fred::client::RedisClient::connect::_{{closure}} (128 samples, 1.03%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (128 samples, 1.03%)fred::multiplexer::commands::init::_{{closure}} (128 samples, 1.03%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (127 samples, 1.02%)__perf_event_task_sched_out (3 samples, 0.02%)ctx_sched_out (3 samples, 0.02%)amd_pmu_disable_all (3 samples, 0.02%)x86_pmu_disable_all (2 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::Vec<opentelemetry::core::KeyValue>> (12 samples, 0.10%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<opentelemetry::core::KeyValue>> (12 samples, 0.10%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (12 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (12 samples, 0.10%)alloc::alloc::dealloc (12 samples, 0.10%)[libc-2.28.so] (12 samples, 0.10%)[libc-2.28.so] (12 samples, 0.10%)entry_SYSCALL_64_after_hwframe (7 samples, 0.06%)do_syscall_64 (7 samples, 0.06%)__x64_sys_futex (7 samples, 0.06%)do_futex (7 samples, 0.06%)futex_wait (7 samples, 0.06%)futex_wait_queue_me (7 samples, 0.06%)schedule (7 samples, 0.06%)__schedule (7 samples, 0.06%)core::option::Option<T>::map (20 samples, 0.16%)core::ptr::drop_in_place<<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build::{{closure}}> (20 samples, 0.16%)core::ptr::drop_in_place<opentelemetry::trace::tracer::SpanBuilder> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::borrow::Cow<str>> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::string::String> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (8 samples, 0.06%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (8 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (8 samples, 0.06%)alloc::alloc::dealloc (8 samples, 0.06%)[libc-2.28.so] (8 samples, 0.06%)core::option::Option<T>::unwrap_or_else (4 samples, 0.03%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build::_{{closure}} (4 samples, 0.03%)std::thread::local::LocalKey<T>::with (4 samples, 0.03%)std::thread::local::LocalKey<T>::try_with (4 samples, 0.03%)<opentelemetry::sdk::trace::id_generator::IdGenerator as opentelemetry::trace::id_generator::IdGenerator>::new_trace_id::_{{closure}} (4 samples, 0.03%)rand::rng::Rng::gen (4 samples, 0.03%)rand::distributions::integer::<impl rand::distributions::distribution::Distribution<u128> for rand::distributions::Standard>::sample (4 samples, 0.03%)<rand::rngs::thread::ThreadRng as rand_core::RngCore>::next_u64 (4 samples, 0.03%)<rand::rngs::adapter::reseeding::ReseedingRng<R,Rsdr> as rand_core::RngCore>::next_u64 (4 samples, 0.03%)<rand_core::block::BlockRng<R> as rand_core::RngCore>::next_u64 (4 samples, 0.03%)rand_core::block::BlockRng<R>::generate_and_set (4 samples, 0.03%)<rand::rngs::adapter::reseeding::ReseedingCore<R,Rsdr> as rand_core::block::BlockRngCore>::generate (4 samples, 0.03%)<rand_chacha::chacha::ChaCha12Core as rand_core::block::BlockRngCore>::generate (4 samples, 0.03%)rand_chacha::guts::ChaCha::refill4 (4 samples, 0.03%)rand_chacha::guts::refill_wide (4 samples, 0.03%)rand_chacha::guts::refill_wide::impl_avx2 (3 samples, 0.02%)rand_chacha::guts::refill_wide::fn_impl (3 samples, 0.02%)rand_chacha::guts::refill_wide_impl (3 samples, 0.02%)[libc-2.28.so] (3 samples, 0.02%)core::ptr::drop_in_place<opentelemetry::context::Context> (9 samples, 0.07%)core::ptr::drop_in_place<std::collections::hash::map::HashMap<core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>,core::hash::BuildHasherDefault<opentelemetry::context::IdHasher>>> (9 samples, 0.07%)core::ptr::drop_in_place<hashbrown::map::HashMap<core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>,core::hash::BuildHasherDefault<opentelemetry::context::IdHasher>>> (9 samples, 0.07%)core::ptr::drop_in_place<hashbrown::raw::RawTable<(core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>)>> (9 samples, 0.07%)<hashbrown::raw::RawTable<T> as core::ops::drop::Drop>::drop (9 samples, 0.07%)hashbrown::raw::Bucket<T>::drop (9 samples, 0.07%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (9 samples, 0.07%)core::ptr::drop_in_place<(core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>)> (9 samples, 0.07%)core::ptr::drop_in_place<alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>> (9 samples, 0.07%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (9 samples, 0.07%)alloc::sync::Arc<T>::drop_slow (6 samples, 0.05%)core::ptr::drop_in_place<dyn core::any::Any+core::marker::Send+core::marker::Sync> (6 samples, 0.05%)[libc-2.28.so] (6 samples, 0.05%)[libc-2.28.so] (2 samples, 0.02%)__libc_malloc (9 samples, 0.07%)fred::multiplexer::responses::process_centralized_frame::_{{closure}} (46 samples, 0.37%)fred::multiplexer::responses::process_response (46 samples, 0.37%)fred::multiplexer::responses::respond_to_caller (46 samples, 0.37%)core::ptr::drop_in_place<fred::trace::enabled::CommandTraces> (46 samples, 0.37%)<fred::trace::enabled::CommandTraces as core::ops::drop::Drop>::drop (46 samples, 0.37%)core::ptr::drop_in_place<tracing::span::Span> (46 samples, 0.37%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (46 samples, 0.37%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_close (46 samples, 0.37%)opentelemetry::trace::tracer::SpanBuilder::start (46 samples, 0.37%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build (46 samples, 0.37%)opentelemetry::sdk::trace::span::Span::new (13 samples, 0.10%)alloc::sync::Arc<T>::new (11 samples, 0.09%)alloc::alloc::exchange_malloc (10 samples, 0.08%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (10 samples, 0.08%)alloc::alloc::Global::alloc_impl (10 samples, 0.08%)alloc::alloc::alloc (10 samples, 0.08%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (2 samples, 0.02%)core::option::Option<T>::and_then (4 samples, 0.03%)opentelemetry::context::Context::get::_{{closure}} (4 samples, 0.03%)<dyn core::any::Any+core::marker::Send+core::marker::Sync>::downcast_ref (2 samples, 0.02%)<dyn core::any::Any>::downcast_ref (2 samples, 0.02%)<dyn core::any::Any>::is (2 samples, 0.02%)<T as core::any::Any>::type_id (2 samples, 0.02%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::has_active_span (8 samples, 0.06%)opentelemetry::context::Context::get (8 samples, 0.06%)std::collections::hash::map::HashMap<K,V,S>::get (4 samples, 0.03%)hashbrown::map::HashMap<K,V,S>::get (4 samples, 0.03%)hashbrown::map::HashMap<K,V,S>::get_key_value (4 samples, 0.03%)hashbrown::raw::RawTable<T>::find (4 samples, 0.03%)hashbrown::raw::RawTable<T>::iter_hash (2 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (2 samples, 0.02%)<hashbrown::raw::RawIterHash<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<hashbrown::raw::bitmask::BitMaskIter as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)hashbrown::raw::bitmask::BitMask::lowest_set_bit (2 samples, 0.02%)hashbrown::raw::sse2::Group::load (5 samples, 0.04%)core::core_arch::x86::sse2::_mm_loadu_si128 (5 samples, 0.04%)core::intrinsics::copy_nonoverlapping (5 samples, 0.04%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::remote_span_context (8 samples, 0.06%)opentelemetry::context::Context::get (8 samples, 0.06%)std::collections::hash::map::HashMap<K,V,S>::get (8 samples, 0.06%)hashbrown::map::HashMap<K,V,S>::get (8 samples, 0.06%)hashbrown::map::HashMap<K,V,S>::get_key_value (8 samples, 0.06%)hashbrown::raw::RawTable<T>::find (8 samples, 0.06%)hashbrown::raw::RawTable<T>::iter_hash (6 samples, 0.05%)hashbrown::raw::RawIterHash<T>::new (6 samples, 0.05%)core::option::Option<T>::and_then (2 samples, 0.02%)opentelemetry::context::Context::get::_{{closure}} (2 samples, 0.02%)<dyn core::any::Any+core::marker::Send+core::marker::Sync>::downcast_ref (2 samples, 0.02%)<dyn core::any::Any>::downcast_ref (2 samples, 0.02%)<dyn core::any::Any>::is (2 samples, 0.02%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::span (17 samples, 0.14%)opentelemetry::context::Context::get (3 samples, 0.02%)<opentelemetry::sdk::trace::span_processor::BatchSpanProcessor as opentelemetry::sdk::trace::span_processor::SpanProcessor>::on_start (4 samples, 0.03%)<opentelemetry::sdk::trace::tracer::Tracer as core::clone::Clone>::clone (9 samples, 0.07%)<alloc::sync::Weak<T> as core::clone::Clone>::clone (8 samples, 0.06%)[libc-2.28.so] (2 samples, 0.02%)opentelemetry::trace::span_context::SpanContext::trace_flags (2 samples, 0.02%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build::_{{closure}} (16 samples, 0.13%)opentelemetry::trace::span_context::SpanContext::trace_id (14 samples, 0.11%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)core::ptr::drop_in_place<[opentelemetry::core::KeyValue]> (4 samples, 0.03%)core::ptr::drop_in_place<opentelemetry::core::KeyValue> (4 samples, 0.03%)core::ptr::drop_in_place<opentelemetry::core::Value> (4 samples, 0.03%)core::ptr::drop_in_place<alloc::vec::Vec<opentelemetry::core::KeyValue>> (18 samples, 0.14%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<opentelemetry::core::KeyValue>> (14 samples, 0.11%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (14 samples, 0.11%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (14 samples, 0.11%)alloc::alloc::dealloc (14 samples, 0.11%)[libc-2.28.so] (14 samples, 0.11%)core::ptr::drop_in_place<alloc::borrow::Cow<str>> (13 samples, 0.10%)core::ptr::drop_in_place<alloc::string::String> (13 samples, 0.10%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (13 samples, 0.10%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (13 samples, 0.10%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (13 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (12 samples, 0.10%)alloc::alloc::dealloc (12 samples, 0.10%)cfree (11 samples, 0.09%)core::option::Option<T>::map (49 samples, 0.39%)core::ptr::drop_in_place<<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build::{{closure}}> (33 samples, 0.26%)core::ptr::drop_in_place<opentelemetry::trace::tracer::SpanBuilder> (15 samples, 0.12%)core::option::Option<T>::take (3 samples, 0.02%)core::mem::take (3 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::mem::swap (2 samples, 0.02%)core::ptr::swap_nonoverlapping_one (2 samples, 0.02%)<opentelemetry::sdk::trace::id_generator::IdGenerator as opentelemetry::trace::id_generator::IdGenerator>::new_trace_id::_{{closure}} (3 samples, 0.02%)rand::rng::Rng::gen (3 samples, 0.02%)rand::distributions::integer::<impl rand::distributions::distribution::Distribution<u128> for rand::distributions::Standard>::sample (3 samples, 0.02%)<rand::rngs::thread::ThreadRng as rand_core::RngCore>::next_u64 (2 samples, 0.02%)<rand::rngs::adapter::reseeding::ReseedingRng<R,Rsdr> as rand_core::RngCore>::next_u64 (2 samples, 0.02%)<rand_core::block::BlockRng<R> as rand_core::RngCore>::next_u64 (2 samples, 0.02%)core::option::Option<T>::unwrap_or_else (9 samples, 0.07%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build::_{{closure}} (7 samples, 0.06%)std::thread::local::LocalKey<T>::with (4 samples, 0.03%)std::thread::local::LocalKey<T>::try_with (4 samples, 0.03%)core::mem::drop (4 samples, 0.03%)core::ptr::drop_in_place<alloc::sync::Weak<dyn core::any::Any+core::marker::Send+core::marker::Sync>> (4 samples, 0.03%)<alloc::sync::Weak<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)cfree (3 samples, 0.02%)alloc::sync::Arc<T>::drop_slow (8 samples, 0.06%)core::ptr::drop_in_place<dyn core::any::Any+core::marker::Send+core::marker::Sync> (4 samples, 0.03%)hashbrown::raw::Bucket<T>::drop (13 samples, 0.10%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (13 samples, 0.10%)core::ptr::drop_in_place<(core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>)> (13 samples, 0.10%)core::ptr::drop_in_place<alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>> (13 samples, 0.10%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (13 samples, 0.10%)cfree (4 samples, 0.03%)<hashbrown::raw::RawTable<T> as core::ops::drop::Drop>::drop (22 samples, 0.18%)[libc-2.28.so] (4 samples, 0.03%)core::ptr::drop_in_place<opentelemetry::context::Context> (30 samples, 0.24%)core::ptr::drop_in_place<std::collections::hash::map::HashMap<core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>,core::hash::BuildHasherDefault<opentelemetry::context::IdHasher>>> (30 samples, 0.24%)core::ptr::drop_in_place<hashbrown::map::HashMap<core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>,core::hash::BuildHasherDefault<opentelemetry::context::IdHasher>>> (30 samples, 0.24%)core::ptr::drop_in_place<hashbrown::raw::RawTable<(core::any::TypeId,alloc::sync::Arc<dyn core::any::Any+core::marker::Send+core::marker::Sync>)>> (30 samples, 0.24%)cfree (4 samples, 0.03%)core::ptr::drop_in_place<opentelemetry::sdk::trace::provider::TracerProvider> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::provider::TracerProviderInner>> (6 samples, 0.05%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (6 samples, 0.05%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (174 samples, 1.40%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (174 samples, 1.40%)fred::multiplexer::responses::process_centralized_frame::_{{closure}} (174 samples, 1.40%)fred::multiplexer::responses::process_response (174 samples, 1.40%)fred::multiplexer::responses::respond_to_caller (174 samples, 1.40%)core::ptr::drop_in_place<fred::trace::enabled::CommandTraces> (174 samples, 1.40%)<fred::trace::enabled::CommandTraces as core::ops::drop::Drop>::drop (174 samples, 1.40%)core::ptr::drop_in_place<tracing::span::Span> (174 samples, 1.40%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (174 samples, 1.40%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_close (174 samples, 1.40%)opentelemetry::trace::tracer::SpanBuilder::start (174 samples, 1.40%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build (174 samples, 1.40%)opentelemetry::sdk::trace::tracer::Tracer::provider (15 samples, 0.12%)alloc::sync::Weak<T>::upgrade (15 samples, 0.12%)<F as futures_core::future::TryFuture>::try_poll (4 samples, 0.03%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (3 samples, 0.02%)[libc-2.28.so] (11 samples, 0.09%)[libc-2.28.so] (12 samples, 0.10%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (46 samples, 0.37%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (46 samples, 0.37%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (46 samples, 0.37%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (46 samples, 0.37%)<F as futures_core::future::TryFuture>::try_poll (46 samples, 0.37%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (46 samples, 0.37%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (46 samples, 0.37%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (46 samples, 0.37%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (42 samples, 0.34%)<F as futures_core::future::TryFuture>::try_poll (42 samples, 0.34%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (42 samples, 0.34%)core::pin::Pin<P>::set (19 samples, 0.15%)core::ptr::drop_in_place<core::option::Option<core::future::from_generator::GenFuture<fred::multiplexer::utils::spawn_centralized_listener::{{closure}}::{{closure}}::{{closure}}>>> (2 samples, 0.02%)tokio::loom::std::parking_lot::RwLock<T>::read (5 samples, 0.04%)lock_api::rwlock::RwLock<R,T>::read (5 samples, 0.04%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (5 samples, 0.04%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (2 samples, 0.02%)tokio::sync::broadcast::Receiver<T>::recv_ref (25 samples, 0.20%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (3 samples, 0.02%)tokio::sync::broadcast::Receiver<T>::recv_ref::_{{closure}} (3 samples, 0.02%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (77 samples, 0.62%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (77 samples, 0.62%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (77 samples, 0.62%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (77 samples, 0.62%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (77 samples, 0.62%)futures_util::future::future::FutureExt::poll_unpin (77 samples, 0.62%)<core::pin::Pin<P> as core::future::future::Future>::poll (77 samples, 0.62%)<core::pin::Pin<P> as core::future::future::Future>::poll (77 samples, 0.62%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (77 samples, 0.62%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (31 samples, 0.25%)<F as futures_core::future::TryFuture>::try_poll (31 samples, 0.25%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (31 samples, 0.25%)<F as futures_core::future::TryFuture>::try_poll (31 samples, 0.25%)<futures_util::future::try_future::ErrInto<Fut,E> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (31 samples, 0.25%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (31 samples, 0.25%)<F as futures_core::future::TryFuture>::try_poll (31 samples, 0.25%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (31 samples, 0.25%)tokio::sync::broadcast::Receiver<T>::recv::_{{closure}} (31 samples, 0.25%)<tokio::sync::broadcast::Recv<T> as core::future::future::Future>::poll (29 samples, 0.23%)tokio::sync::broadcast::Recv<T>::project (2 samples, 0.02%)fred::multiplexer::utils::write_centralized_command::_{{closure}} (4 samples, 0.03%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<core::option::Option<fred::protocol::connection::RedisSink>>> (4 samples, 0.03%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (4 samples, 0.03%)<futures_util::sink::send::Send<Si,Item> as core::future::future::Future>::poll (4 samples, 0.03%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_flush (4 samples, 0.03%)tokio_util::util::poll_write_buf (4 samples, 0.03%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (4 samples, 0.03%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write_vectored (4 samples, 0.03%)tokio::net::tcp::stream::TcpStream::poll_write_vectored_priv (4 samples, 0.03%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored (4 samples, 0.03%)tokio::io::driver::registration::Registration::poll_write_io (4 samples, 0.03%)tokio::io::driver::registration::Registration::poll_io (4 samples, 0.03%)tokio::io::poll_evented::PollEvented<E>::poll_write_vectored::_{{closure}} (4 samples, 0.03%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored (4 samples, 0.03%)mio::io_source::IoSource<T>::do_io (4 samples, 0.03%)mio::sys::unix::IoSourceState::do_io (4 samples, 0.03%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored::_{{closure}} (4 samples, 0.03%)<&std::fs::File as std::io::Write>::write_vectored (4 samples, 0.03%)std::sys::unix::fs::File::write_vectored (4 samples, 0.03%)std::sys::unix::fd::FileDesc::write_vectored (4 samples, 0.03%)writev (4 samples, 0.03%)entry_SYSCALL_64 (4 samples, 0.03%)alloc::vec::Vec<T,A>::with_capacity_in (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::allocate_in (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (3 samples, 0.02%)alloc::alloc::Global::alloc_impl (3 samples, 0.02%)alloc::alloc::alloc (3 samples, 0.02%)<T as core::convert::Into<U>>::into (10 samples, 0.08%)<fred::types::RedisKey as core::convert::From<&str>>::from (6 samples, 0.05%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (6 samples, 0.05%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (6 samples, 0.05%)alloc::slice::<impl [T]>::to_vec (6 samples, 0.05%)alloc::slice::<impl [T]>::to_vec_in (6 samples, 0.05%)alloc::slice::hack::to_vec (6 samples, 0.05%)<T as alloc::slice::hack::ConvertVec>::to_vec (6 samples, 0.05%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (3 samples, 0.02%)core::intrinsics::copy_nonoverlapping (3 samples, 0.02%)[libc-2.28.so] (3 samples, 0.02%)[libc-2.28.so] (3 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (7 samples, 0.06%)[libc-2.28.so] (5 samples, 0.04%)<tracing_core::dispatcher::Dispatch as core::clone::Clone>::clone (3 samples, 0.02%)<alloc::sync::Arc<T> as core::clone::Clone>::clone (3 samples, 0.02%)core::option::Option<T>::unwrap_or_else (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (4 samples, 0.03%)sharded_slab::shard::Shard<T,C>::with_slot (4 samples, 0.03%)sharded_slab::page::Shared<T,C>::with_slot (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (3 samples, 0.02%)<tracing::span::Span as core::clone::Clone>::clone (21 samples, 0.17%)<core::option::Option<T> as core::clone::Clone>::clone (19 samples, 0.15%)<tracing::span::Inner as core::clone::Clone>::clone (19 samples, 0.15%)tracing_core::dispatcher::Dispatch::clone_span (9 samples, 0.07%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::clone_span (9 samples, 0.07%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::clone_span (9 samples, 0.07%)tracing_subscriber::registry::sharded::Registry::get (5 samples, 0.04%)[libc-2.28.so] (2 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (3 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (3 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (3 samples, 0.02%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (15 samples, 0.12%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (14 samples, 0.11%)tracing_subscriber::registry::sharded::Registry::get (7 samples, 0.06%)sharded_slab::pool::Pool<T,C>::get (7 samples, 0.06%)sharded_slab::shard::Shard<T,C>::with_slot (7 samples, 0.06%)sharded_slab::page::Shared<T,C>::with_slot (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (25 samples, 0.20%)core::ptr::drop_in_place<core::option::Option<tracing::span::Inner>> (9 samples, 0.07%)core::ptr::drop_in_place<tracing::span::Inner> (9 samples, 0.07%)core::ptr::drop_in_place<tracing_core::dispatcher::Dispatch> (9 samples, 0.07%)core::ptr::drop_in_place<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync>> (9 samples, 0.07%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (9 samples, 0.07%)__log10_finite (26 samples, 0.21%)[libm-2.28.so] (22 samples, 0.18%)fred::protocol::utils::frame_size (37 samples, 0.30%)fred::protocol::utils::i64_size (29 samples, 0.23%)redis_protocol::utils::digits_in_number (29 samples, 0.23%)std::f64::<impl f64>::log10 (28 samples, 0.22%)std::f64::<impl f64>::log_wrapper (28 samples, 0.22%)std::f64::_<impl f64>::log10::_{{closure}} (28 samples, 0.22%)log10f32x (2 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::position (9 samples, 0.07%)tracing_core::field::FieldSet::field::_{{closure}} (8 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (8 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (8 samples, 0.06%)core::str::traits::<impl core::cmp::PartialEq for str>::eq (8 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (8 samples, 0.06%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (8 samples, 0.06%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (8 samples, 0.06%)[libc-2.28.so] (6 samples, 0.05%)tracing_core::field::FieldSet::field (12 samples, 0.10%)core::option::Option<T>::map (3 samples, 0.02%)tracing_core::field::FieldSet::field::_{{closure}} (3 samples, 0.02%)tracing_core::field::FieldSet::callsite (3 samples, 0.02%)<str as tracing::field::AsField>::as_field (13 samples, 0.10%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (3 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (3 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (3 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (3 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (3 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (32 samples, 0.26%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (32 samples, 0.26%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (32 samples, 0.26%)std::sys_common::rwlock::RWLock::write_unlock (32 samples, 0.26%)std::sys::unix::rwlock::RWLock::write_unlock (32 samples, 0.26%)std::sys::unix::rwlock::RWLock::raw_unlock (32 samples, 0.26%)__GI___pthread_rwlock_unlock (31 samples, 0.25%)<u64 as tracing_core::field::Value>::record (2 samples, 0.02%)<&T as core::fmt::Debug>::fmt (4 samples, 0.03%)<&mut W as core::fmt::Write>::write_str (4 samples, 0.03%)<alloc::string::String as core::fmt::Write>::write_str (3 samples, 0.02%)alloc::string::String::push_str (3 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (3 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (3 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (3 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)core::fmt::Formatter::debug_lower_hex (6 samples, 0.05%)core::fmt::num::<impl core::fmt::Debug for u64>::fmt (12 samples, 0.10%)core::fmt::Formatter::debug_upper_hex (5 samples, 0.04%)futex_wait (2 samples, 0.02%)futex_wait_queue_me (2 samples, 0.02%)schedule (2 samples, 0.02%)__schedule (2 samples, 0.02%)dequeue_task_fair (2 samples, 0.02%)dequeue_entity (2 samples, 0.02%)__task_rq_lock (5 samples, 0.04%)_raw_spin_lock (5 samples, 0.04%)native_queued_spin_lock_slowpath (5 samples, 0.04%)__libc_malloc (130 samples, 1.04%)[libc-2.28.so] (106 samples, 0.85%)entry_SYSCALL_64_after_hwframe (25 samples, 0.20%)do_syscall_64 (24 samples, 0.19%)__x64_sys_futex (22 samples, 0.18%)do_futex (22 samples, 0.18%)futex_wake (20 samples, 0.16%)wake_up_q (16 samples, 0.13%)try_to_wake_up (16 samples, 0.13%)select_task_rq_fair (2 samples, 0.02%)__rdl_alloc (2 samples, 0.02%)__rust_alloc (3 samples, 0.02%)alloc::raw_vec::finish_grow (137 samples, 1.10%)<&mut W as core::fmt::Write>::write_str (141 samples, 1.13%)<alloc::string::String as core::fmt::Write>::write_str (139 samples, 1.11%)alloc::string::String::push_str (139 samples, 1.11%)alloc::vec::Vec<T,A>::extend_from_slice (139 samples, 1.11%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (139 samples, 1.11%)alloc::vec::Vec<T,A>::append_elements (139 samples, 1.11%)alloc::vec::Vec<T,A>::reserve (139 samples, 1.11%)alloc::raw_vec::RawVec<T,A>::reserve (139 samples, 1.11%)alloc::raw_vec::RawVec<T,A>::try_reserve (139 samples, 1.11%)alloc::raw_vec::RawVec<T,A>::grow_amortized (139 samples, 1.11%)alloc::fmt::format (178 samples, 1.43%)core::fmt::Write::write_fmt (176 samples, 1.41%)core::fmt::write (175 samples, 1.40%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (151 samples, 1.21%)core::fmt::num::imp::fmt_u64 (148 samples, 1.19%)core::fmt::Formatter::pad_integral (7 samples, 0.06%)alloc::vec::Vec<T,A>::push (10 samples, 0.08%)core::ptr::write (7 samples, 0.06%)opentelemetry::core::Key::string (2 samples, 0.02%)<&T as tracing_core::field::Value>::record (212 samples, 1.70%)tracing_core::field::Visit::record_u64 (210 samples, 1.68%)<tracing_opentelemetry::layer::SpanAttributeVisitor as tracing_core::field::Visit>::record_debug (210 samples, 1.68%)tracing_core::field::Field::name (2 samples, 0.02%)tracing_core::span::Record::record (216 samples, 1.73%)tracing_core::field::ValueSet::record (214 samples, 1.72%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (2 samples, 0.02%)sharded_slab::shard::Array<T,C>::get (2 samples, 0.02%)sharded_slab::shard::Ptr<T,C>::load (2 samples, 0.02%)core::sync::atomic::AtomicPtr<T>::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (7 samples, 0.06%)sharded_slab::shard::Shard<T,C>::with_slot (4 samples, 0.03%)tracing_subscriber::layer::Context<S>::span (14 samples, 0.11%)tracing_subscriber::registry::LookupSpan::span (14 samples, 0.11%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (12 samples, 0.10%)tracing_subscriber::registry::sharded::Registry::get (8 samples, 0.06%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (6 samples, 0.05%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (5 samples, 0.04%)std::sync::rwlock::RwLock<T>::write (4 samples, 0.03%)std::sys_common::rwlock::RWLock::write (4 samples, 0.03%)std::sys::unix::rwlock::RWLock::write (4 samples, 0.03%)__GI___pthread_rwlock_wrlock (3 samples, 0.02%)core::option::Option<T>::and_then (2 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut::_{{closure}} (2 samples, 0.02%)<dyn core::any::Any>::downcast_mut (2 samples, 0.02%)<dyn core::any::Any>::is (2 samples, 0.02%)<T as core::any::Any>::type_id (2 samples, 0.02%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_record (283 samples, 2.27%)<..tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (12 samples, 0.10%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (12 samples, 0.10%)std::collections::hash::map::HashMap<K,V,S>::get_mut (10 samples, 0.08%)hashbrown::map::HashMap<K,V,S>::get_mut (10 samples, 0.08%)hashbrown::raw::RawTable<T>::find (10 samples, 0.08%)hashbrown::raw::RawTable<T>::iter_hash (2 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (2 samples, 0.02%)tracing::span::Inner::record (284 samples, 2.28%)t..tracing_core::dispatcher::Dispatch::record (284 samples, 2.28%)t..<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::record (284 samples, 2.28%)<..tracing::span::Span::record_all (293 samples, 2.35%)t..tracing_core::span::Record::new (4 samples, 0.03%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (388 samples, 3.11%)<co..fred::utils::request_response::_{{closure}}::_{{closure}}::_{{closure}} (385 samples, 3.09%)fre..fred::trace::enabled::record_response_size (355 samples, 2.85%)fr..tracing::span::Span::record (314 samples, 2.52%)tr..tracing_core::metadata::Metadata::fields (2 samples, 0.02%)[libc-2.28.so] (7 samples, 0.06%)<futures_util::fns::MapOkFn<F> as futures_util::fns::FnOnce1<core::result::Result<T,E>>>::call_once (9 samples, 0.07%)core::result::Result<T,E>::map (2 samples, 0.02%)<futures_util::fns::MapOkFn<F> as futures_util::fns::FnOnce1<core::result::Result<T,E>>>::call_once::_{{closure}} (2 samples, 0.02%)<T as futures_util::fns::FnOnce1<A>>::call_once (2 samples, 0.02%)fred::utils::request_response::_{{closure}}::_{{closure}} (2 samples, 0.02%)[libc-2.28.so] (4 samples, 0.03%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (7 samples, 0.06%)[libc-2.28.so] (7 samples, 0.06%)[libc-2.28.so] (19 samples, 0.15%)core::option::Option<T>::as_ref (3 samples, 0.02%)[libc-2.28.so] (5 samples, 0.04%)tokio::runtime::task::harness::Harness<T,S>::drop_reference (3 samples, 0.02%)tokio::runtime::task::state::State::ref_dec (3 samples, 0.02%)alloc::sync::Arc<T>::drop_slow (8 samples, 0.06%)core::ptr::drop_in_place<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>> (7 samples, 0.06%)<tokio::sync::oneshot::Inner<T> as core::ops::drop::Drop>::drop (7 samples, 0.06%)tokio::sync::oneshot::mut_load (2 samples, 0.02%)tokio::loom::std::atomic_usize::AtomicUsize::with_mut (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>>>> (43 samples, 0.34%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>>> (42 samples, 0.34%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (42 samples, 0.34%)cfree (25 samples, 0.20%)tokio::coop::RestoreOnPending::made_progress (2 samples, 0.02%)tokio::coop::CURRENT::__getit (6 samples, 0.05%)core::cell::Cell<T>::set (7 samples, 0.06%)core::cell::Cell<T>::replace (7 samples, 0.06%)core::mem::replace (7 samples, 0.06%)core::mem::swap (7 samples, 0.06%)core::ptr::swap_nonoverlapping_one (7 samples, 0.06%)core::intrinsics::copy_nonoverlapping (7 samples, 0.06%)tokio::coop::poll_proceed (16 samples, 0.13%)std::thread::local::LocalKey<T>::with (16 samples, 0.13%)std::thread::local::LocalKey<T>::try_with (16 samples, 0.13%)tokio::coop::poll_proceed::_{{closure}} (10 samples, 0.08%)tokio::coop::Budget::decrement (3 samples, 0.02%)tokio::sync::oneshot::State::is_rx_task_set (2 samples, 0.02%)tokio::sync::oneshot::State::load (19 samples, 0.15%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)tokio::sync::oneshot::State::set_rx_task (5 samples, 0.04%)core::sync::atomic::AtomicUsize::fetch_or (5 samples, 0.04%)core::sync::atomic::atomic_or (5 samples, 0.04%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (136 samples, 1.09%)tokio::sync::oneshot::Inner<T>::poll_recv (66 samples, 0.53%)tokio::sync::oneshot::Task::set_task (12 samples, 0.10%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (6 samples, 0.05%)tokio::sync::oneshot::Task::set_task::_{{closure}} (6 samples, 0.05%)<core::task::wake::Waker as core::clone::Clone>::clone (6 samples, 0.05%)tokio::runtime::task::waker::clone_waker (4 samples, 0.03%)tokio::runtime::task::state::State::ref_inc (2 samples, 0.02%)[libc-2.28.so] (13 samples, 0.10%)fred::globals::Globals::default_command_timeout (6 samples, 0.05%)fred::utils::read_atomic (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (185 samples, 1.48%)<F as futures_core::future::TryFuture>::try_poll (185 samples, 1.48%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (184 samples, 1.48%)fred::utils::wait_for_response::_{{closure}} (176 samples, 1.41%)fred::globals::globals (2 samples, 0.02%)<fred::globals::GLOBALS as core::ops::deref::Deref>::deref (2 samples, 0.02%)<fred::globals::GLOBALS as core::ops::deref::Deref>::deref::__stability (2 samples, 0.02%)lazy_static::lazy::Lazy<T>::get (2 samples, 0.02%)std::sync::once::Once::call_once (2 samples, 0.02%)std::sync::once::Once::is_completed (2 samples, 0.02%)[libc-2.28.so] (9 samples, 0.07%)<F as futures_core::future::TryFuture>::try_poll (611 samples, 4.90%)<F as ..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (223 samples, 1.79%)<..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (223 samples, 1.79%)<..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (223 samples, 1.79%)<..futures_util::future::future::map::_::<impl futures_util::future::future::map::Map<Fut,F>>::project_replace (11 samples, 0.09%)core::ptr::drop_in_place<pin_project_lite::__private::UnsafeOverwriteGuard<futures_util::future::future::map::Map<futures_util::future::try_future::into_future::IntoFuture<core::future::from_generator::GenFuture<fred::utils::wait_for_response::{{closure}}>>,futures_util::fns::MapOkFn<fred::utils::request_response<fred::commands::one_arg_value_cmd::{{closure}}::{{closure}}>::{{closure}}::{{closure}}>>>> (11 samples, 0.09%)<pin_project_lite::__private::UnsafeOverwriteGuard<T> as core::ops::drop::Drop>::drop (11 samples, 0.09%)core::ptr::write (11 samples, 0.09%)[libc-2.28.so] (11 samples, 0.09%)[libc-2.28.so] (16 samples, 0.13%)[libc-2.28.so] (10 samples, 0.08%)core::pin::Pin<P>::set (14 samples, 0.11%)core::ptr::drop_in_place<futures_util::future::try_future::try_flatten::TryFlatten<futures_util::future::try_future::MapOk<core::future::from_generator::GenFuture<fred::utils::wait_for_response::{{closure}}>,fred::utils::request_response<fred::commands::one_arg_value_cmd::{{closure}}::{{closure}}>::{{closure}}::{{closure}}>,core::future::from_generator::GenFuture<fred::utils::request_response<fred::commands::one_arg_value_cmd::{{closure}}::{{closure}}>::{{closure}}::{{closure}}::{{closure}}>>> (3 samples, 0.02%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (648 samples, 5.20%)<futur..<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (648 samples, 5.20%)<futur..<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (648 samples, 5.20%)<futur..<alloc::sync::Arc<T> as core::convert::AsRef<T>>::as_ref (2 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (2 samples, 0.02%)core::result::Result<T,E>::ok (2 samples, 0.02%)<std::time::Instant as core::ops::arith::Sub>::sub (4 samples, 0.03%)std::time::Instant::duration_since (4 samples, 0.03%)std::sys::unix::time::inner::Instant::checked_sub_instant (4 samples, 0.03%)std::sys::unix::time::Timespec::sub_timespec (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (3 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (3 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (3 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (3 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (3 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (8 samples, 0.06%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (8 samples, 0.06%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (8 samples, 0.06%)std::sys_common::rwlock::RWLock::write_unlock (8 samples, 0.06%)std::sys::unix::rwlock::RWLock::write_unlock (8 samples, 0.06%)std::sys::unix::rwlock::RWLock::raw_unlock (8 samples, 0.06%)__GI___pthread_rwlock_unlock (8 samples, 0.06%)__clock_gettime (22 samples, 0.18%)__vdso_clock_gettime (19 samples, 0.15%)[[vdso]] (13 samples, 0.10%)std::time::Instant::now (26 samples, 0.21%)std::sys::unix::time::inner::Instant::now (25 samples, 0.20%)std::sys::unix::time::inner::now (25 samples, 0.20%)<core::option::Option<T> as core::ops::try::Try>::into_result (7 samples, 0.06%)core::option::Option<T>::as_ref (2 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (25 samples, 0.20%)tracing_subscriber::registry::LookupSpan::span (24 samples, 0.19%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (24 samples, 0.19%)tracing_subscriber::registry::sharded::Registry::get (10 samples, 0.08%)sharded_slab::pool::Pool<T,C>::get (10 samples, 0.08%)sharded_slab::shard::Shard<T,C>::with_slot (9 samples, 0.07%)sharded_slab::page::Shared<T,C>::with_slot (8 samples, 0.06%)sharded_slab::sync::inner::UnsafeCell<T>::with (8 samples, 0.06%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (8 samples, 0.06%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (5 samples, 0.04%)sharded_slab::page::slot::Slot<T,C>::get (5 samples, 0.04%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (7 samples, 0.06%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (7 samples, 0.06%)std::sync::rwlock::RwLock<T>::write (6 samples, 0.05%)std::sys_common::rwlock::RWLock::write (6 samples, 0.05%)std::sys::unix::rwlock::RWLock::write (6 samples, 0.05%)__GI___pthread_rwlock_wrlock (4 samples, 0.03%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_exit (77 samples, 0.62%)tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (3 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (3 samples, 0.02%)std::collections::hash::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::raw::RawTable<T>::find (2 samples, 0.02%)thread_local::ThreadLocal<T>::get_inner (7 samples, 0.06%)thread_local::ThreadLocal<T>::get (8 samples, 0.06%)<sharded_slab::pool::Ref<T,C> as core::ops::deref::Deref>::deref (2 samples, 0.02%)sharded_slab::pool::Ref<T,C>::value (2 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (3 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (3 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (3 samples, 0.02%)std::thread::panicking (2 samples, 0.02%)std::panicking::panicking (2 samples, 0.02%)std::panicking::panic_count::is_zero (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)sharded_slab::shard::Array<T,C>::get (3 samples, 0.02%)sharded_slab::shard::Ptr<T,C>::load (2 samples, 0.02%)core::sync::atomic::AtomicPtr<T>::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (13 samples, 0.10%)sharded_slab::shard::Shard<T,C>::with_slot (10 samples, 0.08%)sharded_slab::page::Shared<T,C>::with_slot (9 samples, 0.07%)sharded_slab::sync::inner::UnsafeCell<T>::with (9 samples, 0.07%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (9 samples, 0.07%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (7 samples, 0.06%)sharded_slab::page::slot::Slot<T,C>::get (7 samples, 0.06%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (30 samples, 0.24%)tracing_subscriber::registry::sharded::Registry::get (14 samples, 0.11%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::exit::_{{closure}} (34 samples, 0.27%)tracing_core::dispatcher::Dispatch::try_close (34 samples, 0.27%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::try_close (34 samples, 0.27%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (33 samples, 0.26%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (2 samples, 0.02%)tracing_core::dispatcher::get_default (47 samples, 0.38%)std::thread::local::LocalKey<T>::try_with (46 samples, 0.37%)tracing_core::dispatcher::get_default::_{{closure}} (45 samples, 0.36%)tracing_core::dispatcher::Entered::current (11 samples, 0.09%)tracing_core::dispatcher::Dispatch::is (5 samples, 0.04%)<dyn tracing_core::subscriber::Subscriber>::is (3 samples, 0.02%)<dyn tracing_core::subscriber::Subscriber>::downcast_ref (3 samples, 0.02%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::downcast_raw (3 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Entered> (144 samples, 1.15%)<tracing::span::Entered as core::ops::drop::Drop>::drop (144 samples, 1.15%)tracing::span::Span::do_exit (144 samples, 1.15%)tracing_core::dispatcher::Dispatch::exit (143 samples, 1.15%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::exit (143 samples, 1.15%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::exit (64 samples, 0.51%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::exit (61 samples, 0.49%)tracing_subscriber::registry::stack::SpanStack::pop (3 samples, 0.02%)alloc::vec::Vec<T,A>::remove (3 samples, 0.02%)core::intrinsics::copy (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)core::option::Option<T>::as_ref (6 samples, 0.05%)<alloc::sync::Arc<T> as core::convert::AsRef<T>>::as_ref (6 samples, 0.05%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (6 samples, 0.05%)<std::time::Instant as core::ops::arith::Sub>::sub (8 samples, 0.06%)std::time::Instant::duration_since (6 samples, 0.05%)std::sys::unix::time::inner::Instant::checked_sub_instant (6 samples, 0.05%)std::sys::unix::time::Timespec::sub_timespec (6 samples, 0.05%)core::time::Duration::new (3 samples, 0.02%)core::num::<impl u64>::checked_add (3 samples, 0.02%)core::num::<impl u64>::overflowing_add (3 samples, 0.02%)core::option::Option<T>::expect (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (5 samples, 0.04%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (5 samples, 0.04%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (5 samples, 0.04%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (5 samples, 0.04%)sharded_slab::page::slot::Guard<T,C>::release (5 samples, 0.04%)sharded_slab::page::slot::Slot<T,C>::release (5 samples, 0.04%)std::sys_common::poison::Flag::done (3 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (28 samples, 0.22%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (28 samples, 0.22%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (28 samples, 0.22%)std::sys_common::rwlock::RWLock::write_unlock (25 samples, 0.20%)std::sys::unix::rwlock::RWLock::write_unlock (25 samples, 0.20%)std::sys::unix::rwlock::RWLock::raw_unlock (25 samples, 0.20%)__GI___pthread_rwlock_unlock (25 samples, 0.20%)std::time::Instant::now (14 samples, 0.11%)std::sys::unix::time::inner::Instant::now (14 samples, 0.11%)std::sys::unix::time::inner::now (14 samples, 0.11%)__clock_gettime (14 samples, 0.11%)__vdso_clock_gettime (14 samples, 0.11%)[[vdso]] (12 samples, 0.10%)<core::option::Option<T> as core::ops::try::Try>::into_result (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (6 samples, 0.05%)core::option::Option<T>::ok_or (4 samples, 0.03%)sharded_slab::pool::Pool<T,C>::get (7 samples, 0.06%)sharded_slab::shard::Shard<T,C>::with_slot (6 samples, 0.05%)sharded_slab::page::Shared<T,C>::with_slot (6 samples, 0.05%)sharded_slab::sync::inner::UnsafeCell<T>::with (6 samples, 0.05%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (6 samples, 0.05%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (6 samples, 0.05%)sharded_slab::page::slot::Slot<T,C>::get (6 samples, 0.05%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (20 samples, 0.16%)tracing_subscriber::registry::LookupSpan::span (20 samples, 0.16%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (18 samples, 0.14%)tracing_subscriber::registry::sharded::Registry::get (9 samples, 0.07%)tracing_subscriber::registry::sharded::id_to_idx (2 samples, 0.02%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (30 samples, 0.24%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (29 samples, 0.23%)std::sync::rwlock::RwLock<T>::write (28 samples, 0.22%)std::sys_common::rwlock::RWLock::write (28 samples, 0.22%)std::sys::unix::rwlock::RWLock::write (28 samples, 0.22%)__GI___pthread_rwlock_wrlock (26 samples, 0.21%)core::option::Option<T>::and_then (5 samples, 0.04%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut::_{{closure}} (4 samples, 0.03%)<dyn core::any::Any>::downcast_mut (4 samples, 0.03%)<dyn core::any::Any>::is (4 samples, 0.03%)<T as core::any::Any>::type_id (4 samples, 0.03%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_enter (142 samples, 1.14%)tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (12 samples, 0.10%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (12 samples, 0.10%)std::collections::hash::map::HashMap<K,V,S>::get_mut (7 samples, 0.06%)hashbrown::map::HashMap<K,V,S>::get_mut (7 samples, 0.06%)hashbrown::raw::RawTable<T>::find (7 samples, 0.06%)hashbrown::raw::RawTable<T>::iter_hash (4 samples, 0.03%)hashbrown::raw::RawIterHash<T>::new (4 samples, 0.03%)hashbrown::raw::sse2::Group::load (4 samples, 0.03%)core::core_arch::x86::sse2::_mm_loadu_si128 (4 samples, 0.03%)core::intrinsics::copy_nonoverlapping (4 samples, 0.03%)<sharded_slab::pool::Ref<T,C> as core::ops::deref::Deref>::deref (5 samples, 0.04%)sharded_slab::pool::Ref<T,C>::value (5 samples, 0.04%)core::option::Option<T>::unwrap_or_else (6 samples, 0.05%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (4 samples, 0.03%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (4 samples, 0.03%)sharded_slab::page::slot::Guard<T,C>::release (4 samples, 0.03%)sharded_slab::page::slot::Slot<T,C>::release (4 samples, 0.03%)sharded_slab::shard::Array<T,C>::get (4 samples, 0.03%)sharded_slab::shard::Ptr<T,C>::load (4 samples, 0.03%)core::sync::atomic::AtomicPtr<T>::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)core::option::Option<T>::as_ref (9 samples, 0.07%)sharded_slab::pool::Pool<T,C>::get (49 samples, 0.39%)sharded_slab::shard::Shard<T,C>::with_slot (44 samples, 0.35%)sharded_slab::page::Shared<T,C>::with_slot (31 samples, 0.25%)sharded_slab::sync::inner::UnsafeCell<T>::with (31 samples, 0.25%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (31 samples, 0.25%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (21 samples, 0.17%)sharded_slab::page::slot::Slot<T,C>::get (21 samples, 0.17%)core::sync::atomic::AtomicUsize::load (19 samples, 0.15%)core::sync::atomic::atomic_load (19 samples, 0.15%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::clone_span (74 samples, 0.59%)tracing_subscriber::registry::sharded::Registry::get (50 samples, 0.40%)core::cell::RefCell<T>::borrow_mut (2 samples, 0.02%)core::cell::RefCell<T>::try_borrow_mut (2 samples, 0.02%)core::cell::BorrowRefMut::new (2 samples, 0.02%)thread_local::ThreadLocal<T>::get_inner (22 samples, 0.18%)core::ptr::mut_ptr::<impl *mut T>::is_null (8 samples, 0.06%)core::ptr::mut_ptr::<impl *mut T>::guaranteed_eq (8 samples, 0.06%)thread_local::ThreadLocal<T>::get_or_default (25 samples, 0.20%)thread_local::ThreadLocal<T>::get_or (25 samples, 0.20%)thread_local::ThreadLocal<T>::get_or_try (25 samples, 0.20%)thread_local::thread_id::get (3 samples, 0.02%)tracing::span::Span::enter (273 samples, 2.19%)t..tracing::span::Span::do_enter (273 samples, 2.19%)t..tracing_core::dispatcher::Dispatch::enter (267 samples, 2.14%)t..<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::enter (267 samples, 2.14%)<..<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::enter (119 samples, 0.95%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::enter (42 samples, 0.34%)tracing_subscriber::registry::stack::SpanStack::push (8 samples, 0.06%)alloc::vec::Vec<T,A>::push (7 samples, 0.06%)core::ptr::write (5 samples, 0.04%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (1,067 samples, 8.56%)<tracing_fut..tracing_futures::_::<impl tracing_futures::Instrumented<T>>::project (2 samples, 0.02%)[libc-2.28.so] (35 samples, 0.28%)<tracing::span::Span as core::ops::drop::Drop>::drop (3 samples, 0.02%)[libc-2.28.so] (25 samples, 0.20%)alloc::vec::Vec<T,A>::push (3 samples, 0.02%)core::mem::drop (4 samples, 0.03%)core::ptr::drop_in_place<alloc::sync::Weak<opentelemetry::sdk::trace::span::SpanInner>> (4 samples, 0.03%)<alloc::sync::Weak<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<opentelemetry::sdk::trace::span::SpanInner as core::ops::drop::Drop>::drop (4 samples, 0.03%)alloc::sync::Arc<T>::drop_slow (15 samples, 0.12%)core::ptr::drop_in_place<opentelemetry::sdk::trace::span::SpanInner> (11 samples, 0.09%)core::ptr::drop_in_place<opentelemetry::sdk::trace::tracer::Tracer> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::sync::Weak<opentelemetry::sdk::trace::provider::TracerProviderInner>> (6 samples, 0.05%)<alloc::sync::Weak<T> as core::ops::drop::Drop>::drop (6 samples, 0.05%)core::ptr::drop_in_place<opentelemetry::sdk::trace::span::Span> (24 samples, 0.19%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::span::SpanInner>> (24 samples, 0.19%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (24 samples, 0.19%)cfree (6 samples, 0.05%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (2 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (2 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (2 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (5 samples, 0.04%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (5 samples, 0.04%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (5 samples, 0.04%)std::sys_common::rwlock::RWLock::write_unlock (3 samples, 0.02%)std::sys::unix::rwlock::RWLock::write_unlock (3 samples, 0.02%)std::sys::unix::rwlock::RWLock::raw_unlock (3 samples, 0.02%)__GI___pthread_rwlock_unlock (3 samples, 0.02%)opentelemetry::core::KeyValue::new (14 samples, 0.11%)<T as core::convert::Into<U>>::into (4 samples, 0.03%)opentelemetry::core::Key::from_static_str (3 samples, 0.02%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::remote_span_context (3 samples, 0.02%)opentelemetry::context::Context::get (3 samples, 0.02%)std::collections::hash::map::HashMap<K,V,S>::get (3 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get (3 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_key_value (3 samples, 0.02%)hashbrown::raw::RawTable<T>::find (3 samples, 0.02%)hashbrown::raw::RawTable<T>::iter_hash (2 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (2 samples, 0.02%)<opentelemetry::sdk::trace::span_processor::BatchSpanProcessor as opentelemetry::sdk::trace::span_processor::SpanProcessor>::on_start (6 samples, 0.05%)<opentelemetry::sdk::trace::tracer::Tracer as core::clone::Clone>::clone (7 samples, 0.06%)<alloc::sync::Weak<T> as core::clone::Clone>::clone (5 samples, 0.04%)[libc-2.28.so] (5 samples, 0.04%)[libc-2.28.so] (83 samples, 0.67%)cfree (63 samples, 0.51%)core::ptr::drop_in_place<opentelemetry::core::Key> (21 samples, 0.17%)core::ptr::drop_in_place<alloc::borrow::Cow<str>> (21 samples, 0.17%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (176 samples, 1.41%)core::ptr::drop_in_place<[opentelemetry::core::KeyValue]> (176 samples, 1.41%)core::ptr::drop_in_place<opentelemetry::core::KeyValue> (175 samples, 1.40%)core::ptr::drop_in_place<opentelemetry::core::Value> (7 samples, 0.06%)delay_mwaitx (3 samples, 0.02%)amd_pmu_wait_on_overflow (5 samples, 0.04%)native_read_msr (2 samples, 0.02%)__perf_event_task_sched_out (8 samples, 0.06%)ctx_sched_out (8 samples, 0.06%)amd_pmu_disable_all (8 samples, 0.06%)x86_pmu_disable_all (3 samples, 0.02%)native_write_msr (2 samples, 0.02%)dequeue_task_fair (4 samples, 0.03%)dequeue_entity (4 samples, 0.03%)futex_wait_queue_me (13 samples, 0.10%)schedule (13 samples, 0.10%)__schedule (13 samples, 0.10%)futex_wait (17 samples, 0.14%)futex_wait_setup (4 samples, 0.03%)[libc-2.28.so] (73 samples, 0.59%)[libc-2.28.so] (31 samples, 0.25%)entry_SYSCALL_64_after_hwframe (25 samples, 0.20%)do_syscall_64 (25 samples, 0.20%)__x64_sys_futex (25 samples, 0.20%)do_futex (25 samples, 0.20%)futex_wake (8 samples, 0.06%)wake_up_q (3 samples, 0.02%)try_to_wake_up (3 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::Vec<opentelemetry::core::KeyValue>> (256 samples, 2.05%)c..core::ptr::drop_in_place<alloc::raw_vec::RawVec<opentelemetry::core::KeyValue>> (80 samples, 0.64%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (80 samples, 0.64%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (80 samples, 0.64%)alloc::alloc::dealloc (80 samples, 0.64%)cfree (7 samples, 0.06%)[libc-2.28.so] (8 samples, 0.06%)core::ptr::drop_in_place<alloc::borrow::Cow<str>> (13 samples, 0.10%)core::ptr::drop_in_place<alloc::string::String> (13 samples, 0.10%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (13 samples, 0.10%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (13 samples, 0.10%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (13 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (13 samples, 0.10%)alloc::alloc::dealloc (13 samples, 0.10%)cfree (5 samples, 0.04%)core::option::Option<T>::map (271 samples, 2.17%)c..core::ptr::drop_in_place<<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build::{{closure}}> (271 samples, 2.17%)c..core::ptr::drop_in_place<opentelemetry::trace::tracer::SpanBuilder> (15 samples, 0.12%)core::option::Option<T>::take (5 samples, 0.04%)core::mem::take (5 samples, 0.04%)core::mem::replace (4 samples, 0.03%)core::mem::swap (3 samples, 0.02%)core::ptr::swap_nonoverlapping_one (3 samples, 0.02%)core::ptr::swap_nonoverlapping (3 samples, 0.02%)core::ptr::swap_nonoverlapping_bytes (3 samples, 0.02%)core::intrinsics::copy_nonoverlapping (3 samples, 0.02%)core::ptr::drop_in_place<opentelemetry::sdk::trace::provider::TracerProvider> (5 samples, 0.04%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::provider::TracerProviderInner>> (5 samples, 0.04%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (5 samples, 0.04%)alloc::sync::Arc<T>::new (12 samples, 0.10%)alloc::alloc::exchange_malloc (11 samples, 0.09%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (11 samples, 0.09%)alloc::alloc::Global::alloc_impl (11 samples, 0.09%)alloc::alloc::alloc (11 samples, 0.09%)__libc_malloc (11 samples, 0.09%)opentelemetry::sdk::trace::span::Span::new (17 samples, 0.14%)opentelemetry::sdk::trace::tracer::Tracer::process_sampling_result (3 samples, 0.02%)opentelemetry::trace::tracer::SpanBuilder::start (383 samples, 3.07%)ope..<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build (383 samples, 3.07%)<op..opentelemetry::sdk::trace::tracer::Tracer::provider (29 samples, 0.23%)alloc::sync::Weak<T>::upgrade (29 samples, 0.23%)std::time::SystemTime::now (11 samples, 0.09%)std::sys::unix::time::inner::SystemTime::now (11 samples, 0.09%)std::sys::unix::time::inner::now (11 samples, 0.09%)__clock_gettime (10 samples, 0.08%)__vdso_clock_gettime (9 samples, 0.07%)[[vdso]] (9 samples, 0.07%)<core::option::Option<T> as core::ops::try::Try>::into_result (5 samples, 0.04%)sharded_slab::pool::Pool<T,C>::get (2 samples, 0.02%)sharded_slab::shard::Shard<T,C>::with_slot (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (2 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (2 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (9 samples, 0.07%)tracing_subscriber::registry::LookupSpan::span (9 samples, 0.07%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (9 samples, 0.07%)tracing_subscriber::registry::sharded::Registry::get (3 samples, 0.02%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (2 samples, 0.02%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (2 samples, 0.02%)std::sync::rwlock::RwLock<T>::write (2 samples, 0.02%)std::sys_common::rwlock::RWLock::write (2 samples, 0.02%)std::sys::unix::rwlock::RWLock::write (2 samples, 0.02%)__GI___pthread_rwlock_wrlock (2 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (3 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (3 samples, 0.02%)std::collections::hash::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::raw::RawTable<T>::find (2 samples, 0.02%)[libc-2.28.so] (13 samples, 0.10%)[libc-2.28.so] (6 samples, 0.05%)core::option::Option<T>::and_then (26 samples, 0.21%)tracing_subscriber::registry::extensions::ExtensionsInner::remove::_{{closure}} (26 samples, 0.21%)core::option::Option<T>::map (26 samples, 0.21%)tracing_subscriber::registry::extensions::ExtensionsInner::remove::_{{closure}}::_{{closure}} (26 samples, 0.21%)alloc::alloc::box_free (13 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (13 samples, 0.10%)alloc::alloc::dealloc (13 samples, 0.10%)cfree (7 samples, 0.06%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_close (510 samples, 4.09%)<tra..tracing_subscriber::registry::extensions::ExtensionsMut::remove (27 samples, 0.22%)tracing_subscriber::registry::extensions::ExtensionsInner::remove (27 samples, 0.22%)<sharded_slab::pool::Ref<T,C> as core::ops::deref::Deref>::deref (2 samples, 0.02%)sharded_slab::pool::Ref<T,C>::value (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (4 samples, 0.03%)sharded_slab::shard::Shard<T,C>::with_slot (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (2 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (2 samples, 0.02%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (11 samples, 0.09%)tracing_subscriber::registry::sharded::Registry::get (6 samples, 0.05%)tracing_subscriber::registry::sharded::id_to_idx (2 samples, 0.02%)core::option::Option<T>::map (2 samples, 0.02%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close::_{{closure}} (2 samples, 0.02%)tracing_subscriber::registry::sharded::Registry::start_close (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)sharded_slab::shard::Shard<T,C>::mark_clear_local (8 samples, 0.06%)sharded_slab::page::Shared<T,C>::mark_clear (8 samples, 0.06%)sharded_slab::sync::inner::UnsafeCell<T>::with (8 samples, 0.06%)sharded_slab::page::Shared<T,C>::mark_clear::_{{closure}} (8 samples, 0.06%)sharded_slab::page::slot::Slot<T,C>::try_clear_storage (6 samples, 0.05%)sharded_slab::page::slot::Slot<T,C>::clear_storage (6 samples, 0.05%)sharded_slab::page::slot::Slot<T,C>::release_with (6 samples, 0.05%)sharded_slab::sync::inner::UnsafeCell<T>::with_mut (6 samples, 0.05%)sharded_slab::page::slot::Slot<T,C>::release_with::_{{closure}} (6 samples, 0.05%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}} (6 samples, 0.05%)core::option::Option<T>::map (6 samples, 0.05%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}}::_{{closure}} (6 samples, 0.05%)<tracing_subscriber::registry::sharded::DataInner as sharded_slab::clear::Clear>::clear (6 samples, 0.05%)tracing_subscriber::registry::extensions::ExtensionsInner::clear (5 samples, 0.04%)std::collections::hash::map::HashMap<K,V,S>::clear (5 samples, 0.04%)hashbrown::map::HashMap<K,V,S>::clear (5 samples, 0.04%)hashbrown::raw::RawTable<T>::clear (5 samples, 0.04%)hashbrown::raw::Bucket<T>::drop (5 samples, 0.04%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (5 samples, 0.04%)core::ptr::drop_in_place<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>)> (5 samples, 0.04%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>> (5 samples, 0.04%)alloc::alloc::box_free (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (5 samples, 0.04%)alloc::alloc::dealloc (5 samples, 0.04%)cfree (4 samples, 0.03%)core::option::Option<T>::as_ref (3 samples, 0.02%)<sharded_slab::page::stack::TransferStack<C> as sharded_slab::page::FreeList<C>>::push (12 samples, 0.10%)sharded_slab::page::stack::TransferStack<C>::push (12 samples, 0.10%)<sharded_slab::page::stack::TransferStack<C> as sharded_slab::page::FreeList<C>>::push::_{{closure}} (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::set_next (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with_mut (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::set_next::_{{closure}} (3 samples, 0.02%)[libc-2.28.so] (5 samples, 0.04%)hashbrown::raw::Bucket<T>::drop (17 samples, 0.14%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (17 samples, 0.14%)core::ptr::drop_in_place<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>)> (17 samples, 0.14%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>> (17 samples, 0.14%)alloc::alloc::box_free (15 samples, 0.12%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (15 samples, 0.12%)alloc::alloc::dealloc (15 samples, 0.12%)cfree (10 samples, 0.08%)core::ptr::const_ptr::<impl *const T>::add (2 samples, 0.02%)core::ptr::const_ptr::<impl *const T>::offset (2 samples, 0.02%)core::option::Option<T>::map (53 samples, 0.42%)sharded_slab::pool::Pool<T,C>::clear::_{{closure}} (52 samples, 0.42%)sharded_slab::shard::Shard<T,C>::mark_clear_remote (44 samples, 0.35%)sharded_slab::page::Shared<T,C>::mark_clear (42 samples, 0.34%)sharded_slab::sync::inner::UnsafeCell<T>::with (42 samples, 0.34%)sharded_slab::page::Shared<T,C>::mark_clear::_{{closure}} (42 samples, 0.34%)sharded_slab::page::slot::Slot<T,C>::try_clear_storage (39 samples, 0.31%)sharded_slab::page::slot::Slot<T,C>::clear_storage (39 samples, 0.31%)sharded_slab::page::slot::Slot<T,C>::release_with (39 samples, 0.31%)sharded_slab::sync::inner::UnsafeCell<T>::with_mut (24 samples, 0.19%)sharded_slab::page::slot::Slot<T,C>::release_with::_{{closure}} (24 samples, 0.19%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}} (24 samples, 0.19%)core::option::Option<T>::map (24 samples, 0.19%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}}::_{{closure}} (24 samples, 0.19%)<tracing_subscriber::registry::sharded::DataInner as sharded_slab::clear::Clear>::clear (24 samples, 0.19%)tracing_subscriber::registry::extensions::ExtensionsInner::clear (23 samples, 0.18%)std::collections::hash::map::HashMap<K,V,S>::clear (23 samples, 0.18%)hashbrown::map::HashMap<K,V,S>::clear (23 samples, 0.18%)hashbrown::raw::RawTable<T>::clear (23 samples, 0.18%)hashbrown::raw::RawTable<T>::iter (5 samples, 0.04%)hashbrown::raw::RawIterRange<T>::new (5 samples, 0.04%)hashbrown::raw::sse2::Group::match_full (3 samples, 0.02%)hashbrown::raw::sse2::Group::match_empty_or_deleted (3 samples, 0.02%)core::core_arch::x86::sse2::_mm_movemask_epi8 (3 samples, 0.02%)sharded_slab::tid::REGISTRATION::__getit (3 samples, 0.02%)std::thread::local::fast::Key<T>::get (2 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<tracing_subscriber::registry::sharded::CloseGuard>> (59 samples, 0.47%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::CloseGuard> (59 samples, 0.47%)sharded_slab::pool::Pool<T,C>::clear (59 samples, 0.47%)sharded_slab::tid::Tid<C>::is_current (4 samples, 0.03%)std::thread::local::LocalKey<T>::try_with (4 samples, 0.03%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (584 samples, 4.68%)<trac..tracing_subscriber::registry::sharded::CloseGuard::is_closing (2 samples, 0.02%)core::ptr::drop_in_place<tracing_futures::Instrumented<futures_util::future::try_future::AndThen<core::future::from_generator::GenFuture<fred::utils::wait_for_response::{{closure}}>,core::future::from_generator::GenFuture<fred::utils::request_response<fred::commands::one_arg_value_cmd::{{closure}}::{{closure}}>::{{closure}}::{{closure}}::{{closure}}>,fred::utils::request_response<fred::commands::one_arg_value_cmd::{{closure}}::{{closure}}>::{{closure}}::{{closure}}>>> (596 samples, 4.78%)core::..core::ptr::drop_in_place<tracing::span::Span> (594 samples, 4.76%)core::..core::ptr::drop_in_place<core::option::Option<tracing::span::Inner>> (7 samples, 0.06%)core::ptr::drop_in_place<tracing::span::Inner> (6 samples, 0.05%)core::ptr::drop_in_place<tracing_core::dispatcher::Dispatch> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync>> (6 samples, 0.05%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (6 samples, 0.05%)__libc_malloc (13 samples, 0.10%)[libc-2.28.so] (9 samples, 0.07%)fred::commands::one_arg_value_cmd::_{{closure}}::_{{closure}} (17 samples, 0.14%)alloc::alloc::exchange_malloc (15 samples, 0.12%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (15 samples, 0.12%)alloc::alloc::Global::alloc_impl (15 samples, 0.12%)alloc::alloc::alloc (15 samples, 0.12%)alloc::sync::Arc<T>::new (15 samples, 0.12%)alloc::alloc::exchange_malloc (15 samples, 0.12%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (15 samples, 0.12%)alloc::alloc::Global::alloc_impl (15 samples, 0.12%)alloc::alloc::alloc (15 samples, 0.12%)__libc_malloc (14 samples, 0.11%)[libc-2.28.so] (7 samples, 0.06%)fred::protocol::types::RedisCommand::new (27 samples, 0.22%)std::time::Instant::now (11 samples, 0.09%)std::sys::unix::time::inner::Instant::now (11 samples, 0.09%)std::sys::unix::time::inner::now (11 samples, 0.09%)__clock_gettime (10 samples, 0.08%)__vdso_clock_gettime (10 samples, 0.08%)[[vdso]] (8 samples, 0.06%)fred::protocol::types::RedisCommandKind::to_str_debug (3 samples, 0.02%)<alloc::vec::Vec<T,A> as core::ops::deref::Deref>::deref (6 samples, 0.05%)fred::protocol::utils::args_size (8 samples, 0.06%)core::iter::traits::iterator::Iterator::fold (2 samples, 0.02%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (2 samples, 0.02%)<tracing_core::field::Iter as core::iter::traits::iterator::Iterator>::next (6 samples, 0.05%)alloc::string::String::as_str (15 samples, 0.12%)<alloc::string::String as core::ops::deref::Deref>::deref (15 samples, 0.12%)<alloc::vec::Vec<T,A> as core::ops::deref::Deref>::deref (15 samples, 0.12%)alloc::vec::Vec<T,A>::as_ptr (12 samples, 0.10%)core::option::Option<T>::expect (17 samples, 0.14%)tracing::span::Inner::new (10 samples, 0.08%)<tracing_core::dispatcher::Dispatch as core::clone::Clone>::clone (10 samples, 0.08%)<alloc::sync::Arc<T> as core::clone::Clone>::clone (10 samples, 0.08%)__libc_malloc (3 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::allocate_in (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (4 samples, 0.03%)alloc::alloc::Global::alloc_impl (4 samples, 0.03%)alloc::alloc::alloc (4 samples, 0.03%)<str as alloc::string::ToString>::to_string (10 samples, 0.08%)<alloc::string::String as core::convert::From<&str>>::from (10 samples, 0.08%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (10 samples, 0.08%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (10 samples, 0.08%)alloc::slice::<impl [T]>::to_vec (10 samples, 0.08%)alloc::slice::<impl [T]>::to_vec_in (10 samples, 0.08%)alloc::slice::hack::to_vec (10 samples, 0.08%)<T as alloc::slice::hack::ConvertVec>::to_vec (10 samples, 0.08%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (6 samples, 0.05%)core::intrinsics::copy_nonoverlapping (6 samples, 0.05%)[libc-2.28.so] (6 samples, 0.05%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::span_builder (13 samples, 0.10%)core::ptr::drop_in_place<opentelemetry::sdk::trace::provider::TracerProvider> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::provider::TracerProviderInner>> (2 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<rand_core::block::BlockRng<R> as rand_core::RngCore>::next_u64::_{{closure}} (2 samples, 0.02%)<opentelemetry::sdk::trace::id_generator::IdGenerator as opentelemetry::trace::id_generator::IdGenerator>::new_span_id::_{{closure}} (5 samples, 0.04%)rand::rng::Rng::gen (5 samples, 0.04%)rand::distributions::integer::<impl rand::distributions::distribution::Distribution<u64> for rand::distributions::Standard>::sample (5 samples, 0.04%)<rand::rngs::thread::ThreadRng as rand_core::RngCore>::next_u64 (5 samples, 0.04%)<rand::rngs::adapter::reseeding::ReseedingRng<R,Rsdr> as rand_core::RngCore>::next_u64 (5 samples, 0.04%)<rand_core::block::BlockRng<R> as rand_core::RngCore>::next_u64 (5 samples, 0.04%)rand_core::block::BlockRng<R>::generate_and_set (2 samples, 0.02%)<rand::rngs::adapter::reseeding::ReseedingCore<R,Rsdr> as rand_core::block::BlockRngCore>::generate (2 samples, 0.02%)<rand_chacha::chacha::ChaCha12Core as rand_core::block::BlockRngCore>::generate (2 samples, 0.02%)rand_chacha::guts::ChaCha::refill4 (2 samples, 0.02%)rand_chacha::guts::refill_wide (2 samples, 0.02%)core::option::Option<T>::map (13 samples, 0.10%)<opentelemetry::sdk::trace::tracer::Tracer as tracing_opentelemetry::tracer::PreSampledTracer>::new_span_id::_{{closure}} (13 samples, 0.10%)std::thread::local::LocalKey<T>::with (8 samples, 0.06%)std::thread::local::LocalKey<T>::try_with (8 samples, 0.06%)opentelemetry::sdk::trace::id_generator::CURRENT_RNG::__getit (3 samples, 0.02%)std::thread::local::fast::Key<T>::get (3 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)alloc::sync::Weak<T>::inner (2 samples, 0.02%)alloc::rc::is_dangling (2 samples, 0.02%)<opentelemetry::sdk::trace::tracer::Tracer as tracing_opentelemetry::tracer::PreSampledTracer>::new_span_id (44 samples, 0.35%)opentelemetry::sdk::trace::tracer::Tracer::provider (28 samples, 0.22%)alloc::sync::Weak<T>::upgrade (28 samples, 0.22%)core::sync::atomic::AtomicUsize::load (21 samples, 0.17%)core::sync::atomic::atomic_load (21 samples, 0.17%)<opentelemetry::sdk::trace::id_generator::IdGenerator as opentelemetry::trace::id_generator::IdGenerator>::new_trace_id::_{{closure}} (6 samples, 0.05%)rand::rng::Rng::gen (6 samples, 0.05%)rand::distributions::integer::<impl rand::distributions::distribution::Distribution<u128> for rand::distributions::Standard>::sample (6 samples, 0.05%)<rand::rngs::thread::ThreadRng as rand_core::RngCore>::next_u64 (5 samples, 0.04%)<rand::rngs::adapter::reseeding::ReseedingRng<R,Rsdr> as rand_core::RngCore>::next_u64 (5 samples, 0.04%)<rand_core::block::BlockRng<R> as rand_core::RngCore>::next_u64 (5 samples, 0.04%)rand_core::block::BlockRng<R>::generate_and_set (3 samples, 0.02%)<rand::rngs::adapter::reseeding::ReseedingCore<R,Rsdr> as rand_core::block::BlockRngCore>::generate (3 samples, 0.02%)<rand_chacha::chacha::ChaCha12Core as rand_core::block::BlockRngCore>::generate (3 samples, 0.02%)rand_chacha::guts::ChaCha::refill4 (3 samples, 0.02%)rand_chacha::guts::refill_wide (3 samples, 0.02%)rand_chacha::guts::refill_wide::impl_avx2 (2 samples, 0.02%)rand_chacha::guts::refill_wide::fn_impl (2 samples, 0.02%)rand_chacha::guts::refill_wide_impl (2 samples, 0.02%)core::option::Option<T>::map (13 samples, 0.10%)<opentelemetry::sdk::trace::tracer::Tracer as tracing_opentelemetry::tracer::PreSampledTracer>::new_trace_id::_{{closure}} (13 samples, 0.10%)std::thread::local::LocalKey<T>::with (10 samples, 0.08%)std::thread::local::LocalKey<T>::try_with (8 samples, 0.06%)<opentelemetry::sdk::trace::tracer::Tracer as tracing_opentelemetry::tracer::PreSampledTracer>::new_trace_id (21 samples, 0.17%)opentelemetry::sdk::trace::tracer::Tracer::provider (6 samples, 0.05%)alloc::sync::Weak<T>::upgrade (6 samples, 0.05%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)[libc-2.28.so] (9 samples, 0.07%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::has_active_span (7 samples, 0.06%)opentelemetry::context::Context::get (3 samples, 0.02%)std::collections::hash::map::HashMap<K,V,S>::get (3 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get (3 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_key_value (3 samples, 0.02%)hashbrown::raw::RawTable<T>::find (3 samples, 0.02%)core::option::Option<T>::map_or (13 samples, 0.10%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::new_span::_{{closure}} (12 samples, 0.10%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::remote_span_context (4 samples, 0.03%)opentelemetry::context::Context::get (2 samples, 0.02%)std::collections::hash::map::HashMap<K,V,S>::get (2 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get (2 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_key_value (2 samples, 0.02%)hashbrown::raw::RawTable<T>::find (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (2 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (2 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (2 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (4 samples, 0.03%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (4 samples, 0.03%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)std::sys_common::rwlock::RWLock::write_unlock (3 samples, 0.02%)std::sys::unix::rwlock::RWLock::write_unlock (3 samples, 0.02%)std::sys::unix::rwlock::RWLock::raw_unlock (3 samples, 0.02%)__GI___pthread_rwlock_unlock (3 samples, 0.02%)opentelemetry::trace::tracer::SpanBuilder::with_span_id (7 samples, 0.06%)opentelemetry::trace::tracer::SpanBuilder::with_start_time (3 samples, 0.02%)std::time::SystemTime::now (20 samples, 0.16%)std::sys::unix::time::inner::SystemTime::now (18 samples, 0.14%)std::sys::unix::time::inner::now (18 samples, 0.14%)__clock_gettime (9 samples, 0.07%)__vdso_clock_gettime (9 samples, 0.07%)[[vdso]] (5 samples, 0.04%)tracing_core::metadata::Metadata::name (3 samples, 0.02%)<&T as tracing_core::field::Value>::record (2 samples, 0.02%)__libc_malloc (16 samples, 0.13%)__rdl_alloc (3 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (2 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (23 samples, 0.18%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (23 samples, 0.18%)alloc::raw_vec::RawVec<T,A>::allocate_in (23 samples, 0.18%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (23 samples, 0.18%)alloc::alloc::Global::alloc_impl (23 samples, 0.18%)alloc::alloc::alloc (23 samples, 0.18%)__rust_alloc (4 samples, 0.03%)<str as alloc::string::ToString>::to_string (31 samples, 0.25%)<alloc::string::String as core::convert::From<&str>>::from (31 samples, 0.25%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (31 samples, 0.25%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (31 samples, 0.25%)alloc::slice::<impl [T]>::to_vec (31 samples, 0.25%)alloc::slice::<impl [T]>::to_vec_in (31 samples, 0.25%)alloc::slice::hack::to_vec (31 samples, 0.25%)<T as alloc::slice::hack::ConvertVec>::to_vec (31 samples, 0.25%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (8 samples, 0.06%)core::intrinsics::copy_nonoverlapping (8 samples, 0.06%)[libc-2.28.so] (8 samples, 0.06%)__libc_malloc (8 samples, 0.06%)alloc::alloc::exchange_malloc (12 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (12 samples, 0.10%)alloc::alloc::Global::alloc_impl (12 samples, 0.10%)alloc::alloc::alloc (12 samples, 0.10%)__rdl_alloc (3 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (2 samples, 0.02%)[libc-2.28.so] (50 samples, 0.40%)futex_wait (3 samples, 0.02%)futex_wait_setup (2 samples, 0.02%)get_futex_value_locked (2 samples, 0.02%)mark_wake_futex (2 samples, 0.02%)wake_q_add (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (107 samples, 0.86%)alloc::raw_vec::RawVec<T,A>::reserve (107 samples, 0.86%)alloc::raw_vec::RawVec<T,A>::try_reserve (107 samples, 0.86%)alloc::raw_vec::RawVec<T,A>::grow_amortized (107 samples, 0.86%)alloc::raw_vec::finish_grow (105 samples, 0.84%)<alloc::alloc::Global as core::alloc::Allocator>::grow (104 samples, 0.83%)alloc::alloc::Global::grow_impl (104 samples, 0.83%)alloc::alloc::realloc (104 samples, 0.83%)realloc (104 samples, 0.83%)[libc-2.28.so] (82 samples, 0.66%)entry_SYSCALL_64_after_hwframe (14 samples, 0.11%)do_syscall_64 (14 samples, 0.11%)__x64_sys_futex (13 samples, 0.10%)do_futex (13 samples, 0.10%)futex_wake (10 samples, 0.08%)wake_up_q (7 samples, 0.06%)try_to_wake_up (7 samples, 0.06%)alloc::vec::Vec<T,A>::push (111 samples, 0.89%)core::ptr::write (4 samples, 0.03%)opentelemetry::core::KeyValue::new (13 samples, 0.10%)<T as core::convert::Into<U>>::into (12 samples, 0.10%)opentelemetry::core::Key::from_static_str (2 samples, 0.02%)tracing_core::span::Attributes::record (189 samples, 1.52%)tracing_core::field::ValueSet::record (188 samples, 1.51%)<&T as tracing_core::field::Value>::record (186 samples, 1.49%)<tracing_opentelemetry::layer::SpanAttributeVisitor as tracing_core::field::Visit>::record_str (181 samples, 1.45%)tracing_core::field::Field::name (9 samples, 0.07%)core::option::Option<T>::unwrap_or_else (10 samples, 0.08%)core::ops::function::FnOnce::call_once (10 samples, 0.08%)opentelemetry::context::Context::current (10 samples, 0.08%)opentelemetry::context::get_current (5 samples, 0.04%)std::thread::local::LocalKey<T>::try_with (5 samples, 0.04%)opentelemetry::context::get_current::_{{closure}} (4 samples, 0.03%)opentelemetry::context::Context::current::_{{closure}} (4 samples, 0.03%)<opentelemetry::context::Context as core::clone::Clone>::clone (4 samples, 0.03%)<std::collections::hash::map::HashMap<K,V,S> as core::clone::Clone>::clone (4 samples, 0.03%)<hashbrown::map::HashMap<K,V,S> as core::clone::Clone>::clone (4 samples, 0.03%)<hashbrown::raw::RawTable<T> as core::clone::Clone>::clone (3 samples, 0.02%)hashbrown::raw::RawTable<T>::new (2 samples, 0.02%)hashbrown::raw::sse2::Group::static_empty (2 samples, 0.02%)core::option::Option<T>::unwrap_or_else (2 samples, 0.02%)core::ops::function::FnOnce::call_once (2 samples, 0.02%)tracing_opentelemetry::layer::OpenTelemetryLayer<S,T>::parent_context (15 samples, 0.12%)tracing_subscriber::layer::Context<S>::lookup_current (5 samples, 0.04%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::current_span (5 samples, 0.04%)thread_local::ThreadLocal<T>::get (2 samples, 0.02%)tracing_opentelemetry::layer::Timings::new (15 samples, 0.12%)std::time::Instant::now (15 samples, 0.12%)std::sys::unix::time::inner::Instant::now (14 samples, 0.11%)std::sys::unix::time::inner::now (14 samples, 0.11%)__clock_gettime (14 samples, 0.11%)__vdso_clock_gettime (11 samples, 0.09%)[[vdso]] (9 samples, 0.07%)sharded_slab::pool::Pool<T,C>::get (7 samples, 0.06%)sharded_slab::shard::Shard<T,C>::with_slot (6 samples, 0.05%)sharded_slab::page::Shared<T,C>::with_slot (5 samples, 0.04%)sharded_slab::sync::inner::UnsafeCell<T>::with (5 samples, 0.04%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (5 samples, 0.04%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (5 samples, 0.04%)sharded_slab::page::slot::Slot<T,C>::get (5 samples, 0.04%)tracing_subscriber::layer::Context<S>::span (11 samples, 0.09%)tracing_subscriber::registry::LookupSpan::span (10 samples, 0.08%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (9 samples, 0.07%)tracing_subscriber::registry::sharded::Registry::get (8 samples, 0.06%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (27 samples, 0.22%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (27 samples, 0.22%)std::sync::rwlock::RwLock<T>::write (25 samples, 0.20%)std::sys_common::rwlock::RWLock::write (24 samples, 0.19%)std::sys::unix::rwlock::RWLock::write (24 samples, 0.19%)__GI___pthread_rwlock_wrlock (23 samples, 0.18%)[libc-2.28.so] (3 samples, 0.02%)[libc-2.28.so] (4 samples, 0.03%)__libc_malloc (12 samples, 0.10%)alloc::boxed::Box<T>::new (18 samples, 0.14%)alloc::alloc::exchange_malloc (14 samples, 0.11%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (14 samples, 0.11%)alloc::alloc::Global::alloc_impl (14 samples, 0.11%)alloc::alloc::alloc (14 samples, 0.11%)hashbrown::raw::RawTable<T>::find (3 samples, 0.02%)hashbrown::raw::RawTable<T>::iter_hash (2 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (2 samples, 0.02%)hashbrown::raw::Bucket<T>::write (19 samples, 0.15%)core::ptr::mut_ptr::<impl *mut T>::write (19 samples, 0.15%)core::ptr::write (19 samples, 0.15%)hashbrown::raw::is_full (2 samples, 0.02%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::new_span (461 samples, 3.70%)<tra..tracing_subscriber::registry::extensions::ExtensionsMut::insert (56 samples, 0.45%)tracing_subscriber::registry::extensions::ExtensionsMut::replace (55 samples, 0.44%)tracing_subscriber::registry::extensions::ExtensionsInner::insert (54 samples, 0.43%)std::collections::hash::map::HashMap<K,V,S>::insert (30 samples, 0.24%)hashbrown::map::HashMap<K,V,S>::insert (30 samples, 0.24%)hashbrown::raw::RawTable<T>::insert (27 samples, 0.22%)hashbrown::raw::RawTable<T>::find_insert_slot (7 samples, 0.06%)core::option::Option<T>::unwrap_or_else (2 samples, 0.02%)core::ops::function::FnOnce::call_once (2 samples, 0.02%)tracing_core::span::Current::none (2 samples, 0.02%)thread_local::ThreadLocal<T>::get_inner (4 samples, 0.03%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::current_span (11 samples, 0.09%)thread_local::ThreadLocal<T>::get (5 samples, 0.04%)<core::option::Option<T> as core::ops::try::Try>::into_result (3 samples, 0.02%)core::option::Option<T>::ok_or (2 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::RefMut<tracing_subscriber::registry::sharded::DataInner>> (6 samples, 0.05%)<sharded_slab::pool::RefMut<T,C> as core::ops::drop::Drop>::drop (6 samples, 0.05%)sharded_slab::page::slot::InitGuard<T,C>::release (6 samples, 0.05%)sharded_slab::page::slot::InitGuard<T,C>::release2 (6 samples, 0.05%)<core::option::Option<T> as core::ops::try::Try>::into_result (7 samples, 0.06%)core::option::Option<T>::ok_or (5 samples, 0.04%)<core::option::Option<T> as core::ops::try::Try>::into_result (5 samples, 0.04%)core::option::Option<T>::ok_or (5 samples, 0.04%)sharded_slab::page::Shared<T,C>::pop (8 samples, 0.06%)<core::option::Option<T> as core::ops::try::Try>::into_result (5 samples, 0.04%)core::option::Option<T>::ok_or (5 samples, 0.04%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (12 samples, 0.10%)sharded_slab::pool::Pool<T,C>::create::_{{closure}} (12 samples, 0.10%)<core::option::Option<T> as core::ops::try::Try>::into_result (12 samples, 0.10%)core::option::Option<T>::ok_or (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::create_with (68 samples, 0.55%)sharded_slab::pool::Pool<T,C>::create (51 samples, 0.41%)sharded_slab::shard::Shard<T,C>::init_with (44 samples, 0.35%)sharded_slab::page::Shared<T,C>::init_with (37 samples, 0.30%)sharded_slab::sync::inner::UnsafeCell<T>::with (18 samples, 0.14%)sharded_slab::page::Shared<T,C>::init_with::_{{closure}} (18 samples, 0.14%)tracing::span::Span::make_with (558 samples, 4.47%)traci..tracing_core::dispatcher::Dispatch::new_span (548 samples, 4.39%)traci..<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::new_span (548 samples, 4.39%)<allo..<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::new_span (548 samples, 4.39%)<trac..<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::new_span (84 samples, 0.67%)tracing::span::Span::new::_{{closure}} (562 samples, 4.51%)traci..tracing::span::Span::new_with (562 samples, 4.51%)traci..tracing::span::Span::new (571 samples, 4.58%)traci..tracing_core::dispatcher::get_default (570 samples, 4.57%)traci..std::thread::local::LocalKey<T>::try_with (569 samples, 4.56%)std::..tracing_core::dispatcher::get_default::_{{closure}} (567 samples, 4.55%)traci..tracing_core::dispatcher::Entered::current (4 samples, 0.03%)tracing_core::dispatcher::Dispatch::is (2 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (2 samples, 0.02%)fred::trace::enabled::create_command_span (614 samples, 4.92%)fred::..fred::utils::disallow_nested_values (4 samples, 0.03%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::mpsc::unbounded::UnboundedSender<fred::protocol::types::RedisCommand>>>> (3 samples, 0.02%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (3 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (3 samples, 0.02%)lock_api::rwlock::RwLock<R,T>::read (10 samples, 0.08%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (10 samples, 0.08%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (6 samples, 0.05%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (3 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (4 samples, 0.03%)[libc-2.28.so] (4 samples, 0.03%)tokio::sync::mpsc::list::Tx<T>::push (27 samples, 0.22%)tokio::sync::mpsc::block::Block<T>::write (7 samples, 0.06%)tokio::sync::mpsc::block::Block<T>::set_ready (3 samples, 0.02%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (2 samples, 0.02%)tokio::sync::mpsc::chan::Tx<T,S>::send (46 samples, 0.37%)tokio::sync::mpsc::chan::Chan<T,S>::send (46 samples, 0.37%)tokio::sync::task::atomic_waker::AtomicWaker::wake (15 samples, 0.12%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (12 samples, 0.10%)core::sync::atomic::AtomicUsize::fetch_or (12 samples, 0.10%)core::sync::atomic::atomic_or (12 samples, 0.10%)fred::utils::send_command (85 samples, 0.68%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (61 samples, 0.49%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (13 samples, 0.10%)core::sync::atomic::AtomicUsize::load (11 samples, 0.09%)core::sync::atomic::atomic_load (11 samples, 0.09%)[libc-2.28.so] (7 samples, 0.06%)futures_util::future::try_future::TryFutureExt::and_then (11 samples, 0.09%)futures_util::future::try_future::AndThen<Fut1,Fut2,F>::new (11 samples, 0.09%)futures_util::future::try_future::MapOk<Fut,F>::new (11 samples, 0.09%)futures_util::future::future::Map<Fut,F>::new (11 samples, 0.09%)futures_util::future::future::map::Map<Fut,F>::new (4 samples, 0.03%)[libc-2.28.so] (4 samples, 0.03%)<T as core::convert::TryFrom<U>>::try_from (2 samples, 0.02%)[libc-2.28.so] (4 samples, 0.03%)alloc::sync::Arc<T>::new (12 samples, 0.10%)alloc::alloc::exchange_malloc (8 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (8 samples, 0.06%)alloc::alloc::Global::alloc_impl (8 samples, 0.06%)alloc::alloc::alloc (8 samples, 0.06%)__libc_malloc (8 samples, 0.06%)tokio::sync::oneshot::State::as_usize (4 samples, 0.03%)tokio::sync::oneshot::channel (21 samples, 0.17%)tokio::sync::oneshot::State::new (2 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::position (20 samples, 0.16%)tracing_core::field::FieldSet::field::_{{closure}} (19 samples, 0.15%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (19 samples, 0.15%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (19 samples, 0.15%)core::str::traits::<impl core::cmp::PartialEq for str>::eq (19 samples, 0.15%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (19 samples, 0.15%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (19 samples, 0.15%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (19 samples, 0.15%)[libc-2.28.so] (11 samples, 0.09%)tracing_core::field::FieldSet::field (26 samples, 0.21%)core::option::Option<T>::map (5 samples, 0.04%)tracing_core::field::FieldSet::field::_{{closure}} (5 samples, 0.04%)tracing_core::field::FieldSet::callsite (3 samples, 0.02%)<str as tracing::field::AsField>::as_field (29 samples, 0.23%)tracing_core::metadata::Metadata::fields (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (10 samples, 0.08%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (10 samples, 0.08%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (10 samples, 0.08%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (10 samples, 0.08%)sharded_slab::page::slot::Guard<T,C>::release (10 samples, 0.08%)sharded_slab::page::slot::Slot<T,C>::release (10 samples, 0.08%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (32 samples, 0.26%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (32 samples, 0.26%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (32 samples, 0.26%)std::sys_common::rwlock::RWLock::write_unlock (31 samples, 0.25%)std::sys::unix::rwlock::RWLock::write_unlock (31 samples, 0.25%)std::sys::unix::rwlock::RWLock::raw_unlock (31 samples, 0.25%)__GI___pthread_rwlock_unlock (31 samples, 0.25%)<&T as tracing_core::field::Value>::record (4 samples, 0.03%)<str as tracing_core::field::Value>::record (2 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (12 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (12 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::allocate_in (12 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (12 samples, 0.10%)alloc::alloc::Global::alloc_impl (12 samples, 0.10%)alloc::alloc::alloc (12 samples, 0.10%)__libc_malloc (12 samples, 0.10%)<str as alloc::string::ToString>::to_string (17 samples, 0.14%)<alloc::string::String as core::convert::From<&str>>::from (17 samples, 0.14%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (17 samples, 0.14%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (17 samples, 0.14%)alloc::slice::<impl [T]>::to_vec (17 samples, 0.14%)alloc::slice::<impl [T]>::to_vec_in (17 samples, 0.14%)alloc::slice::hack::to_vec (17 samples, 0.14%)<T as alloc::slice::hack::ConvertVec>::to_vec (17 samples, 0.14%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (5 samples, 0.04%)core::intrinsics::copy_nonoverlapping (5 samples, 0.04%)[libc-2.28.so] (5 samples, 0.04%)<opentelemetry::core::Value as core::convert::From<alloc::string::String>>::from (2 samples, 0.02%)opentelemetry::core::KeyValue::new (16 samples, 0.13%)<T as core::convert::Into<U>>::into (10 samples, 0.08%)<tracing_opentelemetry::layer::SpanAttributeVisitor as tracing_core::field::Visit>::record_str (40 samples, 0.32%)tracing_core::field::Field::name (4 samples, 0.03%)<&mut W as core::fmt::Write>::write_str (2 samples, 0.02%)core::fmt::num::<impl core::fmt::Debug for u64>::fmt (4 samples, 0.03%)core::fmt::Formatter::debug_upper_hex (3 samples, 0.02%)__libc_malloc (2 samples, 0.02%)alloc::raw_vec::finish_grow (5 samples, 0.04%)__rdl_alloc (3 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (3 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::try_reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::grow_amortized (9 samples, 0.07%)<&mut W as core::fmt::Write>::write_str (13 samples, 0.10%)<alloc::string::String as core::fmt::Write>::write_str (10 samples, 0.08%)alloc::string::String::push_str (10 samples, 0.08%)alloc::vec::Vec<T,A>::extend_from_slice (10 samples, 0.08%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (10 samples, 0.08%)alloc::vec::Vec<T,A>::append_elements (10 samples, 0.08%)core::fmt::Write::write_fmt (37 samples, 0.30%)core::fmt::write (36 samples, 0.29%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (19 samples, 0.15%)core::fmt::num::imp::fmt_u64 (19 samples, 0.15%)core::fmt::Formatter::pad_integral (2 samples, 0.02%)alloc::fmt::format (40 samples, 0.32%)[libc-2.28.so] (55 samples, 0.44%)futex_wait_queue_me (2 samples, 0.02%)schedule (2 samples, 0.02%)__schedule (2 samples, 0.02%)futex_wait (8 samples, 0.06%)futex_wait_setup (5 samples, 0.04%)get_futex_value_locked (3 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (103 samples, 0.83%)alloc::raw_vec::RawVec<T,A>::reserve (103 samples, 0.83%)alloc::raw_vec::RawVec<T,A>::try_reserve (103 samples, 0.83%)alloc::raw_vec::RawVec<T,A>::grow_amortized (103 samples, 0.83%)alloc::raw_vec::finish_grow (102 samples, 0.82%)<alloc::alloc::Global as core::alloc::Allocator>::grow (101 samples, 0.81%)alloc::alloc::Global::grow_impl (101 samples, 0.81%)alloc::alloc::realloc (101 samples, 0.81%)realloc (100 samples, 0.80%)[libc-2.28.so] (79 samples, 0.63%)entry_SYSCALL_64_after_hwframe (14 samples, 0.11%)do_syscall_64 (14 samples, 0.11%)__x64_sys_futex (14 samples, 0.11%)do_futex (14 samples, 0.11%)futex_wake (6 samples, 0.05%)wake_up_q (4 samples, 0.03%)try_to_wake_up (4 samples, 0.03%)alloc::vec::Vec<T,A>::push (111 samples, 0.89%)core::ptr::write (8 samples, 0.06%)opentelemetry::core::Key::string (5 samples, 0.04%)<&T as tracing_core::field::Value>::record (203 samples, 1.63%)tracing_core::field::Visit::record_u64 (157 samples, 1.26%)<tracing_opentelemetry::layer::SpanAttributeVisitor as tracing_core::field::Visit>::record_debug (157 samples, 1.26%)tracing_core::span::Record::record (204 samples, 1.64%)tracing_core::field::ValueSet::record (204 samples, 1.64%)<core::option::Option<T> as core::ops::try::Try>::into_result (4 samples, 0.03%)<core::option::Option<T> as core::ops::try::Try>::into_result (4 samples, 0.03%)sharded_slab::shard::Array<T,C>::get (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (17 samples, 0.14%)sharded_slab::shard::Shard<T,C>::with_slot (13 samples, 0.10%)sharded_slab::page::Shared<T,C>::with_slot (12 samples, 0.10%)sharded_slab::sync::inner::UnsafeCell<T>::with (12 samples, 0.10%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (12 samples, 0.10%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (10 samples, 0.08%)sharded_slab::page::slot::Slot<T,C>::get (10 samples, 0.08%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (32 samples, 0.26%)tracing_subscriber::registry::LookupSpan::span (32 samples, 0.26%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (28 samples, 0.22%)tracing_subscriber::registry::sharded::Registry::get (20 samples, 0.16%)tracing_subscriber::registry::sharded::id_to_idx (3 samples, 0.02%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (6 samples, 0.05%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (5 samples, 0.04%)std::sync::rwlock::RwLock<T>::write (4 samples, 0.03%)std::sys_common::rwlock::RWLock::write (4 samples, 0.03%)std::sys::unix::rwlock::RWLock::write (4 samples, 0.03%)__GI___pthread_rwlock_wrlock (4 samples, 0.03%)core::option::Option<T>::and_then (3 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut::_{{closure}} (2 samples, 0.02%)<dyn core::any::Any>::downcast_mut (2 samples, 0.02%)<dyn core::any::Any>::is (2 samples, 0.02%)<T as core::any::Any>::type_id (2 samples, 0.02%)<hashbrown::raw::RawIterHash<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_record (293 samples, 2.35%)<..tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (9 samples, 0.07%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (9 samples, 0.07%)std::collections::hash::map::HashMap<K,V,S>::get_mut (6 samples, 0.05%)hashbrown::map::HashMap<K,V,S>::get_mut (6 samples, 0.05%)hashbrown::raw::RawTable<T>::find (6 samples, 0.05%)hashbrown::raw::RawTable<T>::iter_hash (2 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (2 samples, 0.02%)tracing::span::Inner::record (294 samples, 2.36%)t..tracing_core::dispatcher::Dispatch::record (294 samples, 2.36%)t..<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::record (294 samples, 2.36%)<..tracing::span::Span::record_all (299 samples, 2.40%)tr..tracing_core::span::Record::new (2 samples, 0.02%)tracing::span::Span::record (335 samples, 2.69%)tr..tracing_core::metadata::Metadata::fields (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,879 samples, 23.08%)<core::future::from_generator::GenFut..fred::utils::request_response::_{{closure}} (2,879 samples, 23.08%)fred::utils::request_response::_{{clo..tracing_futures::Instrument::instrument (12 samples, 0.10%)[libc-2.28.so] (9 samples, 0.07%)[libc-2.28.so] (4 samples, 0.03%)fred::protocol::utils::frame_to_single_result (5 samples, 0.04%)core::ptr::drop_in_place<redis_protocol::types::Frame> (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,915 samples, 23.37%)<core::future::from_generator::GenFut..fred::commands::one_arg_value_cmd::_{{closure}} (2,912 samples, 23.35%)fred::commands::one_arg_value_cmd::_{..fred::utils::request_response (9 samples, 0.07%)core::future::from_generator (9 samples, 0.07%)[libc-2.28.so] (9 samples, 0.07%)[libc-2.28.so] (24 samples, 0.19%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,952 samples, 23.67%)<core::future::from_generator::GenFutu..fred::commands::keys::incr::_{{closure}} (2,952 samples, 23.67%)fred::commands::keys::incr::_{{closure..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,955 samples, 23.69%)<core::future::from_generator::GenFutu..fred::client::RedisClient::incr::_{{closure}} (2,955 samples, 23.69%)fred::client::RedisClient::incr::_{{cl..core::ptr::drop_in_place<fred::types::RedisValue> (4 samples, 0.03%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (3,430 samples, 27.50%)<core::future::from_generator::GenFuture<T> ..pipeline_test::spawn_client_task::_{{closure}} (2,998 samples, 24.04%)pipeline_test::spawn_client_task::_{{c..pipeline_test::utils::incr_atomic (27 samples, 0.22%)core::num::<impl usize>::saturating_add (25 samples, 0.20%)fred::client::RedisClientInner::log_client_name_fn (2 samples, 0.02%)fred::multiplexer::responses::check_command_resp_tx (7 samples, 0.06%)fred::protocol::types::RedisCommand::take_resp_tx (7 samples, 0.06%)fred::utils::take_locked (7 samples, 0.06%)lock_api::rwlock::RwLock<R,T>::write (7 samples, 0.06%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (7 samples, 0.06%)[libc-2.28.so] (8 samples, 0.06%)alloc::sync::Arc<T>::drop_slow (10 samples, 0.08%)core::mem::drop (10 samples, 0.08%)core::ptr::drop_in_place<alloc::sync::Weak<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>>> (10 samples, 0.08%)<alloc::sync::Weak<T> as core::ops::drop::Drop>::drop (10 samples, 0.08%)core::ptr::drop_in_place<alloc::sync::Arc<lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>>> (28 samples, 0.22%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (28 samples, 0.22%)cfree (3 samples, 0.02%)[libc-2.28.so] (17 samples, 0.14%)cfree (18 samples, 0.14%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (52 samples, 0.42%)core::ptr::drop_in_place<[fred::types::RedisValue]> (52 samples, 0.42%)core::ptr::drop_in_place<fred::types::RedisValue> (17 samples, 0.14%)[libc-2.28.so] (8 samples, 0.06%)core::ptr::drop_in_place<alloc::vec::Vec<fred::types::RedisValue>> (63 samples, 0.51%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<fred::types::RedisValue>> (11 samples, 0.09%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (11 samples, 0.09%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (11 samples, 0.09%)alloc::alloc::dealloc (11 samples, 0.09%)cfree (3 samples, 0.02%)core::ptr::drop_in_place<fred::protocol::types::RedisCommandKind> (5 samples, 0.04%)<std::time::Instant as core::ops::arith::Sub>::sub (7 samples, 0.06%)std::time::Instant::duration_since (6 samples, 0.05%)std::sys::unix::time::inner::Instant::checked_sub_instant (6 samples, 0.05%)std::sys::unix::time::Timespec::sub_timespec (5 samples, 0.04%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (6 samples, 0.05%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (6 samples, 0.05%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (6 samples, 0.05%)std::sys_common::rwlock::RWLock::write_unlock (6 samples, 0.05%)std::sys::unix::rwlock::RWLock::write_unlock (6 samples, 0.05%)std::sys::unix::rwlock::RWLock::raw_unlock (6 samples, 0.05%)__GI___pthread_rwlock_unlock (6 samples, 0.05%)std::time::Instant::now (8 samples, 0.06%)std::sys::unix::time::inner::Instant::now (8 samples, 0.06%)std::sys::unix::time::inner::now (8 samples, 0.06%)__clock_gettime (7 samples, 0.06%)__vdso_clock_gettime (6 samples, 0.05%)[[vdso]] (5 samples, 0.04%)<core::option::Option<T> as core::ops::try::Try>::into_result (5 samples, 0.04%)tracing_subscriber::layer::Context<S>::span (9 samples, 0.07%)tracing_subscriber::registry::LookupSpan::span (9 samples, 0.07%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (8 samples, 0.06%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (4 samples, 0.03%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (4 samples, 0.03%)std::sync::rwlock::RwLock<T>::write (4 samples, 0.03%)std::sys_common::rwlock::RWLock::write (3 samples, 0.02%)std::sys::unix::rwlock::RWLock::write (3 samples, 0.02%)__GI___pthread_rwlock_wrlock (3 samples, 0.02%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_exit (39 samples, 0.31%)tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (3 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (2 samples, 0.02%)std::collections::hash::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::raw::RawTable<T>::find (2 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (2 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (2 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (2 samples, 0.02%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (12 samples, 0.10%)tracing_subscriber::registry::sharded::Registry::get (6 samples, 0.05%)sharded_slab::pool::Pool<T,C>::get (6 samples, 0.05%)sharded_slab::shard::Shard<T,C>::with_slot (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (3 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::option::Option<T>::map (2 samples, 0.02%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close::_{{closure}} (2 samples, 0.02%)tracing_subscriber::registry::sharded::Registry::start_close (2 samples, 0.02%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::exit::_{{closure}} (16 samples, 0.13%)tracing_core::dispatcher::Dispatch::try_close (16 samples, 0.13%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::try_close (16 samples, 0.13%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (15 samples, 0.12%)tracing_core::dispatcher::get_default (20 samples, 0.16%)std::thread::local::LocalKey<T>::try_with (20 samples, 0.16%)tracing_core::dispatcher::get_default::_{{closure}} (20 samples, 0.16%)tracing_core::dispatcher::Entered::current (3 samples, 0.02%)tracing_core::dispatcher::Dispatch::is (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Entered> (63 samples, 0.51%)<tracing::span::Entered as core::ops::drop::Drop>::drop (63 samples, 0.51%)tracing::span::Span::do_exit (63 samples, 0.51%)tracing_core::dispatcher::Dispatch::exit (63 samples, 0.51%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::exit (63 samples, 0.51%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::exit (24 samples, 0.19%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::exit (24 samples, 0.19%)<sharded_slab::pool::Ref<T,C> as core::ops::deref::Deref>::deref (2 samples, 0.02%)sharded_slab::pool::Ref<T,C>::value (2 samples, 0.02%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (8 samples, 0.06%)tracing_subscriber::registry::sharded::Registry::get (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (2 samples, 0.02%)core::ptr::drop_in_place<tracing_core::dispatcher::Dispatch> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync>> (2 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)tracing_core::dispatcher::Dispatch::try_close (3 samples, 0.02%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::try_close (3 samples, 0.02%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (3 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<tracing_subscriber::registry::sharded::CloseGuard>> (3 samples, 0.02%)hashbrown::raw::Bucket<T>::drop (3 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (3 samples, 0.02%)core::ptr::drop_in_place<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>)> (3 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>> (3 samples, 0.02%)alloc::alloc::box_free (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (3 samples, 0.02%)alloc::alloc::dealloc (3 samples, 0.02%)[libc-2.28.so] (3 samples, 0.02%)sharded_slab::shard::Shard<T,C>::mark_clear_local (11 samples, 0.09%)sharded_slab::page::Shared<T,C>::mark_clear (11 samples, 0.09%)sharded_slab::sync::inner::UnsafeCell<T>::with (11 samples, 0.09%)sharded_slab::page::Shared<T,C>::mark_clear::_{{closure}} (11 samples, 0.09%)sharded_slab::page::slot::Slot<T,C>::try_clear_storage (11 samples, 0.09%)sharded_slab::page::slot::Slot<T,C>::clear_storage (11 samples, 0.09%)sharded_slab::page::slot::Slot<T,C>::release_with (11 samples, 0.09%)sharded_slab::sync::inner::UnsafeCell<T>::with_mut (10 samples, 0.08%)sharded_slab::page::slot::Slot<T,C>::release_with::_{{closure}} (10 samples, 0.08%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}} (10 samples, 0.08%)core::option::Option<T>::map (10 samples, 0.08%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}}::_{{closure}} (10 samples, 0.08%)<tracing_subscriber::registry::sharded::DataInner as sharded_slab::clear::Clear>::clear (10 samples, 0.08%)tracing_subscriber::registry::extensions::ExtensionsInner::clear (4 samples, 0.03%)std::collections::hash::map::HashMap<K,V,S>::clear (4 samples, 0.03%)hashbrown::map::HashMap<K,V,S>::clear (4 samples, 0.03%)hashbrown::raw::RawTable<T>::clear (4 samples, 0.03%)core::option::Option<T>::as_ref (2 samples, 0.02%)<sharded_slab::page::stack::TransferStack<C> as sharded_slab::page::FreeList<C>>::push (13 samples, 0.10%)sharded_slab::page::stack::TransferStack<C>::push (13 samples, 0.10%)core::ptr::drop_in_place<tracing_core::dispatcher::Dispatch> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync>> (2 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)tracing_core::dispatcher::Dispatch::try_close (2 samples, 0.02%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::try_close (2 samples, 0.02%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (2 samples, 0.02%)tracing_core::dispatcher::get_default (6 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (6 samples, 0.05%)tracing_core::dispatcher::get_default::_{{closure}} (5 samples, 0.04%)core::ops::function::FnMut::call_mut (5 samples, 0.04%)<tracing_core::dispatcher::Dispatch as core::clone::Clone>::clone (5 samples, 0.04%)<alloc::sync::Arc<T> as core::clone::Clone>::clone (5 samples, 0.04%)[libc-2.28.so] (2 samples, 0.02%)alloc::alloc::box_free (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (4 samples, 0.03%)alloc::alloc::dealloc (4 samples, 0.03%)cfree (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::clear_storage (34 samples, 0.27%)sharded_slab::page::slot::Slot<T,C>::release_with (34 samples, 0.27%)sharded_slab::sync::inner::UnsafeCell<T>::with_mut (20 samples, 0.16%)sharded_slab::page::slot::Slot<T,C>::release_with::_{{closure}} (20 samples, 0.16%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}} (20 samples, 0.16%)core::option::Option<T>::map (20 samples, 0.16%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}}::_{{closure}} (20 samples, 0.16%)<tracing_subscriber::registry::sharded::DataInner as sharded_slab::clear::Clear>::clear (20 samples, 0.16%)tracing_subscriber::registry::extensions::ExtensionsInner::clear (6 samples, 0.05%)std::collections::hash::map::HashMap<K,V,S>::clear (6 samples, 0.05%)hashbrown::map::HashMap<K,V,S>::clear (6 samples, 0.05%)hashbrown::raw::RawTable<T>::clear (6 samples, 0.05%)hashbrown::raw::Bucket<T>::drop (5 samples, 0.04%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (5 samples, 0.04%)core::ptr::drop_in_place<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>)> (5 samples, 0.04%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::any::Any+core::marker::Send+core::marker::Sync>> (5 samples, 0.04%)core::option::Option<T>::map (51 samples, 0.41%)sharded_slab::pool::Pool<T,C>::clear::_{{closure}} (50 samples, 0.40%)sharded_slab::shard::Shard<T,C>::mark_clear_remote (39 samples, 0.31%)sharded_slab::page::Shared<T,C>::mark_clear (38 samples, 0.30%)sharded_slab::sync::inner::UnsafeCell<T>::with (38 samples, 0.30%)sharded_slab::page::Shared<T,C>::mark_clear::_{{closure}} (38 samples, 0.30%)sharded_slab::page::slot::Slot<T,C>::try_clear_storage (36 samples, 0.29%)sharded_slab::page::slot::Slot<T,C>::mark_release (2 samples, 0.02%)sharded_slab::cfg::CfgPrivate::unpack_tid (2 samples, 0.02%)sharded_slab::cfg::CfgPrivate::unpack (2 samples, 0.02%)sharded_slab::Pack::from_packed (2 samples, 0.02%)sharded_slab::shard::Array<T,C>::get (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<tracing_subscriber::registry::sharded::CloseGuard>> (59 samples, 0.47%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::CloseGuard> (57 samples, 0.46%)sharded_slab::pool::Pool<T,C>::clear (57 samples, 0.46%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (70 samples, 0.56%)core::ptr::drop_in_place<tracing::span::Span> (74 samples, 0.59%)core::ptr::drop_in_place<core::option::Option<tracing::span::Inner>> (3 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Inner> (3 samples, 0.02%)core::ptr::drop_in_place<tracing_core::dispatcher::Dispatch> (3 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync>> (3 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (3 samples, 0.02%)core::result::Result<T,E>::ok (2 samples, 0.02%)<std::time::Instant as core::ops::arith::Sub>::sub (9 samples, 0.07%)std::time::Instant::duration_since (9 samples, 0.07%)std::sys::unix::time::inner::Instant::checked_sub_instant (9 samples, 0.07%)std::sys::unix::time::Timespec::sub_timespec (7 samples, 0.06%)core::option::Option<T>::expect (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (4 samples, 0.03%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (4 samples, 0.03%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (4 samples, 0.03%)sharded_slab::page::slot::Guard<T,C>::release (4 samples, 0.03%)sharded_slab::page::slot::Slot<T,C>::release (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (17 samples, 0.14%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (17 samples, 0.14%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (17 samples, 0.14%)std::sys_common::rwlock::RWLock::write_unlock (16 samples, 0.13%)std::sys::unix::rwlock::RWLock::write_unlock (16 samples, 0.13%)std::sys::unix::rwlock::RWLock::raw_unlock (16 samples, 0.13%)__GI___pthread_rwlock_unlock (16 samples, 0.13%)std::time::Instant::now (18 samples, 0.14%)std::sys::unix::time::inner::Instant::now (16 samples, 0.13%)std::sys::unix::time::inner::now (16 samples, 0.13%)__clock_gettime (16 samples, 0.13%)__vdso_clock_gettime (14 samples, 0.11%)[[vdso]] (11 samples, 0.09%)<core::option::Option<T> as core::ops::try::Try>::into_result (3 samples, 0.02%)core::option::Option<T>::ok_or (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (2 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (10 samples, 0.08%)tracing_subscriber::registry::LookupSpan::span (10 samples, 0.08%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (7 samples, 0.06%)tracing_subscriber::registry::sharded::Registry::get (4 samples, 0.03%)sharded_slab::pool::Pool<T,C>::get (4 samples, 0.03%)sharded_slab::shard::Shard<T,C>::with_slot (4 samples, 0.03%)sharded_slab::page::Shared<T,C>::with_slot (4 samples, 0.03%)sharded_slab::sync::inner::UnsafeCell<T>::with (4 samples, 0.03%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (4 samples, 0.03%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (4 samples, 0.03%)sharded_slab::page::slot::Slot<T,C>::get (4 samples, 0.03%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (18 samples, 0.14%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (18 samples, 0.14%)std::sync::rwlock::RwLock<T>::write (18 samples, 0.14%)std::sys_common::rwlock::RWLock::write (18 samples, 0.14%)std::sys::unix::rwlock::RWLock::write (18 samples, 0.14%)__GI___pthread_rwlock_wrlock (18 samples, 0.14%)core::option::Option<T>::and_then (2 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut::_{{closure}} (2 samples, 0.02%)<dyn core::any::Any>::downcast_mut (2 samples, 0.02%)<dyn core::any::Any>::is (2 samples, 0.02%)<T as core::any::Any>::type_id (2 samples, 0.02%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_enter (96 samples, 0.77%)tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (4 samples, 0.03%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (4 samples, 0.03%)std::collections::hash::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::raw::RawTable<T>::find (2 samples, 0.02%)hashbrown::raw::RawTable<T>::iter_hash (2 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (2 samples, 0.02%)hashbrown::raw::sse2::Group::load (2 samples, 0.02%)core::core_arch::x86::sse2::_mm_loadu_si128 (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)core::option::Option<T>::unwrap_or_else (2 samples, 0.02%)core::option::Option<T>::as_ref (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (42 samples, 0.34%)sharded_slab::sync::inner::UnsafeCell<T>::with (42 samples, 0.34%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (42 samples, 0.34%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (39 samples, 0.31%)sharded_slab::page::slot::Slot<T,C>::get (39 samples, 0.31%)core::sync::atomic::AtomicUsize::load (17 samples, 0.14%)core::sync::atomic::atomic_load (17 samples, 0.14%)sharded_slab::pool::Pool<T,C>::get (44 samples, 0.35%)sharded_slab::shard::Shard<T,C>::with_slot (43 samples, 0.34%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::clone_span (57 samples, 0.46%)tracing_subscriber::registry::sharded::Registry::get (45 samples, 0.36%)thread_local::ThreadLocal<T>::get_inner (7 samples, 0.06%)core::ptr::mut_ptr::<impl *mut T>::is_null (3 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::guaranteed_eq (3 samples, 0.02%)thread_local::ThreadLocal<T>::get_or_default (8 samples, 0.06%)thread_local::ThreadLocal<T>::get_or (8 samples, 0.06%)thread_local::ThreadLocal<T>::get_or_try (8 samples, 0.06%)core::ptr::drop_in_place<fred::trace::enabled::CommandTraces> (304 samples, 2.44%)co..<fred::trace::enabled::CommandTraces as core::ops::drop::Drop>::drop (304 samples, 2.44%)<f..tracing::span::Span::enter (167 samples, 1.34%)tracing::span::Span::do_enter (167 samples, 1.34%)tracing_core::dispatcher::Dispatch::enter (166 samples, 1.33%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::enter (166 samples, 1.33%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::enter (69 samples, 0.55%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::enter (11 samples, 0.09%)tracing_subscriber::registry::stack::SpanStack::push (3 samples, 0.02%)alloc::vec::Vec<T,A>::push (3 samples, 0.02%)core::ptr::write (3 samples, 0.02%)fred::client::RedisClientInner::log_client_name_fn (2 samples, 0.02%)<log::Level as core::cmp::PartialOrd<log::LevelFilter>>::le (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>>> (3 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (3 samples, 0.02%)[libc-2.28.so] (11 samples, 0.09%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (22 samples, 0.18%)tokio::sync::oneshot::Sender<T>::send::_{{closure}} (22 samples, 0.18%)core::ptr::drop_in_place<core::option::Option<core::result::Result<redis_protocol::types::Frame,fred::error::RedisError>>> (11 samples, 0.09%)tokio::sync::oneshot::State::is_rx_task_set (2 samples, 0.02%)tokio::sync::oneshot::State::set_complete (8 samples, 0.06%)core::sync::atomic::AtomicUsize::fetch_or (8 samples, 0.06%)core::sync::atomic::atomic_or (8 samples, 0.06%)tokio::runtime::task::waker::wake_by_ref (19 samples, 0.15%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (18 samples, 0.14%)tokio::runtime::task::state::State::transition_to_notified (18 samples, 0.14%)core::sync::atomic::AtomicUsize::fetch_or (18 samples, 0.14%)core::sync::atomic::atomic_or (18 samples, 0.14%)fred::multiplexer::responses::respond_to_caller (470 samples, 3.77%)fred..tokio::sync::oneshot::Sender<T>::send (64 samples, 0.51%)tokio::sync::oneshot::Inner<T>::complete (37 samples, 0.30%)tokio::sync::oneshot::Task::with_task (27 samples, 0.22%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (27 samples, 0.22%)tokio::sync::oneshot::Task::with_task::_{{closure}} (27 samples, 0.22%)core::ops::function::FnOnce::call_once (27 samples, 0.22%)core::task::wake::Waker::wake_by_ref (27 samples, 0.22%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (7 samples, 0.06%)tokio::runtime::thread_pool::worker::Shared::schedule (7 samples, 0.06%)tokio::macros::scoped_tls::ScopedKey<T>::with (7 samples, 0.06%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (3 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,fred::metrics::LatencyStats>> (6 samples, 0.05%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (6 samples, 0.05%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (6 samples, 0.05%)fred::metrics::LatencyStats::sample (14 samples, 0.11%)lock_api::rwlock::RwLock<R,T>::write (26 samples, 0.21%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (26 samples, 0.21%)core::result::Result<T,E>::ok (2 samples, 0.02%)std::time::Instant::duration_since (8 samples, 0.06%)std::sys::unix::time::inner::Instant::checked_sub_instant (8 samples, 0.06%)std::sys::unix::time::Timespec::sub_timespec (6 samples, 0.05%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (572 samples, 4.59%)<futu..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (572 samples, 4.59%)<futu..<F as futures_core::future::TryFuture>::try_poll (572 samples, 4.59%)<F as..<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (572 samples, 4.59%)<futu..<F as futures_core::future::TryFuture>::try_poll (572 samples, 4.59%)<F as..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (572 samples, 4.59%)<core..fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (572 samples, 4.59%)fred:..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (572 samples, 4.59%)<core..fred::multiplexer::responses::process_centralized_frame::_{{closure}} (572 samples, 4.59%)fred:..fred::multiplexer::responses::process_response (572 samples, 4.59%)fred:..fred::multiplexer::responses::sample_latency (89 samples, 0.71%)std::time::Instant::now (33 samples, 0.26%)std::sys::unix::time::inner::Instant::now (31 samples, 0.25%)std::sys::unix::time::inner::now (31 samples, 0.25%)__clock_gettime (25 samples, 0.20%)__vdso_clock_gettime (22 samples, 0.18%)[[vdso]] (15 samples, 0.12%)core::ptr::drop_in_place<futures_util::lock::bilock::BiLockGuard<tokio_util::codec::framed::Framed<tokio::net::tcp::stream::TcpStream,fred::protocol::codec::RedisCodec>>> (4 samples, 0.03%)<futures_util::lock::bilock::BiLockGuard<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)futures_util::lock::bilock::BiLock<T>::unlock (4 samples, 0.03%)core::task::wake::Waker::wake (3 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (3 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (3 samples, 0.02%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (3 samples, 0.02%)tokio::runtime::thread_pool::worker::Shared::schedule (3 samples, 0.02%)tokio::macros::scoped_tls::ScopedKey<T>::with (3 samples, 0.02%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (3 samples, 0.02%)tokio::runtime::thread_pool::worker::Shared::schedule_local (3 samples, 0.02%)tokio::runtime::thread_pool::worker::Shared::notify_parked (2 samples, 0.02%)tokio::runtime::thread_pool::idle::Idle::worker_to_notify (2 samples, 0.02%)tokio::runtime::thread_pool::idle::Idle::notify_should_wakeup (2 samples, 0.02%)<core::task::wake::Waker as core::clone::Clone>::clone (2 samples, 0.02%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (12 samples, 0.10%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (12 samples, 0.10%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (12 samples, 0.10%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (12 samples, 0.10%)futures_util::future::future::FutureExt::poll_unpin (12 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (12 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (12 samples, 0.10%)<F as futures_core::future::TryFuture>::try_poll (12 samples, 0.10%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (12 samples, 0.10%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (12 samples, 0.10%)<F as futures_core::future::TryFuture>::try_poll (12 samples, 0.10%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (12 samples, 0.10%)<S as futures_core::stream::TryStream>::try_poll_next (12 samples, 0.10%)<futures_util::stream::stream::split::SplitStream<S> as futures_core::stream::Stream>::poll_next (12 samples, 0.10%)futures_util::lock::bilock::BiLock<T>::poll_lock (8 samples, 0.06%)core::option::Option<T>::unwrap_or_else (3 samples, 0.02%)futures_util::lock::bilock::BiLock<T>::poll_lock::_{{closure}} (3 samples, 0.02%)[libc-2.28.so] (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)tokio::loom::std::parking_lot::Mutex<T>::lock (3 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (3 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (3 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (4 samples, 0.03%)tokio::sync::batch_semaphore::Semaphore::poll_acquire::_{{closure}} (4 samples, 0.03%)<core::task::wake::Waker as core::clone::Clone>::clone (4 samples, 0.03%)tokio::runtime::task::waker::clone_waker (4 samples, 0.03%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (2 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (26 samples, 0.21%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (24 samples, 0.19%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (30 samples, 0.24%)tokio::sync::rwlock::RwLock<T>::read::_{{closure}} (30 samples, 0.24%)core::option::Option<T>::and_then (5 samples, 0.04%)fred::multiplexer::responses::last_centralized_command_ends_transaction::_{{closure}}::_{{closure}} (5 samples, 0.04%)fred::protocol::types::RedisCommandKind::is_exec (5 samples, 0.04%)core::array::_<impl core::default::Default for [T: _]>::default (2 samples, 0.02%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (8 samples, 0.06%)core::ops::function::FnMut::call_mut (8 samples, 0.06%)core::task::wake::Waker::wake (8 samples, 0.06%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (8 samples, 0.06%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (7 samples, 0.06%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (6 samples, 0.05%)tokio::runtime::thread_pool::worker::Shared::schedule (6 samples, 0.05%)tokio::macros::scoped_tls::ScopedKey<T>::with (6 samples, 0.05%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (5 samples, 0.04%)tokio::runtime::thread_pool::worker::Shared::schedule_local (2 samples, 0.02%)core::iter::traits::iterator::Iterator::for_each (9 samples, 0.07%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (9 samples, 0.07%)core::iter::traits::iterator::Iterator::fold (9 samples, 0.07%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (9 samples, 0.07%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 8]> (4 samples, 0.03%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (4 samples, 0.03%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (20 samples, 0.16%)fred::multiplexer::responses::last_centralized_command_ends_transaction::_{{closure}} (58 samples, 0.47%)core::ptr::drop_in_place<tokio::sync::rwlock::read_guard::RwLockReadGuard<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>> (23 samples, 0.18%)<tokio::sync::rwlock::read_guard::RwLockReadGuard<T> as core::ops::drop::Drop>::drop (23 samples, 0.18%)tokio::sync::batch_semaphore::Semaphore::release (3 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (9 samples, 0.07%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (7 samples, 0.06%)tokio::sync::batch_semaphore::Waiter::assign_permits (2 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (75 samples, 0.60%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (16 samples, 0.13%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (3 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (7 samples, 0.06%)[libc-2.28.so] (7 samples, 0.06%)[libc-2.28.so] (7 samples, 0.06%)alloc::collections::vec_deque::VecDeque<T>::buffer_read (21 samples, 0.17%)core::ptr::read (21 samples, 0.17%)alloc::collections::vec_deque::VecDeque<T>::pop_front (23 samples, 0.18%)core::array::_<impl core::default::Default for [T: _]>::default (4 samples, 0.03%)core::iter::traits::iterator::Iterator::for_each (4 samples, 0.03%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (4 samples, 0.03%)core::iter::traits::iterator::Iterator::fold (4 samples, 0.03%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (4 samples, 0.03%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (4 samples, 0.03%)core::ops::function::FnMut::call_mut (4 samples, 0.03%)core::task::wake::Waker::wake (4 samples, 0.03%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (4 samples, 0.03%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (3 samples, 0.02%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (3 samples, 0.02%)tokio::runtime::thread_pool::worker::Shared::schedule (3 samples, 0.02%)tokio::macros::scoped_tls::ScopedKey<T>::with (3 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (18 samples, 0.14%)tokio::sync::batch_semaphore::Waiter::assign_permits (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>> (20 samples, 0.16%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (20 samples, 0.16%)tokio::sync::batch_semaphore::Semaphore::release (2 samples, 0.02%)fred::multiplexer::responses::check_pubsub_message (16 samples, 0.13%)redis_protocol::types::Frame::is_pubsub_message (6 samples, 0.05%)fred::multiplexer::responses::check_redirection_error (6 samples, 0.05%)redis_protocol::types::Frame::is_moved_or_ask_error (3 samples, 0.02%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (200 samples, 1.60%)<F as futures_core::future::TryFuture>::try_poll (200 samples, 1.60%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (200 samples, 1.60%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (200 samples, 1.60%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (200 samples, 1.60%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (200 samples, 1.60%)<F as futures_core::future::TryFuture>::try_poll (200 samples, 1.60%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (200 samples, 1.60%)<F as futures_core::future::TryFuture>::try_poll (200 samples, 1.60%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (200 samples, 1.60%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (200 samples, 1.60%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (200 samples, 1.60%)fred::multiplexer::responses::process_centralized_frame::_{{closure}} (188 samples, 1.51%)fred::multiplexer::responses::process_response (6 samples, 0.05%)[libc-2.28.so] (6 samples, 0.05%)[libc-2.28.so] (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (6 samples, 0.05%)fred::multiplexer::commands::check_deferred_multi_command::_{{closure}} (6 samples, 0.05%)fred::utils::should_send_multi_command (2 samples, 0.02%)fred::utils::is_clustered (2 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,fred::types::RedisConfig>> (2 samples, 0.02%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (2 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (4 samples, 0.03%)[libc-2.28.so] (4 samples, 0.03%)core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::commands::check_deferred_multi_command::{{closure}}>> (3 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,fred::types::RedisConfig>> (2 samples, 0.02%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (46 samples, 0.37%)fred::multiplexer::commands::check_command_structure::_{{closure}} (46 samples, 0.37%)fred::multiplexer::commands::check_transaction_hash_slot (25 samples, 0.20%)fred::utils::is_clustered (21 samples, 0.17%)lock_api::rwlock::RwLock<R,T>::read (19 samples, 0.15%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (19 samples, 0.15%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (5 samples, 0.04%)fred::multiplexer::commands::check_command_structure_t::_{{closure}} (51 samples, 0.41%)[libc-2.28.so] (2 samples, 0.02%)[libc-2.28.so] (6 samples, 0.05%)[libc-2.28.so] (5 samples, 0.04%)tokio::coop::poll_proceed (9 samples, 0.07%)std::thread::local::LocalKey<T>::with (9 samples, 0.07%)std::thread::local::LocalKey<T>::try_with (9 samples, 0.07%)tokio::coop::CURRENT::__getit (8 samples, 0.06%)std::thread::local::fast::Key<T>::get (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (5 samples, 0.04%)core::sync::atomic::atomic_load (5 samples, 0.04%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (13 samples, 0.10%)tokio::sync::batch_semaphore::Semaphore::poll_acquire::_{{closure}} (13 samples, 0.10%)<core::task::wake::Waker as core::clone::Clone>::clone (11 samples, 0.09%)tokio::runtime::task::waker::clone_waker (10 samples, 0.08%)tokio::runtime::task::state::State::ref_inc (9 samples, 0.07%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (2 samples, 0.02%)tokio::sync::batch_semaphore::Waiter::assign_permits (8 samples, 0.06%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (50 samples, 0.40%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (38 samples, 0.30%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (3 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (3 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (70 samples, 0.56%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (68 samples, 0.55%)tokio::sync::batch_semaphore::Semaphore::acquire (4 samples, 0.03%)[libc-2.28.so] (23 samples, 0.18%)tokio::runtime::task::state::State::transition_to_notified (10 samples, 0.08%)core::sync::atomic::AtomicUsize::fetch_or (10 samples, 0.08%)core::sync::atomic::atomic_or (10 samples, 0.08%)std::thread::local::LocalKey<T>::with (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::thread_pool::worker::CURRENT::FOO::__getit (2 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (23 samples, 0.18%)tokio::runtime::task::harness::Harness<T,S>::wake_by_ref (20 samples, 0.16%)tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (10 samples, 0.08%)tokio::runtime::thread_pool::worker::Shared::schedule (9 samples, 0.07%)tokio::macros::scoped_tls::ScopedKey<T>::with (9 samples, 0.07%)tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (6 samples, 0.05%)tokio::runtime::thread_pool::worker::Shared::schedule_local (4 samples, 0.03%)core::option::Option<T>::take (4 samples, 0.03%)core::mem::take (4 samples, 0.03%)core::mem::replace (4 samples, 0.03%)core::mem::swap (4 samples, 0.03%)core::ptr::swap_nonoverlapping_one (4 samples, 0.03%)core::intrinsics::copy_nonoverlapping (4 samples, 0.03%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (24 samples, 0.19%)core::ops::function::FnMut::call_mut (24 samples, 0.19%)core::task::wake::Waker::wake (24 samples, 0.19%)core::iter::traits::iterator::Iterator::for_each (25 samples, 0.20%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (25 samples, 0.20%)core::iter::traits::iterator::Iterator::fold (25 samples, 0.20%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (25 samples, 0.20%)core::mem::drop (2 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (2 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (2 samples, 0.02%)tokio::sync::batch_semaphore::Waiter::assign_permits (12 samples, 0.10%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (45 samples, 0.36%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::collections::vec_deque::VecDeque<fred::multiplexer::SentCommand>>> (50 samples, 0.40%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (50 samples, 0.40%)tokio::sync::batch_semaphore::Semaphore::release (4 samples, 0.03%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.02%)core::array::_<impl core::default::Default for [T: _]>::default (2 samples, 0.02%)core::iter::traits::iterator::Iterator::for_each (2 samples, 0.02%)<core::iter::adapters::filter_map::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::fold (2 samples, 0.02%)core::iter::traits::iterator::Iterator::fold (2 samples, 0.02%)core::iter::adapters::filter_map::filter_map_fold::_{{closure}} (2 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (13 samples, 0.10%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 8]> (3 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (3 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<core::option::Option<fred::protocol::connection::RedisSink>>> (21 samples, 0.17%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (21 samples, 0.17%)tokio::sync::batch_semaphore::Semaphore::release (8 samples, 0.06%)tokio::loom::std::parking_lot::Mutex<T>::lock (7 samples, 0.06%)lock_api::mutex::Mutex<R,T>::lock (7 samples, 0.06%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (7 samples, 0.06%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (204 samples, 1.64%)fred::multiplexer::utils::write_centralized_command::_{{closure}} (196 samples, 1.57%)fred::multiplexer::utils::should_apply_backpressure (5 samples, 0.04%)[libc-2.28.so] (14 samples, 0.11%)core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::utils::write_centralized_command::{{closure}}>> (2 samples, 0.02%)core::ptr::drop_in_place<fred::multiplexer::utils::write_centralized_command::{{closure}}> (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (245 samples, 1.96%)<..fred::multiplexer::Multiplexer::write::_{{closure}} (237 samples, 1.90%)f..fred::multiplexer::utils::max_attempts_reached (7 samples, 0.06%)fred::protocol::types::RedisCommand::max_attempts_exceeded (4 samples, 0.03%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (287 samples, 2.30%)<..fred::multiplexer::commands::write_command::_{{closure}} (281 samples, 2.25%)f..[libc-2.28.so] (14 samples, 0.11%)[libc-2.28.so] (14 samples, 0.11%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (359 samples, 2.88%)<c..fred::multiplexer::commands::write_command_t::_{{closure}} (308 samples, 2.47%)fr..core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::commands::write_command::{{closure}}>> (3 samples, 0.02%)core::ptr::drop_in_place<fred::multiplexer::commands::write_command::{{closure}}> (3 samples, 0.02%)[libc-2.28.so] (9 samples, 0.07%)core::option::Option<T>::take (2 samples, 0.02%)core::mem::take (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::mem::swap (2 samples, 0.02%)core::ptr::swap_nonoverlapping_one (2 samples, 0.02%)core::ptr::swap_nonoverlapping (2 samples, 0.02%)core::ptr::swap_nonoverlapping_bytes (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)<fred::protocol::types::RedisCommandKind as core::cmp::PartialEq>::eq (2 samples, 0.02%)fred::multiplexer::commands::is_async_flush (2 samples, 0.02%)<fred::protocol::types::RedisCommandKind as core::cmp::PartialEq>::eq (2 samples, 0.02%)fred::multiplexer::commands::should_disable_pipeline (19 samples, 0.15%)fred::utils::is_locked_some (2 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,core::option::Option<fred::client::MultiPolicy>>> (2 samples, 0.02%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (449 samples, 3.60%)<cor..fred::multiplexer::commands::handle_command::_{{closure}} (444 samples, 3.56%)fred..fred::utils::decr_atomic (12 samples, 0.10%)core::sync::atomic::AtomicUsize::fetch_sub (11 samples, 0.09%)core::sync::atomic::atomic_sub (11 samples, 0.09%)[libc-2.28.so] (6 samples, 0.05%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (464 samples, 3.72%)<cor..fred::multiplexer::commands::handle_command_t::_{{closure}} (464 samples, 3.72%)fred..[libc-2.28.so] (5 samples, 0.04%)fred::multiplexer::commands::init::_{{closure}}::_{{closure}}::_{{closure}} (480 samples, 3.85%)fred..core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::commands::handle_command_t::{{closure}}>> (5 samples, 0.04%)[libc-2.28.so] (27 samples, 0.22%)__rust_realloc (2 samples, 0.02%)[libc-2.28.so] (95 samples, 0.76%)futex_wait (3 samples, 0.02%)futex_wait_queue_me (3 samples, 0.02%)schedule (3 samples, 0.02%)__schedule (3 samples, 0.02%)dequeue_task_fair (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::grow_amortized (150 samples, 1.20%)alloc::raw_vec::finish_grow (147 samples, 1.18%)<alloc::alloc::Global as core::alloc::Allocator>::grow (146 samples, 1.17%)alloc::alloc::Global::grow_impl (146 samples, 1.17%)alloc::alloc::realloc (146 samples, 1.17%)realloc (144 samples, 1.15%)[libc-2.28.so] (123 samples, 0.99%)entry_SYSCALL_64_after_hwframe (11 samples, 0.09%)do_syscall_64 (9 samples, 0.07%)__x64_sys_futex (9 samples, 0.07%)do_futex (9 samples, 0.07%)futex_wake (6 samples, 0.05%)wake_up_q (2 samples, 0.02%)try_to_wake_up (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (155 samples, 1.24%)alloc::raw_vec::RawVec<T,A>::reserve (155 samples, 1.24%)alloc::raw_vec::RawVec<T,A>::try_reserve (154 samples, 1.23%)alloc::vec::Vec<T,A>::push (165 samples, 1.32%)core::ptr::write (9 samples, 0.07%)alloc::sync::Arc<T>::drop_slow (3 samples, 0.02%)core::ptr::drop_in_place<opentelemetry::sdk::trace::span::SpanInner> (2 samples, 0.02%)core::ptr::drop_in_place<opentelemetry::sdk::trace::span::Span> (11 samples, 0.09%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::span::SpanInner>> (11 samples, 0.09%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (11 samples, 0.09%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (4 samples, 0.03%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (4 samples, 0.03%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (4 samples, 0.03%)sharded_slab::page::slot::Guard<T,C>::release (4 samples, 0.03%)sharded_slab::page::slot::Slot<T,C>::release (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (9 samples, 0.07%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (9 samples, 0.07%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (9 samples, 0.07%)std::sys_common::rwlock::RWLock::write_unlock (9 samples, 0.07%)std::sys::unix::rwlock::RWLock::write_unlock (9 samples, 0.07%)std::sys::unix::rwlock::RWLock::raw_unlock (8 samples, 0.06%)__GI___pthread_rwlock_unlock (6 samples, 0.05%)opentelemetry::core::KeyValue::new (14 samples, 0.11%)<T as core::convert::Into<U>>::into (3 samples, 0.02%)<opentelemetry::core::Value as core::convert::From<i64>>::from (3 samples, 0.02%)opentelemetry::trace::tracer::SpanBuilder::start (3 samples, 0.02%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::build (2 samples, 0.02%)std::time::SystemTime::now (13 samples, 0.10%)std::sys::unix::time::inner::SystemTime::now (11 samples, 0.09%)std::sys::unix::time::inner::now (11 samples, 0.09%)__clock_gettime (11 samples, 0.09%)__vdso_clock_gettime (9 samples, 0.07%)[[vdso]] (8 samples, 0.06%)<core::option::Option<T> as core::ops::try::Try>::into_result (7 samples, 0.06%)sharded_slab::pool::Pool<T,C>::get (2 samples, 0.02%)sharded_slab::shard::Shard<T,C>::with_slot (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (2 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (2 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (14 samples, 0.11%)tracing_subscriber::registry::LookupSpan::span (14 samples, 0.11%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (13 samples, 0.10%)tracing_subscriber::registry::sharded::Registry::get (5 samples, 0.04%)tracing_subscriber::registry::sharded::id_to_idx (3 samples, 0.02%)tracing_core::span::Id::into_u64 (2 samples, 0.02%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (4 samples, 0.03%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (4 samples, 0.03%)std::sync::rwlock::RwLock<T>::write (3 samples, 0.02%)std::sys_common::rwlock::RWLock::write (3 samples, 0.02%)std::sys::unix::rwlock::RWLock::write (3 samples, 0.02%)__GI___pthread_rwlock_wrlock (3 samples, 0.02%)core::option::Option<T>::and_then (3 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut::_{{closure}} (3 samples, 0.02%)<dyn core::any::Any>::downcast_mut (3 samples, 0.02%)<dyn core::any::Any>::is (3 samples, 0.02%)<T as core::any::Any>::type_id (3 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (5 samples, 0.04%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (5 samples, 0.04%)std::collections::hash::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::map::HashMap<K,V,S>::get_mut (2 samples, 0.02%)hashbrown::raw::RawTable<T>::find (2 samples, 0.02%)[libc-2.28.so] (26 samples, 0.21%)[libc-2.28.so] (12 samples, 0.10%)[libc-2.28.so] (3 samples, 0.02%)entry_SYSCALL_64_after_hwframe (2 samples, 0.02%)do_syscall_64 (2 samples, 0.02%)__x64_sys_futex (2 samples, 0.02%)do_futex (2 samples, 0.02%)core::option::Option<T>::and_then (42 samples, 0.34%)tracing_subscriber::registry::extensions::ExtensionsInner::remove::_{{closure}} (42 samples, 0.34%)core::option::Option<T>::map (42 samples, 0.34%)tracing_subscriber::registry::extensions::ExtensionsInner::remove::_{{closure}}::_{{closure}} (42 samples, 0.34%)alloc::alloc::box_free (16 samples, 0.13%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (16 samples, 0.13%)alloc::alloc::dealloc (16 samples, 0.13%)cfree (4 samples, 0.03%)hashbrown::raw::RawTable<T>::find (4 samples, 0.03%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_close (320 samples, 2.57%)<t..tracing_subscriber::registry::extensions::ExtensionsMut::remove (48 samples, 0.38%)tracing_subscriber::registry::extensions::ExtensionsInner::remove (48 samples, 0.38%)std::collections::hash::map::HashMap<K,V,S>::remove (6 samples, 0.05%)hashbrown::map::HashMap<K,V,S>::remove (6 samples, 0.05%)hashbrown::map::HashMap<K,V,S>::remove_entry (6 samples, 0.05%)hashbrown::raw::RawTable<T>::remove (2 samples, 0.02%)hashbrown::raw::RawTable<T>::erase_no_drop (2 samples, 0.02%)hashbrown::raw::bitmask::BitMask::leading_zeros (2 samples, 0.02%)core::num::<impl u16>::leading_zeros (2 samples, 0.02%)std::thread::panicking (2 samples, 0.02%)std::panicking::panicking (2 samples, 0.02%)std::panicking::panic_count::is_zero (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (11 samples, 0.09%)sharded_slab::shard::Shard<T,C>::with_slot (11 samples, 0.09%)sharded_slab::page::Shared<T,C>::with_slot (9 samples, 0.07%)sharded_slab::sync::inner::UnsafeCell<T>::with (9 samples, 0.07%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (9 samples, 0.07%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (7 samples, 0.06%)sharded_slab::page::slot::Slot<T,C>::get (7 samples, 0.06%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)sharded_slab::shard::Shard<T,C>::mark_clear_local (17 samples, 0.14%)sharded_slab::page::Shared<T,C>::mark_clear (17 samples, 0.14%)sharded_slab::sync::inner::UnsafeCell<T>::with (17 samples, 0.14%)sharded_slab::page::Shared<T,C>::mark_clear::_{{closure}} (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::try_clear_storage (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::clear_storage (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::release_with (17 samples, 0.14%)sharded_slab::sync::inner::UnsafeCell<T>::with_mut (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::release_with::_{{closure}} (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}} (17 samples, 0.14%)core::option::Option<T>::map (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}}::_{{closure}} (17 samples, 0.14%)<tracing_subscriber::registry::sharded::DataInner as sharded_slab::clear::Clear>::clear (17 samples, 0.14%)tracing_core::dispatcher::Dispatch::try_close (17 samples, 0.14%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::try_close (17 samples, 0.14%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (17 samples, 0.14%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (17 samples, 0.14%)tracing_subscriber::registry::sharded::Registry::get (12 samples, 0.10%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (2 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (2 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (2 samples, 0.02%)std::thread::panicking (4 samples, 0.03%)std::panicking::panicking (4 samples, 0.03%)std::panicking::panic_count::is_zero (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)core::option::Option<T>::as_ref (2 samples, 0.02%)core::ptr::drop_in_place<fred::trace::enabled::CommandTraces> (369 samples, 2.96%)cor..<fred::trace::enabled::CommandTraces as core::ops::drop::Drop>::drop (369 samples, 2.96%)<fr..core::ptr::drop_in_place<tracing::span::Span> (369 samples, 2.96%)cor..<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (369 samples, 2.96%)<tr..core::ptr::drop_in_place<core::option::Option<tracing_subscriber::registry::sharded::CloseGuard>> (49 samples, 0.39%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::CloseGuard> (49 samples, 0.39%)sharded_slab::pool::Pool<T,C>::clear (49 samples, 0.39%)core::option::Option<T>::map (49 samples, 0.39%)sharded_slab::pool::Pool<T,C>::clear::_{{closure}} (49 samples, 0.39%)sharded_slab::shard::Shard<T,C>::mark_clear_remote (32 samples, 0.26%)sharded_slab::page::Shared<T,C>::mark_clear (32 samples, 0.26%)sharded_slab::sync::inner::UnsafeCell<T>::with (32 samples, 0.26%)sharded_slab::page::Shared<T,C>::mark_clear::_{{closure}} (32 samples, 0.26%)sharded_slab::page::slot::Slot<T,C>::try_clear_storage (32 samples, 0.26%)sharded_slab::page::slot::Slot<T,C>::clear_storage (32 samples, 0.26%)sharded_slab::page::slot::Slot<T,C>::release_with (32 samples, 0.26%)sharded_slab::sync::inner::UnsafeCell<T>::with_mut (32 samples, 0.26%)sharded_slab::page::slot::Slot<T,C>::release_with::_{{closure}} (32 samples, 0.26%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}} (32 samples, 0.26%)core::option::Option<T>::map (32 samples, 0.26%)sharded_slab::page::slot::Slot<T,C>::clear_storage::_{{closure}}::_{{closure}} (32 samples, 0.26%)<tracing_subscriber::registry::sharded::DataInner as sharded_slab::clear::Clear>::clear (32 samples, 0.26%)tracing_core::dispatcher::Dispatch::try_close (32 samples, 0.26%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::try_close (32 samples, 0.26%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (32 samples, 0.26%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (32 samples, 0.26%)tracing_subscriber::registry::sharded::Registry::get (24 samples, 0.19%)sharded_slab::pool::Pool<T,C>::get (24 samples, 0.19%)sharded_slab::shard::Shard<T,C>::with_slot (24 samples, 0.19%)sharded_slab::page::Shared<T,C>::with_slot (20 samples, 0.16%)sharded_slab::sync::inner::UnsafeCell<T>::with (19 samples, 0.15%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (19 samples, 0.15%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::get (17 samples, 0.14%)core::sync::atomic::AtomicUsize::load (11 samples, 0.09%)core::sync::atomic::atomic_load (11 samples, 0.09%)tokio::runtime::queue::Local<T>::push_back (3 samples, 0.02%)<tokio::runtime::park::Unparker as tokio::park::Unpark>::unpark (27 samples, 0.22%)tokio::runtime::park::Inner::unpark (24 samples, 0.19%)tokio::runtime::park::Inner::unpark_condvar (3 samples, 0.02%)tokio::loom::std::parking_lot::Mutex<T>::lock (3 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (3 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (3 samples, 0.02%)drop_futex_key_refs.isra.18 (2 samples, 0.02%)get_futex_key (4 samples, 0.03%)hash_futex (3 samples, 0.02%)mark_wake_futex (28 samples, 0.22%)wake_q_add (13 samples, 0.10%)_raw_spin_lock_irqsave (6 samples, 0.05%)llist_add_batch (3 samples, 0.02%)select_task_rq_fair (24 samples, 0.19%)update_cfs_rq_h_load (2 samples, 0.02%)account_entity_enqueue (2 samples, 0.02%)__update_load_avg_cfs_rq (2 samples, 0.02%)ttwu_do_activate (15 samples, 0.12%)enqueue_task_fair (15 samples, 0.12%)enqueue_entity (13 samples, 0.10%)update_load_avg (6 samples, 0.05%)__update_load_avg_se (2 samples, 0.02%)ttwu_do_wakeup (9 samples, 0.07%)check_preempt_curr (9 samples, 0.07%)entry_SYSCALL_64_after_hwframe (160 samples, 1.28%)do_syscall_64 (160 samples, 1.28%)__x64_sys_futex (157 samples, 1.26%)do_futex (156 samples, 1.25%)futex_wake (155 samples, 1.24%)wake_up_q (100 samples, 0.80%)try_to_wake_up (97 samples, 0.78%)update_rq_clock (2 samples, 0.02%)<parking_lot_core::thread_parker::imp::UnparkHandle as parking_lot_core::thread_parker::UnparkHandleT>::unpark (168 samples, 1.35%)syscall (167 samples, 1.34%)<std::time::Instant as core::cmp::PartialOrd>::gt (2 samples, 0.02%)<std::sys::unix::time::inner::Instant as core::cmp::PartialOrd>::partial_cmp (2 samples, 0.02%)parking_lot_core::parking_lot::FairTimeout::should_timeout (10 samples, 0.08%)std::time::Instant::now (8 samples, 0.06%)std::sys::unix::time::inner::Instant::now (7 samples, 0.06%)std::sys::unix::time::inner::now (7 samples, 0.06%)__clock_gettime (7 samples, 0.06%)__vdso_clock_gettime (7 samples, 0.06%)[[vdso]] (6 samples, 0.05%)parking_lot_core::parking_lot::lock_bucket_pair (13 samples, 0.10%)parking_lot_core::word_lock::WordLock::lock (10 samples, 0.08%)parking_lot::condvar::Condvar::notify_one_slow (203 samples, 1.63%)parking_lot_core::parking_lot::unpark_requeue (202 samples, 1.62%)alloc::vec::Vec<T,A>::pop (20 samples, 0.16%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.02%)<F as futures_core::future::TryFuture>::try_poll (1,156 samples, 9.27%)<F as futures..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1,156 samples, 9.27%)<core::future..fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (670 samples, 5.37%)fred::m..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (670 samples, 5.37%)<core::..fred::multiplexer::responses::process_centralized_frame::_{{closure}} (670 samples, 5.37%)fred::m..fred::multiplexer::responses::process_response (670 samples, 5.37%)fred::m..fred::multiplexer::responses::respond_to_caller (670 samples, 5.37%)fred::m..tokio::sync::oneshot::Sender<T>::send (301 samples, 2.41%)to..tokio::sync::oneshot::Inner<T>::complete (301 samples, 2.41%)to..tokio::sync::oneshot::Task::with_task (301 samples, 2.41%)to..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (301 samples, 2.41%)to..tokio::sync::oneshot::Task::with_task::_{{closure}} (301 samples, 2.41%)to..core::ops::function::FnOnce::call_once (301 samples, 2.41%)co..core::task::wake::Waker::wake_by_ref (301 samples, 2.41%)co..tokio::runtime::thread_pool::worker::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>::schedule (301 samples, 2.41%)to..tokio::runtime::thread_pool::worker::Shared::schedule (301 samples, 2.41%)to..tokio::macros::scoped_tls::ScopedKey<T>::with (301 samples, 2.41%)to..tokio::runtime::thread_pool::worker::Shared::schedule::_{{closure}} (301 samples, 2.41%)to..tokio::runtime::thread_pool::worker::Shared::schedule_local (301 samples, 2.41%)to..tokio::runtime::thread_pool::worker::Shared::notify_parked (295 samples, 2.37%)to..tokio::runtime::thread_pool::idle::Idle::worker_to_notify (64 samples, 0.51%)tokio::runtime::thread_pool::idle::Idle::notify_should_wakeup (41 samples, 0.33%)core::sync::atomic::AtomicUsize::fetch_add (18 samples, 0.14%)core::sync::atomic::atomic_add (18 samples, 0.14%)core::ptr::drop_in_place<tokio::coop::RestoreOnPending> (2 samples, 0.02%)<tokio::coop::RestoreOnPending as core::ops::drop::Drop>::drop (2 samples, 0.02%)tokio::coop::CURRENT::__getit (3 samples, 0.02%)std::thread::local::fast::Key<T>::get (3 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)tokio::coop::poll_proceed (5 samples, 0.04%)std::thread::local::LocalKey<T>::with (5 samples, 0.04%)std::thread::local::LocalKey<T>::try_with (5 samples, 0.04%)tokio::coop::poll_proceed::_{{closure}} (2 samples, 0.02%)core::cell::Cell<T>::set (2 samples, 0.02%)core::cell::Cell<T>::replace (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::mem::swap (2 samples, 0.02%)core::ptr::swap_nonoverlapping_one (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)<tokio::loom::std::atomic_usize::AtomicUsize as tokio::sync::mpsc::chan::Semaphore>::add_permit (2 samples, 0.02%)[libc-2.28.so] (7 samples, 0.06%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (8 samples, 0.06%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (8 samples, 0.06%)core::ptr::read (8 samples, 0.06%)tokio::sync::mpsc::block::Block<T>::read (11 samples, 0.09%)__sched_yield (4 samples, 0.03%)entry_SYSCALL_64_after_hwframe (4 samples, 0.03%)do_syscall_64 (4 samples, 0.03%)__x64_sys_sched_yield (4 samples, 0.03%)schedule (4 samples, 0.03%)__schedule (4 samples, 0.03%)pick_next_task_fair (2 samples, 0.02%)update_curr (2 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::reclaim_blocks (6 samples, 0.05%)tokio::sync::mpsc::list::Tx<T>::reclaim_block (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::try_push (2 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::pop (40 samples, 0.32%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (19 samples, 0.15%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (1,215 samples, 9.74%)<futures_util:..<S as futures_core::stream::TryStream>::try_poll_next (59 samples, 0.47%)<futures_util::stream::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next (59 samples, 0.47%)<tokio_stream::wrappers::mpsc_unbounded::UnboundedReceiverStream<T> as futures_core::stream::Stream>::poll_next (59 samples, 0.47%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (59 samples, 0.47%)tokio::sync::mpsc::chan::Rx<T,S>::recv (59 samples, 0.47%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (52 samples, 0.42%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (52 samples, 0.42%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (2 samples, 0.02%)[libc-2.28.so] (7 samples, 0.06%)[libc-2.28.so] (7 samples, 0.06%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (6 samples, 0.05%)[libc-2.28.so] (6 samples, 0.05%)[libc-2.28.so] (4 samples, 0.03%)futures_util::lock::bilock::BiLock<T>::poll_lock (8 samples, 0.06%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (3 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)cfree (4 samples, 0.03%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,fred::metrics::SizeStats>> (3 samples, 0.02%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (3 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (3 samples, 0.02%)[libc-2.28.so] (5 samples, 0.04%)core::ptr::drop_in_place<redis_protocol::types::Frame> (9 samples, 0.07%)core::ptr::drop_in_place<alloc::vec::Vec<redis_protocol::types::Frame>> (9 samples, 0.07%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (9 samples, 0.07%)core::ptr::drop_in_place<[redis_protocol::types::Frame]> (9 samples, 0.07%)cfree (2 samples, 0.02%)fred::metrics::SizeStats::sample (2 samples, 0.02%)lock_api::rwlock::RwLock<R,T>::write (12 samples, 0.10%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (12 samples, 0.10%)<&T as core::fmt::Display>::fmt (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve (3 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (13 samples, 0.10%)<alloc::string::String as core::fmt::Write>::write_str (8 samples, 0.06%)alloc::string::String::push_str (8 samples, 0.06%)alloc::vec::Vec<T,A>::extend_from_slice (8 samples, 0.06%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (8 samples, 0.06%)alloc::vec::Vec<T,A>::append_elements (8 samples, 0.06%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)__libc_malloc (25 samples, 0.20%)[libc-2.28.so] (13 samples, 0.10%)__rdl_alloc (3 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (2 samples, 0.02%)alloc::raw_vec::finish_grow (34 samples, 0.27%)__rust_alloc (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::grow_amortized (40 samples, 0.32%)core::cmp::max (5 samples, 0.04%)core::cmp::Ord::max (5 samples, 0.04%)core::cmp::max_by (5 samples, 0.04%)alloc::vec::Vec<T,A>::reserve (43 samples, 0.34%)alloc::raw_vec::RawVec<T,A>::reserve (42 samples, 0.34%)alloc::raw_vec::RawVec<T,A>::try_reserve (41 samples, 0.33%)core::intrinsics::copy_nonoverlapping (6 samples, 0.05%)[libc-2.28.so] (4 samples, 0.03%)<&mut W as core::fmt::Write>::write_str (50 samples, 0.40%)<alloc::string::String as core::fmt::Write>::write_str (50 samples, 0.40%)alloc::string::String::push_str (50 samples, 0.40%)alloc::vec::Vec<T,A>::extend_from_slice (50 samples, 0.40%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (50 samples, 0.40%)alloc::vec::Vec<T,A>::append_elements (50 samples, 0.40%)<T as alloc::string::ToString>::to_string (95 samples, 0.76%)core::fmt::Write::write_fmt (93 samples, 0.75%)core::fmt::write (93 samples, 0.75%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (63 samples, 0.51%)core::fmt::num::imp::fmt_u64 (61 samples, 0.49%)core::fmt::Formatter::pad_integral (11 samples, 0.09%)core::fmt::Formatter::pad_integral::write_prefix (3 samples, 0.02%)[libc-2.28.so] (5 samples, 0.04%)__rust_dealloc (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (14 samples, 0.11%)alloc::alloc::dealloc (14 samples, 0.11%)cfree (5 samples, 0.04%)core::ptr::drop_in_place<alloc::string::String> (15 samples, 0.12%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (15 samples, 0.12%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (15 samples, 0.12%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (15 samples, 0.12%)core::slice::<impl [T]>::clone_from_slice (3 samples, 0.02%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (3 samples, 0.02%)core::slice::index::<impl core::ops::index::Index<I> for [T]>::index (2 samples, 0.02%)<core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::index (2 samples, 0.02%)<&T as core::fmt::Display>::fmt (3 samples, 0.02%)alloc::vec::Vec<T,A>::as_mut_ptr (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve (3 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (11 samples, 0.09%)<alloc::string::String as core::fmt::Write>::write_str (9 samples, 0.07%)alloc::string::String::push_str (9 samples, 0.07%)alloc::vec::Vec<T,A>::extend_from_slice (9 samples, 0.07%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (9 samples, 0.07%)alloc::vec::Vec<T,A>::append_elements (9 samples, 0.07%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)__libc_malloc (16 samples, 0.13%)__rdl_alloc (3 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (3 samples, 0.02%)alloc::raw_vec::finish_grow (27 samples, 0.22%)__rust_alloc (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (33 samples, 0.26%)alloc::raw_vec::RawVec<T,A>::reserve (31 samples, 0.25%)alloc::raw_vec::RawVec<T,A>::try_reserve (30 samples, 0.24%)alloc::raw_vec::RawVec<T,A>::grow_amortized (30 samples, 0.24%)core::cmp::max (2 samples, 0.02%)core::cmp::Ord::max (2 samples, 0.02%)core::cmp::max_by (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (40 samples, 0.32%)<alloc::string::String as core::fmt::Write>::write_str (39 samples, 0.31%)alloc::string::String::push_str (39 samples, 0.31%)alloc::vec::Vec<T,A>::extend_from_slice (39 samples, 0.31%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (39 samples, 0.31%)alloc::vec::Vec<T,A>::append_elements (39 samples, 0.31%)core::ptr::mut_ptr::<impl *mut T>::add (3 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::offset (3 samples, 0.02%)core::fmt::Write::write_fmt (94 samples, 0.75%)core::fmt::write (91 samples, 0.73%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (59 samples, 0.47%)core::fmt::num::imp::fmt_u64 (58 samples, 0.47%)core::fmt::Formatter::pad_integral (17 samples, 0.14%)core::fmt::Formatter::pad_integral::write_prefix (3 samples, 0.02%)<T as alloc::string::ToString>::to_string (96 samples, 0.77%)alloc::string::String::as_bytes (3 samples, 0.02%)<alloc::vec::Vec<T,A> as core::ops::deref::Deref>::deref (3 samples, 0.02%)[libc-2.28.so] (9 samples, 0.07%)__rust_dealloc (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (19 samples, 0.15%)alloc::alloc::dealloc (19 samples, 0.15%)cfree (4 samples, 0.03%)core::ptr::drop_in_place<alloc::string::String> (20 samples, 0.16%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (20 samples, 0.16%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (20 samples, 0.16%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (20 samples, 0.16%)core::clone::Clone::clone_from (9 samples, 0.07%)[libc-2.28.so] (9 samples, 0.07%)core::slice::<impl [T]>::clone_from_slice (10 samples, 0.08%)redis_protocol::encode::gen_bulkstring (150 samples, 1.20%)redis_protocol::utils::bulkstring_encode_len (10 samples, 0.08%)redis_protocol::utils::digits_in_number (10 samples, 0.08%)std::f64::<impl f64>::log10 (8 samples, 0.06%)std::f64::<impl f64>::log_wrapper (8 samples, 0.06%)std::f64::_<impl f64>::log10::_{{closure}} (8 samples, 0.06%)__log10_finite (8 samples, 0.06%)[libm-2.28.so] (6 samples, 0.05%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)__log10_finite (20 samples, 0.16%)[libm-2.28.so] (15 samples, 0.12%)core::iter::traits::iterator::Iterator::fold (44 samples, 0.35%)redis_protocol::utils::array_encode_len::_{{closure}} (42 samples, 0.34%)core::result::Result<T,E>::and_then (42 samples, 0.34%)redis_protocol::utils::array_encode_len::_{{closure}}::_{{closure}} (42 samples, 0.34%)redis_protocol::utils::encode_len (42 samples, 0.34%)redis_protocol::utils::bulkstring_encode_len (28 samples, 0.22%)redis_protocol::utils::digits_in_number (28 samples, 0.22%)std::f64::<impl f64>::log10 (23 samples, 0.18%)std::f64::<impl f64>::log_wrapper (23 samples, 0.18%)std::f64::_<impl f64>::log10::_{{closure}} (23 samples, 0.18%)log10f32x (2 samples, 0.02%)__log10_finite (3 samples, 0.02%)[libm-2.28.so] (3 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (378 samples, 3.03%)<to..<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (378 samples, 3.03%)<to..<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (375 samples, 3.01%)<fr..fred::protocol::codec::encode_frame (375 samples, 3.01%)fre..redis_protocol::encode::encode_bytes (343 samples, 2.75%)re..redis_protocol::encode::attempt_encoding (338 samples, 2.71%)re..redis_protocol::encode::gen_array (334 samples, 2.68%)re..redis_protocol::utils::array_encode_len (56 samples, 0.45%)redis_protocol::utils::digits_in_number (12 samples, 0.10%)std::f64::<impl f64>::log10 (4 samples, 0.03%)std::f64::<impl f64>::log_wrapper (4 samples, 0.03%)std::f64::_<impl f64>::log10::_{{closure}} (4 samples, 0.03%)<&mut S as futures_sink::Sink<Item>>::poll_ready (398 samples, 3.19%)<&m..<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (398 samples, 3.19%)<fu..futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (392 samples, 3.14%)fut..futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (382 samples, 3.06%)fut..[libc-2.28.so] (3 samples, 0.02%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (406 samples, 3.26%)<fu..[libc-2.28.so] (6 samples, 0.05%)futures_util::lock::bilock::BiLock<T>::poll_lock (5 samples, 0.04%)cfree (5 samples, 0.04%)fred::metrics::SizeStats::sample (2 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (2 samples, 0.02%)<alloc::string::String as core::fmt::Write>::write_str (2 samples, 0.02%)alloc::string::String::push_str (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)__libc_malloc (4 samples, 0.03%)[libc-2.28.so] (3 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (5 samples, 0.04%)<alloc::string::String as core::fmt::Write>::write_str (5 samples, 0.04%)alloc::string::String::push_str (5 samples, 0.04%)alloc::vec::Vec<T,A>::extend_from_slice (5 samples, 0.04%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (5 samples, 0.04%)alloc::vec::Vec<T,A>::append_elements (5 samples, 0.04%)alloc::vec::Vec<T,A>::reserve (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::reserve (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::try_reserve (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::grow_amortized (5 samples, 0.04%)alloc::raw_vec::finish_grow (5 samples, 0.04%)<T as alloc::string::ToString>::to_string (14 samples, 0.11%)core::fmt::Write::write_fmt (14 samples, 0.11%)core::fmt::write (13 samples, 0.10%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (10 samples, 0.08%)core::fmt::num::imp::fmt_u64 (10 samples, 0.08%)core::fmt::Formatter::pad_integral (3 samples, 0.02%)core::fmt::Formatter::pad_integral::write_prefix (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)core::ptr::drop_in_place<alloc::string::String> (4 samples, 0.03%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (4 samples, 0.03%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (4 samples, 0.03%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (4 samples, 0.03%)alloc::alloc::dealloc (4 samples, 0.03%)cfree (2 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (4 samples, 0.03%)<alloc::string::String as core::fmt::Write>::write_str (4 samples, 0.03%)alloc::string::String::push_str (4 samples, 0.03%)alloc::vec::Vec<T,A>::extend_from_slice (4 samples, 0.03%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (4 samples, 0.03%)alloc::vec::Vec<T,A>::append_elements (4 samples, 0.03%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::try_reserve (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::grow_amortized (3 samples, 0.02%)alloc::raw_vec::finish_grow (3 samples, 0.02%)__libc_malloc (3 samples, 0.02%)core::fmt::Formatter::pad_integral::write_prefix (2 samples, 0.02%)<T as alloc::string::ToString>::to_string (16 samples, 0.13%)core::fmt::Write::write_fmt (16 samples, 0.13%)core::fmt::write (16 samples, 0.13%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (12 samples, 0.10%)core::fmt::num::imp::fmt_u64 (11 samples, 0.09%)core::fmt::Formatter::pad_integral (7 samples, 0.06%)[libc-2.28.so] (3 samples, 0.02%)__rust_dealloc (2 samples, 0.02%)core::ptr::drop_in_place<alloc::string::String> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (8 samples, 0.06%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (8 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (8 samples, 0.06%)alloc::alloc::dealloc (8 samples, 0.06%)cfree (3 samples, 0.02%)core::slice::<impl [T]>::clone_from_slice (4 samples, 0.03%)core::clone::Clone::clone_from (4 samples, 0.03%)[libc-2.28.so] (4 samples, 0.03%)redis_protocol::encode::gen_bulkstring (33 samples, 0.26%)redis_protocol::utils::bulkstring_encode_len (3 samples, 0.02%)redis_protocol::utils::digits_in_number (3 samples, 0.02%)redis_protocol::utils::bulkstring_encode_len (5 samples, 0.04%)redis_protocol::utils::digits_in_number (4 samples, 0.03%)core::iter::traits::iterator::Iterator::fold (10 samples, 0.08%)redis_protocol::utils::array_encode_len::_{{closure}} (9 samples, 0.07%)core::result::Result<T,E>::and_then (9 samples, 0.07%)redis_protocol::utils::array_encode_len::_{{closure}}::_{{closure}} (9 samples, 0.07%)redis_protocol::utils::encode_len (9 samples, 0.07%)<&mut S as futures_sink::Sink<Item>>::poll_ready (83 samples, 0.67%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_ready (82 samples, 0.66%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_lock_and_flush_slot (81 samples, 0.65%)futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (76 samples, 0.61%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (75 samples, 0.60%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (75 samples, 0.60%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (74 samples, 0.59%)fred::protocol::codec::encode_frame (74 samples, 0.59%)redis_protocol::encode::encode_bytes (63 samples, 0.51%)redis_protocol::encode::attempt_encoding (63 samples, 0.51%)redis_protocol::encode::gen_array (63 samples, 0.51%)redis_protocol::utils::array_encode_len (11 samples, 0.09%)<futures_util::sink::feed::Feed<Si,Item> as core::future::future::Future>::poll (85 samples, 0.68%)<log::Level as core::cmp::PartialOrd<log::LevelFilter>>::le (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (6 samples, 0.05%)bytes::bytes_mut::BytesMut::set_start (4 samples, 0.03%)<core::pin::Pin<P> as tokio::io::async_write::AsyncWrite>::is_write_vectored (2 samples, 0.02%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::is_write_vectored (2 samples, 0.02%)tokio::coop::poll_proceed (2 samples, 0.02%)std::thread::local::LocalKey<T>::with (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::coop::CURRENT::__getit (2 samples, 0.02%)tokio::io::driver::registration::Registration::poll_ready (8 samples, 0.06%)tokio::io::driver::scheduled_io::ScheduledIo::poll_readiness (4 samples, 0.03%)[libc-2.28.so] (2 samples, 0.02%)__indirect_thunk_start (2 samples, 0.02%)entry_SYSCALL_64 (2 samples, 0.02%)__fdget_pos (18 samples, 0.14%)__fget_light (18 samples, 0.14%)__fget (11 samples, 0.09%)fput (4 samples, 0.03%)__fsnotify_parent (3 samples, 0.02%)inet_sendmsg (3 samples, 0.02%)security_socket_sendmsg (4 samples, 0.03%)lock_sock_nested (12 samples, 0.10%)_raw_spin_lock_bh (11 samples, 0.09%)native_queued_spin_lock_slowpath (6 samples, 0.05%)ip_local_out (5 samples, 0.04%)__ip_local_out (5 samples, 0.04%)nf_hook_slow (4 samples, 0.03%)nf_conntrack_in (4 samples, 0.03%)__dev_queue_xmit (2 samples, 0.02%)dev_hard_start_xmit (2 samples, 0.02%)loopback_xmit (2 samples, 0.02%)tcp_wfree (2 samples, 0.02%)refcount_sub_and_test_checked (2 samples, 0.02%)ip_local_deliver (3 samples, 0.02%)ip_local_deliver_finish (3 samples, 0.02%)tcp_v4_rcv (3 samples, 0.02%)__ip_queue_xmit (15 samples, 0.12%)ip_output (10 samples, 0.08%)ip_finish_output2 (9 samples, 0.07%)__local_bh_enable_ip (7 samples, 0.06%)do_softirq.part.19 (7 samples, 0.06%)do_softirq_own_stack (7 samples, 0.06%)__softirqentry_text_start (7 samples, 0.06%)net_rx_action (6 samples, 0.05%)process_backlog (6 samples, 0.05%)__netif_receive_skb_one_core (5 samples, 0.04%)ip_rcv (5 samples, 0.04%)nf_hook_slow (2 samples, 0.02%)nf_conntrack_in (2 samples, 0.02%)__tcp_transmit_skb (16 samples, 0.13%)__tcp_push_pending_frames (17 samples, 0.14%)tcp_write_xmit (17 samples, 0.14%)tcp_ack (2 samples, 0.02%)__kfree_skb (2 samples, 0.02%)skb_release_data (2 samples, 0.02%)kfree_skb_partial (2 samples, 0.02%)__wake_up_common (3 samples, 0.02%)try_to_wake_up (2 samples, 0.02%)sock_def_readable (5 samples, 0.04%)__wake_up_common_lock (4 samples, 0.03%)__wake_up_common (4 samples, 0.03%)ep_poll_callback (4 samples, 0.03%)__release_sock (29 samples, 0.23%)tcp_v4_do_rcv (29 samples, 0.23%)tcp_rcv_established (29 samples, 0.23%)tcp_data_queue (8 samples, 0.06%)_raw_spin_lock_bh (3 samples, 0.02%)release_sock (39 samples, 0.31%)tcp_release_cb (2 samples, 0.02%)__check_object_size (10 samples, 0.08%)__virt_addr_valid (5 samples, 0.04%)__sk_dst_check (7 samples, 0.06%)ipv4_dst_check (3 samples, 0.02%)ipv4_conntrack_defrag (2 samples, 0.02%)__nf_conntrack_find_get (15 samples, 0.12%)get_l4proto (2 samples, 0.02%)hash_conntrack_raw (4 samples, 0.03%)nf_ct_get_tuple (2 samples, 0.02%)__local_bh_enable_ip (2 samples, 0.02%)__nf_ct_refresh_acct (2 samples, 0.02%)nf_conntrack_in (53 samples, 0.42%)tcp_packet (22 samples, 0.18%)nf_ct_seq_offset (8 samples, 0.06%)nf_nat_ipv4_local_fn (4 samples, 0.03%)nf_nat_ipv4_fn (2 samples, 0.02%)ip_local_out (78 samples, 0.63%)__ip_local_out (77 samples, 0.62%)nf_hook_slow (74 samples, 0.59%)nft_do_chain_ipv4 (11 samples, 0.09%)nft_do_chain (10 samples, 0.08%)ip_finish_output (5 samples, 0.04%)eth_type_trans (6 samples, 0.05%)netif_rx_internal (5 samples, 0.04%)enqueue_to_backlog (4 samples, 0.03%)sk_free (2 samples, 0.02%)dev_hard_start_xmit (23 samples, 0.18%)loopback_xmit (21 samples, 0.17%)tcp_wfree (3 samples, 0.02%)refcount_sub_and_test_checked (2 samples, 0.02%)netdev_pick_tx (3 samples, 0.02%)netif_skb_features (6 samples, 0.05%)validate_xmit_skb (11 samples, 0.09%)__dev_queue_xmit (47 samples, 0.38%)__kfree_skb_flush (2 samples, 0.02%)__netif_receive_skb (2 samples, 0.02%)__netif_receive_skb_core (5 samples, 0.04%)raw_local_deliver (3 samples, 0.02%)inet_ehashfn (2 samples, 0.02%)__inet_lookup_established (13 samples, 0.10%)refcount_inc_not_zero_checked (3 samples, 0.02%)sk_filter_trim_cap (6 samples, 0.05%)security_sock_rcv_skb (4 samples, 0.03%)apparmor_socket_sock_rcv_skb (2 samples, 0.02%)ipv4_dst_check (2 samples, 0.02%)__tcp_ack_snd_check (2 samples, 0.02%)__slab_free (6 samples, 0.05%)kfree (5 samples, 0.04%)__kfree_skb (21 samples, 0.17%)skb_release_data (9 samples, 0.07%)kfree_skbmem (2 samples, 0.02%)kmem_cache_free (6 samples, 0.05%)rb_first (4 samples, 0.03%)tcp_ack_update_rtt.isra.49 (6 samples, 0.05%)tcp_newly_delivered (2 samples, 0.02%)tcp_rack_update_reo_wnd (2 samples, 0.02%)tcp_ack (73 samples, 0.59%)tcp_update_pacing_rate (2 samples, 0.02%)_raw_spin_lock_irqsave (3 samples, 0.02%)select_task_rq_fair (13 samples, 0.10%)update_cfs_rq_h_load (4 samples, 0.03%)ttwu_do_activate (5 samples, 0.04%)enqueue_task_fair (5 samples, 0.04%)enqueue_entity (5 samples, 0.04%)__wake_up_common (42 samples, 0.34%)try_to_wake_up (37 samples, 0.30%)sock_def_readable (56 samples, 0.45%)__wake_up_common_lock (52 samples, 0.42%)__wake_up_common (52 samples, 0.42%)ep_poll_callback (49 samples, 0.39%)_raw_spin_lock_irqsave (6 samples, 0.05%)tcp_event_data_recv (3 samples, 0.02%)tcp_v4_do_rcv (159 samples, 1.27%)tcp_rcv_established (156 samples, 1.25%)tcp_data_queue (70 samples, 0.56%)tcp_queue_rcv (3 samples, 0.02%)tcp_v4_fill_cb (3 samples, 0.02%)ip_local_deliver_finish (208 samples, 1.67%)tcp_v4_rcv (200 samples, 1.60%)ip_local_deliver (221 samples, 1.77%)i..nf_hook_slow (11 samples, 0.09%)nft_do_chain_ipv4 (6 samples, 0.05%)nft_do_chain (3 samples, 0.02%)ip_rcv_core.isra.19 (6 samples, 0.05%)ip_rcv_finish (3 samples, 0.02%)__netif_receive_skb_one_core (250 samples, 2.00%)_..ip_rcv (242 samples, 1.94%)i..nf_hook_slow (8 samples, 0.06%)nf_nat_ipv4_in (4 samples, 0.03%)nf_nat_ipv4_fn (2 samples, 0.02%)net_rx_action (263 samples, 2.11%)n..process_backlog (255 samples, 2.04%)p..__local_bh_enable_ip (282 samples, 2.26%)_..do_softirq.part.19 (282 samples, 2.26%)d..do_softirq_own_stack (278 samples, 2.23%)d..__softirqentry_text_start (276 samples, 2.21%)_..rcu_bh_qs (3 samples, 0.02%)ip_finish_output2 (339 samples, 2.72%)ip..dev_queue_xmit (2 samples, 0.02%)__cgroup_bpf_run_filter_skb (2 samples, 0.02%)ip_finish_output (3 samples, 0.02%)ipv4_confirm (4 samples, 0.03%)nf_ct_deliver_cached_events (2 samples, 0.02%)__ip_queue_xmit (446 samples, 3.58%)__ip..ip_output (358 samples, 2.87%)ip..nf_hook_slow (6 samples, 0.05%)__skb_clone (7 samples, 0.06%)__copy_skb_header (5 samples, 0.04%)tcp_established_options (2 samples, 0.02%)__tcp_transmit_skb (476 samples, 3.82%)__tc..sched_clock_cpu (3 samples, 0.02%)sched_clock (2 samples, 0.02%)native_sched_clock (2 samples, 0.02%)tcp_event_new_data_sent (8 samples, 0.06%)sk_reset_timer (2 samples, 0.02%)mod_timer (2 samples, 0.02%)__tcp_push_pending_frames (514 samples, 4.12%)__tc..tcp_write_xmit (514 samples, 4.12%)tcp_..tcp_schedule_loss_probe (4 samples, 0.03%)_copy_from_iter_full (9 samples, 0.07%)copyin (9 samples, 0.07%)copy_user_generic_string (8 samples, 0.06%)__kmalloc_reserve.isra.49 (12 samples, 0.10%)__kmalloc_node_track_caller (11 samples, 0.09%)kmalloc_slab (4 samples, 0.03%)kmem_cache_alloc_node (11 samples, 0.09%)__alloc_skb (35 samples, 0.28%)ksize (7 samples, 0.06%)sk_stream_alloc_skb (39 samples, 0.31%)tcp_push (2 samples, 0.02%)tcp_rate_check_app_limited (6 samples, 0.05%)ipv4_mtu (6 samples, 0.05%)tcp_send_mss (14 samples, 0.11%)tcp_current_mss (12 samples, 0.10%)tcp_established_options (2 samples, 0.02%)tcp_stream_memory_free (4 samples, 0.03%)do_iter_readv_writev (685 samples, 5.49%)do_iter..sock_write_iter (678 samples, 5.44%)sock_wr..sock_sendmsg (676 samples, 5.42%)sock_se..tcp_sendmsg (665 samples, 5.33%)tcp_sen..tcp_sendmsg_locked (607 samples, 4.87%)tcp_se..apparmor_file_permission (2 samples, 0.02%)do_iter_write (703 samples, 5.64%)do_iter..security_file_permission (7 samples, 0.06%)common_file_perm (4 samples, 0.03%)import_iovec (6 samples, 0.05%)rw_copy_check_uvector (4 samples, 0.03%)_copy_from_user (3 samples, 0.02%)copy_user_generic_string (3 samples, 0.02%)entry_SYSCALL_64_after_hwframe (740 samples, 5.93%)entry_SY..do_syscall_64 (739 samples, 5.93%)do_sysca..do_writev (738 samples, 5.92%)do_writevvfs_writev (712 samples, 5.71%)vfs_wri..<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::poll_flush (797 samples, 6.39%)<tokio_u..<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::poll_flush (797 samples, 6.39%)<tokio_u..tokio_util::util::poll_write_buf (792 samples, 6.35%)tokio_ut..<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write_vectored (773 samples, 6.20%)<tokio::..tokio::net::tcp::stream::TcpStream::poll_write_vectored_priv (769 samples, 6.17%)tokio::n..tokio::io::poll_evented::PollEvented<E>::poll_write_vectored (769 samples, 6.17%)tokio::i..tokio::io::driver::registration::Registration::poll_write_io (769 samples, 6.17%)tokio::i..tokio::io::driver::registration::Registration::poll_io (767 samples, 6.15%)tokio::i..tokio::io::poll_evented::PollEvented<E>::poll_write_vectored::_{{closure}} (755 samples, 6.05%)tokio::i..<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored (755 samples, 6.05%)<&mio::n..mio::io_source::IoSource<T>::do_io (754 samples, 6.05%)mio::io_..mio::sys::unix::IoSourceState::do_io (754 samples, 6.05%)mio::sys..<&mio::net::tcp::stream::TcpStream as std::io::Write>::write_vectored::_{{closure}} (754 samples, 6.05%)<&mio::n..<&std::fs::File as std::io::Write>::write_vectored (754 samples, 6.05%)<&std::f..std::sys::unix::fs::File::write_vectored (754 samples, 6.05%)std::sys..std::sys::unix::fd::FileDesc::write_vectored (754 samples, 6.05%)std::sys..writev (751 samples, 6.02%)writevsyscall_return_via_sysret (3 samples, 0.02%)[libc-2.28.so] (3 samples, 0.02%)core::ptr::drop_in_place<futures_util::lock::bilock::BiLockGuard<tokio_util::codec::framed::Framed<tokio::net::tcp::stream::TcpStream,fred::protocol::codec::RedisCodec>>> (4 samples, 0.03%)<futures_util::lock::bilock::BiLockGuard<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)futures_util::lock::bilock::BiLock<T>::unlock (4 samples, 0.03%)core::task::wake::Waker::wake (3 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::wake_by_val (3 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::drop_reference (2 samples, 0.02%)tokio::runtime::task::state::State::ref_dec (2 samples, 0.02%)futures_util::lock::bilock::BiLock<T>::poll_lock (2 samples, 0.02%)cfree (4 samples, 0.03%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,fred::metrics::SizeStats>> (4 samples, 0.03%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (4 samples, 0.03%)core::ptr::drop_in_place<redis_protocol::types::Frame> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::vec::Vec<redis_protocol::types::Frame>> (6 samples, 0.05%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (6 samples, 0.05%)core::ptr::drop_in_place<[redis_protocol::types::Frame]> (6 samples, 0.05%)[libc-2.28.so] (5 samples, 0.04%)fred::metrics::SizeStats::sample (2 samples, 0.02%)lock_api::rwlock::RwLock<R,T>::write (3 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::current_memory (2 samples, 0.02%)__libc_malloc (4 samples, 0.03%)alloc::raw_vec::finish_grow (6 samples, 0.05%)alloc::vec::Vec<T,A>::reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::try_reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::grow_amortized (9 samples, 0.07%)<&mut W as core::fmt::Write>::write_str (10 samples, 0.08%)<alloc::string::String as core::fmt::Write>::write_str (10 samples, 0.08%)alloc::string::String::push_str (10 samples, 0.08%)alloc::vec::Vec<T,A>::extend_from_slice (10 samples, 0.08%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (10 samples, 0.08%)alloc::vec::Vec<T,A>::append_elements (10 samples, 0.08%)core::fmt::Write::write_fmt (28 samples, 0.22%)core::fmt::write (27 samples, 0.22%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (18 samples, 0.14%)core::fmt::num::imp::fmt_u64 (17 samples, 0.14%)core::fmt::Formatter::pad_integral (6 samples, 0.05%)core::fmt::Formatter::pad_integral::write_prefix (2 samples, 0.02%)<T as alloc::string::ToString>::to_string (30 samples, 0.24%)[libc-2.28.so] (3 samples, 0.02%)core::ptr::drop_in_place<alloc::string::String> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (6 samples, 0.05%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (6 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (6 samples, 0.05%)alloc::alloc::dealloc (6 samples, 0.05%)cfree (2 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (4 samples, 0.03%)<alloc::string::String as core::fmt::Write>::write_str (3 samples, 0.02%)alloc::string::String::push_str (3 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (3 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (3 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (3 samples, 0.02%)<u64 as core::fmt::num::DisplayInt>::to_u64 (2 samples, 0.02%)__libc_malloc (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::grow_amortized (16 samples, 0.13%)alloc::raw_vec::finish_grow (13 samples, 0.10%)alloc::vec::Vec<T,A>::reserve (20 samples, 0.16%)alloc::raw_vec::RawVec<T,A>::reserve (17 samples, 0.14%)alloc::raw_vec::RawVec<T,A>::try_reserve (17 samples, 0.14%)<&mut W as core::fmt::Write>::write_str (23 samples, 0.18%)<alloc::string::String as core::fmt::Write>::write_str (23 samples, 0.18%)alloc::string::String::push_str (23 samples, 0.18%)alloc::vec::Vec<T,A>::extend_from_slice (23 samples, 0.18%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (23 samples, 0.18%)alloc::vec::Vec<T,A>::append_elements (23 samples, 0.18%)<T as alloc::string::ToString>::to_string (53 samples, 0.42%)core::fmt::Write::write_fmt (52 samples, 0.42%)core::fmt::write (51 samples, 0.41%)core::fmt::num::imp::<impl core::fmt::Display for u64>::fmt (34 samples, 0.27%)core::fmt::num::imp::fmt_u64 (32 samples, 0.26%)core::fmt::Formatter::pad_integral (7 samples, 0.06%)core::fmt::Formatter::pad_integral::write_prefix (2 samples, 0.02%)[libc-2.28.so] (9 samples, 0.07%)core::ptr::drop_in_place<alloc::string::String> (12 samples, 0.10%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (12 samples, 0.10%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (12 samples, 0.10%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (12 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (12 samples, 0.10%)alloc::alloc::dealloc (12 samples, 0.10%)cfree (3 samples, 0.02%)core::slice::<impl [T]>::clone_from_slice (2 samples, 0.02%)core::clone::Clone::clone_from (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)__log10_finite (2 samples, 0.02%)[libm-2.28.so] (2 samples, 0.02%)redis_protocol::encode::gen_bulkstring (75 samples, 0.60%)redis_protocol::utils::bulkstring_encode_len (5 samples, 0.04%)redis_protocol::utils::digits_in_number (5 samples, 0.04%)std::f64::<impl f64>::log10 (3 samples, 0.02%)std::f64::<impl f64>::log_wrapper (3 samples, 0.02%)std::f64::_<impl f64>::log10::_{{closure}} (3 samples, 0.02%)__log10_finite (11 samples, 0.09%)[libm-2.28.so] (10 samples, 0.08%)core::iter::traits::iterator::Iterator::fold (19 samples, 0.15%)redis_protocol::utils::array_encode_len::_{{closure}} (19 samples, 0.15%)core::result::Result<T,E>::and_then (19 samples, 0.15%)redis_protocol::utils::array_encode_len::_{{closure}}::_{{closure}} (19 samples, 0.15%)redis_protocol::utils::encode_len (19 samples, 0.15%)redis_protocol::utils::bulkstring_encode_len (16 samples, 0.13%)redis_protocol::utils::digits_in_number (15 samples, 0.12%)std::f64::<impl f64>::log10 (12 samples, 0.10%)std::f64::<impl f64>::log_wrapper (12 samples, 0.10%)std::f64::_<impl f64>::log10::_{{closure}} (12 samples, 0.10%)redis_protocol::encode::attempt_encoding (137 samples, 1.10%)redis_protocol::encode::gen_array (136 samples, 1.09%)redis_protocol::utils::array_encode_len (24 samples, 0.19%)redis_protocol::utils::digits_in_number (5 samples, 0.04%)std::f64::<impl f64>::log10 (2 samples, 0.02%)std::f64::<impl f64>::log_wrapper (2 samples, 0.02%)std::f64::_<impl f64>::log10::_{{closure}} (2 samples, 0.02%)__log10_finite (2 samples, 0.02%)<tokio_util::codec::framed::Framed<T,U> as futures_sink::Sink<I>>::start_send (161 samples, 1.29%)<tokio_util::codec::framed_impl::FramedImpl<T,U,W> as futures_sink::Sink<I>>::start_send (161 samples, 1.29%)<fred::protocol::codec::RedisCodec as tokio_util::codec::encoder::Encoder<redis_protocol::types::Frame>>::encode (161 samples, 1.29%)fred::protocol::codec::encode_frame (161 samples, 1.29%)redis_protocol::encode::encode_bytes (140 samples, 1.12%)<futures_util::stream::stream::split::SplitSink<S,Item> as futures_sink::Sink<Item>>::poll_flush (973 samples, 7.80%)<futures_ut..futures_util::stream::stream::split::SplitSink<S,Item>::poll_flush_slot (165 samples, 1.32%)[libc-2.28.so] (3 samples, 0.02%)<futures_util::sink::send::Send<Si,Item> as core::future::future::Future>::poll (1,063 samples, 8.52%)<futures_uti..[libc-2.28.so] (3 samples, 0.02%)[libc-2.28.so] (8 samples, 0.06%)fred::client::RedisClientInner::log_client_name_fn (3 samples, 0.02%)<log::Level as core::cmp::PartialOrd<log::LevelFilter>>::le (2 samples, 0.02%)fred::multiplexer::Counters::should_send (13 samples, 0.10%)fred::utils::read_atomic (11 samples, 0.09%)core::sync::atomic::AtomicUsize::load (11 samples, 0.09%)core::sync::atomic::atomic_load (11 samples, 0.09%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (5 samples, 0.04%)[libc-2.28.so] (5 samples, 0.04%)__libc_malloc (98 samples, 0.79%)[libc-2.28.so] (81 samples, 0.65%)entry_SYSCALL_64_after_hwframe (11 samples, 0.09%)do_syscall_64 (11 samples, 0.09%)__x64_sys_futex (11 samples, 0.09%)do_futex (10 samples, 0.08%)futex_wake (10 samples, 0.08%)wake_up_q (8 samples, 0.06%)try_to_wake_up (8 samples, 0.06%)alloc::vec::Vec<T,A>::with_capacity_in (99 samples, 0.79%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (99 samples, 0.79%)alloc::raw_vec::RawVec<T,A>::allocate_in (99 samples, 0.79%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (99 samples, 0.79%)alloc::alloc::Global::alloc_impl (99 samples, 0.79%)alloc::alloc::alloc (99 samples, 0.79%)alloc::slice::<impl [T]>::to_vec (101 samples, 0.81%)alloc::slice::<impl [T]>::to_vec_in (101 samples, 0.81%)alloc::slice::hack::to_vec (101 samples, 0.81%)<T as alloc::slice::hack::ConvertVec>::to_vec (101 samples, 0.81%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)alloc::vec::Vec<T,A>::push (8 samples, 0.06%)core::ptr::write (7 samples, 0.06%)__libc_malloc (13 samples, 0.10%)[libc-2.28.so] (2 samples, 0.02%)alloc::vec::Vec<T>::with_capacity (14 samples, 0.11%)alloc::vec::Vec<T,A>::with_capacity_in (14 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (14 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::allocate_in (14 samples, 0.11%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (14 samples, 0.11%)alloc::alloc::Global::alloc_impl (14 samples, 0.11%)alloc::alloc::alloc (14 samples, 0.11%)[libc-2.28.so] (17 samples, 0.14%)__libc_malloc (3 samples, 0.02%)fred::protocol::types::RedisCommand::to_frame (190 samples, 1.52%)fred::protocol::utils::command_to_frame (190 samples, 1.52%)fred::protocol::utils::value_to_outgoing_frame (34 samples, 0.27%)<tracing_core::field::Iter as core::iter::traits::iterator::Iterator>::next (5 samples, 0.04%)tracing_core::field::FieldSet::callsite (4 samples, 0.03%)core::option::Option<T>::expect (2 samples, 0.02%)tracing::span::Inner::new (3 samples, 0.02%)<tracing_core::dispatcher::Dispatch as core::clone::Clone>::clone (3 samples, 0.02%)<alloc::sync::Arc<T> as core::clone::Clone>::clone (3 samples, 0.02%)__libc_malloc (3 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::allocate_in (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (5 samples, 0.04%)alloc::alloc::Global::alloc_impl (5 samples, 0.04%)alloc::alloc::alloc (5 samples, 0.04%)<str as alloc::string::ToString>::to_string (6 samples, 0.05%)<alloc::string::String as core::convert::From<&str>>::from (6 samples, 0.05%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (6 samples, 0.05%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (6 samples, 0.05%)alloc::slice::<impl [T]>::to_vec (6 samples, 0.05%)alloc::slice::<impl [T]>::to_vec_in (6 samples, 0.05%)alloc::slice::hack::to_vec (6 samples, 0.05%)<T as alloc::slice::hack::ConvertVec>::to_vec (6 samples, 0.05%)<opentelemetry::sdk::trace::tracer::Tracer as opentelemetry::trace::tracer::Tracer>::span_builder (11 samples, 0.09%)opentelemetry::trace::tracer::SpanBuilder::from_name (2 samples, 0.02%)core::ptr::drop_in_place<opentelemetry::sdk::trace::provider::TracerProvider> (4 samples, 0.03%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::provider::TracerProviderInner>> (4 samples, 0.03%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)core::option::Option<T>::map (10 samples, 0.08%)<opentelemetry::sdk::trace::tracer::Tracer as tracing_opentelemetry::tracer::PreSampledTracer>::new_span_id::_{{closure}} (10 samples, 0.08%)std::thread::local::LocalKey<T>::with (6 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (6 samples, 0.05%)<opentelemetry::sdk::trace::id_generator::IdGenerator as opentelemetry::trace::id_generator::IdGenerator>::new_span_id::_{{closure}} (5 samples, 0.04%)rand::rng::Rng::gen (5 samples, 0.04%)rand::distributions::integer::<impl rand::distributions::distribution::Distribution<u64> for rand::distributions::Standard>::sample (5 samples, 0.04%)<rand::rngs::thread::ThreadRng as rand_core::RngCore>::next_u64 (5 samples, 0.04%)<rand::rngs::adapter::reseeding::ReseedingRng<R,Rsdr> as rand_core::RngCore>::next_u64 (5 samples, 0.04%)<rand_core::block::BlockRng<R> as rand_core::RngCore>::next_u64 (5 samples, 0.04%)rand_core::block::BlockRng<R>::generate_and_set (2 samples, 0.02%)<rand::rngs::adapter::reseeding::ReseedingCore<R,Rsdr> as rand_core::block::BlockRngCore>::generate (2 samples, 0.02%)<rand_chacha::chacha::ChaCha12Core as rand_core::block::BlockRngCore>::generate (2 samples, 0.02%)rand_chacha::guts::ChaCha::refill4 (2 samples, 0.02%)rand_chacha::guts::refill_wide (2 samples, 0.02%)<opentelemetry::sdk::trace::tracer::Tracer as tracing_opentelemetry::tracer::PreSampledTracer>::new_span_id (24 samples, 0.19%)opentelemetry::sdk::trace::tracer::Tracer::provider (12 samples, 0.10%)alloc::sync::Weak<T>::upgrade (12 samples, 0.10%)core::sync::atomic::AtomicUsize::load (10 samples, 0.08%)core::sync::atomic::atomic_load (10 samples, 0.08%)[libc-2.28.so] (18 samples, 0.14%)core::option::Option<T>::map_or (5 samples, 0.04%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::new_span::_{{closure}} (5 samples, 0.04%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::has_active_span (4 samples, 0.03%)opentelemetry::context::Context::get (3 samples, 0.02%)core::option::Option<T>::and_then (3 samples, 0.02%)opentelemetry::context::Context::get::_{{closure}} (3 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::deref::Deref>::deref (3 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (12 samples, 0.10%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (12 samples, 0.10%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (12 samples, 0.10%)std::sys_common::rwlock::RWLock::write_unlock (12 samples, 0.10%)std::sys::unix::rwlock::RWLock::write_unlock (12 samples, 0.10%)std::sys::unix::rwlock::RWLock::raw_unlock (12 samples, 0.10%)__GI___pthread_rwlock_unlock (12 samples, 0.10%)opentelemetry::trace::tracer::SpanBuilder::with_span_id (6 samples, 0.05%)opentelemetry::trace::tracer::SpanBuilder::with_start_time (3 samples, 0.02%)std::time::SystemTime::now (19 samples, 0.15%)std::sys::unix::time::inner::SystemTime::now (18 samples, 0.14%)std::sys::unix::time::inner::now (18 samples, 0.14%)__clock_gettime (16 samples, 0.13%)__vdso_clock_gettime (13 samples, 0.10%)[[vdso]] (4 samples, 0.03%)<bool as tracing_core::field::Value>::record (2 samples, 0.02%)alloc::alloc::exchange_malloc (26 samples, 0.21%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (26 samples, 0.21%)alloc::alloc::Global::alloc_impl (26 samples, 0.21%)alloc::alloc::alloc (26 samples, 0.21%)__libc_malloc (26 samples, 0.21%)[libc-2.28.so] (19 samples, 0.15%)<opentelemetry::core::Value as core::convert::From<bool>>::from (3 samples, 0.02%)<&T as tracing_core::field::Value>::record (35 samples, 0.28%)<tracing_opentelemetry::layer::SpanAttributeVisitor as tracing_core::field::Visit>::record_bool (33 samples, 0.26%)opentelemetry::core::KeyValue::new (6 samples, 0.05%)<T as core::convert::Into<U>>::into (4 samples, 0.03%)tracing_core::span::Attributes::record (39 samples, 0.31%)tracing_core::field::ValueSet::record (37 samples, 0.30%)core::option::Option<T>::expect (2 samples, 0.02%)alloc::boxed::Box<T>::new (5 samples, 0.04%)alloc::alloc::exchange_malloc (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (5 samples, 0.04%)alloc::alloc::Global::alloc_impl (5 samples, 0.04%)alloc::alloc::alloc (5 samples, 0.04%)__libc_malloc (5 samples, 0.04%)[libc-2.28.so] (2 samples, 0.02%)<opentelemetry::context::Context as core::clone::Clone>::clone (17 samples, 0.14%)<std::collections::hash::map::HashMap<K,V,S> as core::clone::Clone>::clone (17 samples, 0.14%)<hashbrown::map::HashMap<K,V,S> as core::clone::Clone>::clone (17 samples, 0.14%)alloc::sync::Arc<T>::new (17 samples, 0.14%)alloc::alloc::exchange_malloc (17 samples, 0.14%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (17 samples, 0.14%)alloc::alloc::Global::alloc_impl (17 samples, 0.14%)alloc::alloc::alloc (17 samples, 0.14%)__libc_malloc (17 samples, 0.14%)[libc-2.28.so] (12 samples, 0.10%)hashbrown::raw::RawTable<T>::find_insert_slot (3 samples, 0.02%)hashbrown::raw::is_full (2 samples, 0.02%)core::mem::swap (21 samples, 0.17%)core::ptr::swap_nonoverlapping_one (21 samples, 0.17%)core::ptr::swap_nonoverlapping (21 samples, 0.17%)core::ptr::swap_nonoverlapping_bytes (21 samples, 0.17%)core::intrinsics::copy_nonoverlapping (21 samples, 0.17%)core::ptr::mut_ptr::<impl *mut T>::write_bytes (3 samples, 0.02%)core::intrinsics::write_bytes (3 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)__libc_malloc (18 samples, 0.14%)[libc-2.28.so] (6 samples, 0.05%)alloc::alloc::alloc (20 samples, 0.16%)__rdl_alloc (2 samples, 0.02%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::with_span (95 samples, 0.76%)opentelemetry::context::Context::with_value (88 samples, 0.71%)std::collections::hash::map::HashMap<K,V,S>::insert (54 samples, 0.43%)hashbrown::map::HashMap<K,V,S>::insert (54 samples, 0.43%)hashbrown::raw::RawTable<T>::insert (54 samples, 0.43%)hashbrown::raw::RawTable<T>::reserve (50 samples, 0.40%)hashbrown::raw::RawTable<T>::reserve_rehash (50 samples, 0.40%)hashbrown::raw::RawTable<T>::resize (47 samples, 0.38%)hashbrown::raw::RawTable<T>::fallible_with_capacity (25 samples, 0.20%)hashbrown::raw::RawTable<T>::new_uninitialized (22 samples, 0.18%)hashbrown::raw::calculate_layout (2 samples, 0.02%)core::alloc::layout::Layout::extend (2 samples, 0.02%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::span (3 samples, 0.02%)<opentelemetry::trace::noop::NoopSpan as opentelemetry::trace::span::Span>::span_context (2 samples, 0.02%)<opentelemetry::sdk::trace::sampler::Sampler as opentelemetry::sdk::trace::sampler::ShouldSample>::should_sample (14 samples, 0.11%)<opentelemetry::trace::span_context::TraceState as core::clone::Clone>::clone (2 samples, 0.02%)core::option::Option<T>::unwrap_or_default (5 samples, 0.04%)core::ptr::drop_in_place<core::option::Option<opentelemetry::sdk::trace::provider::TracerProvider>> (5 samples, 0.04%)core::ptr::drop_in_place<opentelemetry::sdk::trace::provider::TracerProvider> (5 samples, 0.04%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::provider::TracerProviderInner>> (5 samples, 0.04%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (5 samples, 0.04%)core::ptr::drop_in_place<opentelemetry::sdk::trace::provider::TracerProvider> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<opentelemetry::sdk::trace::provider::TracerProviderInner>> (2 samples, 0.02%)<alloc::sync::Arc<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)opentelemetry::sdk::trace::tracer::Tracer::provider (4 samples, 0.03%)alloc::sync::Weak<T>::upgrade (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)opentelemetry::trace::span_context::SpanContext::new (3 samples, 0.02%)core::option::Option<T>::as_ref (15 samples, 0.12%)<opentelemetry::context::Context as core::clone::Clone>::clone (4 samples, 0.03%)<std::collections::hash::map::HashMap<K,V,S> as core::clone::Clone>::clone (4 samples, 0.03%)<hashbrown::map::HashMap<K,V,S> as core::clone::Clone>::clone (4 samples, 0.03%)<hashbrown::raw::RawTable<T> as core::clone::Clone>::clone (4 samples, 0.03%)hashbrown::raw::RawTable<T>::new (2 samples, 0.02%)hashbrown::raw::sse2::Group::static_empty (2 samples, 0.02%)core::option::Option<T>::map (9 samples, 0.07%)tracing_opentelemetry::tracer::build_parent_context::_{{closure}} (8 samples, 0.06%)<opentelemetry::context::Context as opentelemetry::trace::context::TraceContextExt>::remote_span_context (4 samples, 0.03%)opentelemetry::context::Context::get (4 samples, 0.03%)std::collections::hash::map::HashMap<K,V,S>::get (4 samples, 0.03%)hashbrown::map::HashMap<K,V,S>::get (4 samples, 0.03%)hashbrown::map::HashMap<K,V,S>::get_key_value (4 samples, 0.03%)hashbrown::raw::RawTable<T>::find (4 samples, 0.03%)hashbrown::raw::RawTable<T>::iter_hash (2 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (2 samples, 0.02%)hashbrown::raw::sse2::Group::load (2 samples, 0.02%)core::core_arch::x86::sse2::_mm_loadu_si128 (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)tracing_opentelemetry::tracer::build_parent_context (28 samples, 0.22%)core::option::Option<T>::unwrap_or_default (2 samples, 0.02%)core::option::Option<T>::map (199 samples, 1.60%)tracing_opentelemetry::layer::OpenTelemetryLayer<S,T>::parent_context::_{{closure}} (185 samples, 1.48%)<opentelemetry::sdk::trace::tracer::Tracer as tracing_opentelemetry::tracer::PreSampledTracer>::sampled_context (185 samples, 1.48%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (5 samples, 0.04%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (5 samples, 0.04%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (5 samples, 0.04%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (5 samples, 0.04%)sharded_slab::page::slot::Guard<T,C>::release (5 samples, 0.04%)sharded_slab::page::slot::Slot<T,C>::release (5 samples, 0.04%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (7 samples, 0.06%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (7 samples, 0.06%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (7 samples, 0.06%)std::sys_common::rwlock::RWLock::write_unlock (7 samples, 0.06%)std::sys::unix::rwlock::RWLock::write_unlock (7 samples, 0.06%)std::sys::unix::rwlock::RWLock::raw_unlock (7 samples, 0.06%)__GI___pthread_rwlock_unlock (7 samples, 0.06%)<core::option::Option<T> as core::ops::try::Try>::into_result (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (4 samples, 0.03%)sharded_slab::pool::Pool<T,C>::get (4 samples, 0.03%)sharded_slab::shard::Shard<T,C>::with_slot (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (3 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (14 samples, 0.11%)tracing_subscriber::registry::LookupSpan::span (14 samples, 0.11%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (12 samples, 0.10%)tracing_subscriber::registry::sharded::Registry::get (5 samples, 0.04%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (16 samples, 0.13%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (16 samples, 0.13%)std::sync::rwlock::RwLock<T>::write (15 samples, 0.12%)std::sys_common::rwlock::RWLock::write (15 samples, 0.12%)std::sys::unix::rwlock::RWLock::write (15 samples, 0.12%)__GI___pthread_rwlock_wrlock (14 samples, 0.11%)core::option::Option<T>::and_then (2 samples, 0.02%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut::_{{closure}} (2 samples, 0.02%)<dyn core::any::Any>::downcast_mut (2 samples, 0.02%)<dyn core::any::Any>::is (2 samples, 0.02%)<T as core::any::Any>::type_id (2 samples, 0.02%)tracing_opentelemetry::layer::OpenTelemetryLayer<S,T>::parent_context (251 samples, 2.01%)t..tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (8 samples, 0.06%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (8 samples, 0.06%)std::collections::hash::map::HashMap<K,V,S>::get_mut (6 samples, 0.05%)hashbrown::map::HashMap<K,V,S>::get_mut (6 samples, 0.05%)hashbrown::raw::RawTable<T>::find (6 samples, 0.05%)tracing_opentelemetry::layer::Timings::new (20 samples, 0.16%)std::time::Instant::now (19 samples, 0.15%)std::sys::unix::time::inner::Instant::now (18 samples, 0.14%)std::sys::unix::time::inner::now (18 samples, 0.14%)__clock_gettime (18 samples, 0.14%)__vdso_clock_gettime (17 samples, 0.14%)[[vdso]] (13 samples, 0.10%)<core::option::Option<T> as core::ops::try::Try>::into_result (7 samples, 0.06%)core::option::Option<T>::ok_or (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (5 samples, 0.04%)sharded_slab::shard::Shard<T,C>::with_slot (4 samples, 0.03%)sharded_slab::page::Shared<T,C>::with_slot (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (3 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (17 samples, 0.14%)tracing_subscriber::registry::LookupSpan::span (17 samples, 0.14%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (15 samples, 0.12%)tracing_subscriber::registry::sharded::Registry::get (7 samples, 0.06%)tracing_subscriber::registry::sharded::id_to_idx (2 samples, 0.02%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (24 samples, 0.19%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (24 samples, 0.19%)std::sync::rwlock::RwLock<T>::write (23 samples, 0.18%)std::sys_common::rwlock::RWLock::write (23 samples, 0.18%)std::sys::unix::rwlock::RWLock::write (23 samples, 0.18%)__GI___pthread_rwlock_wrlock (21 samples, 0.17%)tracing_subscriber::registry::extensions::ExtensionsMut::get_mut (5 samples, 0.04%)tracing_subscriber::registry::extensions::ExtensionsInner::get_mut (5 samples, 0.04%)std::collections::hash::map::HashMap<K,V,S>::get_mut (5 samples, 0.04%)hashbrown::map::HashMap<K,V,S>::get_mut (5 samples, 0.04%)hashbrown::raw::RawTable<T>::find (5 samples, 0.04%)hashbrown::raw::RawTable<T>::iter_hash (3 samples, 0.02%)hashbrown::raw::RawIterHash<T>::new (3 samples, 0.02%)hashbrown::raw::sse2::Group::load (3 samples, 0.02%)core::core_arch::x86::sse2::_mm_loadu_si128 (3 samples, 0.02%)core::intrinsics::copy_nonoverlapping (3 samples, 0.02%)[libc-2.28.so] (4 samples, 0.03%)[libc-2.28.so] (4 samples, 0.03%)__libc_malloc (47 samples, 0.38%)[libc-2.28.so] (26 samples, 0.21%)alloc::boxed::Box<T>::new (52 samples, 0.42%)alloc::alloc::exchange_malloc (48 samples, 0.38%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (48 samples, 0.38%)alloc::alloc::Global::alloc_impl (48 samples, 0.38%)alloc::alloc::alloc (48 samples, 0.38%)hashbrown::raw::RawTable<T>::find (2 samples, 0.02%)<hashbrown::raw::RawIterHash<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)hashbrown::raw::Bucket<T>::write (17 samples, 0.14%)core::ptr::mut_ptr::<impl *mut T>::write (17 samples, 0.14%)core::ptr::write (17 samples, 0.14%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::new_span (563 samples, 4.51%)<trac..tracing_subscriber::registry::extensions::ExtensionsMut::insert (102 samples, 0.82%)tracing_subscriber::registry::extensions::ExtensionsMut::replace (101 samples, 0.81%)tracing_subscriber::registry::extensions::ExtensionsInner::insert (101 samples, 0.81%)std::collections::hash::map::HashMap<K,V,S>::insert (32 samples, 0.26%)hashbrown::map::HashMap<K,V,S>::insert (30 samples, 0.24%)hashbrown::raw::RawTable<T>::insert (26 samples, 0.21%)core::option::Option<T>::unwrap_or_else (2 samples, 0.02%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (3 samples, 0.02%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (3 samples, 0.02%)sharded_slab::page::slot::Guard<T,C>::release (3 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::release (3 samples, 0.02%)sharded_slab::shard::Array<T,C>::get (5 samples, 0.04%)sharded_slab::shard::Ptr<T,C>::load (5 samples, 0.04%)core::sync::atomic::AtomicPtr<T>::load (5 samples, 0.04%)core::sync::atomic::atomic_load (5 samples, 0.04%)core::option::Option<T>::as_ref (10 samples, 0.08%)sharded_slab::pool::Pool<T,C>::get (38 samples, 0.30%)sharded_slab::shard::Shard<T,C>::with_slot (31 samples, 0.25%)sharded_slab::page::Shared<T,C>::with_slot (27 samples, 0.22%)sharded_slab::sync::inner::UnsafeCell<T>::with (27 samples, 0.22%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (27 samples, 0.22%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (17 samples, 0.14%)sharded_slab::page::slot::Slot<T,C>::get (17 samples, 0.14%)core::sync::atomic::AtomicUsize::load (16 samples, 0.13%)core::sync::atomic::atomic_load (16 samples, 0.13%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::clone_span (50 samples, 0.40%)tracing_subscriber::registry::sharded::Registry::get (39 samples, 0.31%)<core::option::Option<T> as core::ops::try::Try>::into_result (5 samples, 0.04%)core::option::Option<T>::ok_or (5 samples, 0.04%)core::ptr::drop_in_place<sharded_slab::pool::RefMut<tracing_subscriber::registry::sharded::DataInner>> (2 samples, 0.02%)<sharded_slab::pool::RefMut<T,C> as core::ops::drop::Drop>::drop (2 samples, 0.02%)sharded_slab::page::slot::InitGuard<T,C>::release (2 samples, 0.02%)sharded_slab::page::slot::InitGuard<T,C>::release2 (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (12 samples, 0.10%)core::option::Option<T>::ok_or (4 samples, 0.03%)<core::option::Option<T> as core::ops::try::Try>::into_result (3 samples, 0.02%)core::option::Option<T>::ok_or (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::pop (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (3 samples, 0.02%)core::option::Option<T>::ok_or (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::create_with (43 samples, 0.34%)sharded_slab::pool::Pool<T,C>::create (33 samples, 0.26%)sharded_slab::shard::Shard<T,C>::init_with (20 samples, 0.16%)sharded_slab::page::Shared<T,C>::init_with (15 samples, 0.12%)sharded_slab::sync::inner::UnsafeCell<T>::with (7 samples, 0.06%)sharded_slab::page::Shared<T,C>::init_with::_{{closure}} (7 samples, 0.06%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (4 samples, 0.03%)sharded_slab::pool::Pool<T,C>::create::_{{closure}} (4 samples, 0.03%)<core::option::Option<T> as core::ops::try::Try>::into_result (4 samples, 0.03%)core::option::Option<T>::ok_or (4 samples, 0.03%)tracing::span::Span::make_with (663 samples, 5.32%)tracing..tracing_core::dispatcher::Dispatch::new_span (658 samples, 5.28%)tracin..<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::new_span (658 samples, 5.28%)<alloc..<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::new_span (658 samples, 5.28%)<traci..<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::new_span (94 samples, 0.75%)tracing::span::Span::child_of::_{{closure}} (669 samples, 5.36%)tracing..tracing::span::Span::child_of_with (669 samples, 5.36%)tracing..tracing_core::span::Attributes::child_of (2 samples, 0.02%)tracing::span::Span::child_of (682 samples, 5.47%)tracing..tracing_core::dispatcher::get_default (682 samples, 5.47%)tracing..std::thread::local::LocalKey<T>::try_with (680 samples, 5.45%)std::th..tracing_core::dispatcher::get_default::_{{closure}} (676 samples, 5.42%)tracing..tracing_core::dispatcher::Entered::current (7 samples, 0.06%)tracing_core::dispatcher::Dispatch::is (5 samples, 0.04%)<dyn tracing_core::subscriber::Subscriber>::is (4 samples, 0.03%)<dyn tracing_core::subscriber::Subscriber>::downcast_ref (4 samples, 0.03%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::downcast_raw (4 samples, 0.03%)<std::time::Instant as core::ops::arith::Sub>::sub (2 samples, 0.02%)std::time::Instant::duration_since (2 samples, 0.02%)std::sys::unix::time::inner::Instant::checked_sub_instant (2 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (4 samples, 0.03%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (4 samples, 0.03%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (4 samples, 0.03%)sharded_slab::page::slot::Guard<T,C>::release (4 samples, 0.03%)sharded_slab::page::slot::Slot<T,C>::release (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (5 samples, 0.04%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (5 samples, 0.04%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (5 samples, 0.04%)std::sys_common::rwlock::RWLock::write_unlock (5 samples, 0.04%)std::sys::unix::rwlock::RWLock::write_unlock (5 samples, 0.04%)std::sys::unix::rwlock::RWLock::raw_unlock (5 samples, 0.04%)__GI___pthread_rwlock_unlock (5 samples, 0.04%)std::time::Instant::now (11 samples, 0.09%)std::sys::unix::time::inner::Instant::now (9 samples, 0.07%)std::sys::unix::time::inner::now (9 samples, 0.07%)__clock_gettime (8 samples, 0.06%)__vdso_clock_gettime (7 samples, 0.06%)[[vdso]] (6 samples, 0.05%)<core::option::Option<T> as core::ops::try::Try>::into_result (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (4 samples, 0.03%)sharded_slab::pool::Pool<T,C>::get (2 samples, 0.02%)sharded_slab::shard::Shard<T,C>::with_slot (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (2 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (2 samples, 0.02%)tracing_subscriber::layer::Context<S>::span (13 samples, 0.10%)tracing_subscriber::registry::LookupSpan::span (13 samples, 0.10%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (11 samples, 0.09%)tracing_subscriber::registry::sharded::Registry::get (3 samples, 0.02%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_exit (38 samples, 0.30%)thread_local::ThreadLocal<T>::get (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get (3 samples, 0.02%)sharded_slab::shard::Shard<T,C>::with_slot (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (2 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (2 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (2 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (2 samples, 0.02%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::try_close (14 samples, 0.11%)tracing_subscriber::registry::sharded::Registry::get (5 samples, 0.04%)tracing_subscriber::registry::sharded::id_to_idx (2 samples, 0.02%)core::option::Option<T>::map (2 samples, 0.02%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close::_{{closure}} (2 samples, 0.02%)tracing_subscriber::registry::sharded::Registry::start_close (2 samples, 0.02%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::exit::_{{closure}} (19 samples, 0.15%)tracing_core::dispatcher::Dispatch::try_close (19 samples, 0.15%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::try_close (19 samples, 0.15%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::try_close (18 samples, 0.14%)tracing_core::dispatcher::get_default (23 samples, 0.18%)std::thread::local::LocalKey<T>::try_with (23 samples, 0.18%)tracing_core::dispatcher::get_default::_{{closure}} (22 samples, 0.18%)tracing_core::dispatcher::Entered::current (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Entered> (66 samples, 0.53%)<tracing::span::Entered as core::ops::drop::Drop>::drop (66 samples, 0.53%)tracing::span::Span::do_exit (66 samples, 0.53%)tracing_core::dispatcher::Dispatch::exit (66 samples, 0.53%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::exit (66 samples, 0.53%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::exit (28 samples, 0.22%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::exit (28 samples, 0.22%)tracing_subscriber::registry::stack::SpanStack::pop (3 samples, 0.02%)alloc::vec::Vec<T,A>::remove (3 samples, 0.02%)core::intrinsics::copy (2 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)<std::time::Instant as core::ops::arith::Sub>::sub (4 samples, 0.03%)std::time::Instant::duration_since (4 samples, 0.03%)std::sys::unix::time::inner::Instant::checked_sub_instant (4 samples, 0.03%)std::sys::unix::time::Timespec::sub_timespec (3 samples, 0.02%)core::ptr::drop_in_place<tracing_subscriber::registry::SpanRef<tracing_subscriber::registry::sharded::Registry>> (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::sharded::Data> (4 samples, 0.03%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (4 samples, 0.03%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (4 samples, 0.03%)sharded_slab::page::slot::Guard<T,C>::release (4 samples, 0.03%)sharded_slab::page::slot::Slot<T,C>::release (4 samples, 0.03%)core::ptr::drop_in_place<tracing_subscriber::registry::extensions::ExtensionsMut> (4 samples, 0.03%)core::ptr::drop_in_place<std::sync::rwlock::RwLockWriteGuard<tracing_subscriber::registry::extensions::ExtensionsInner>> (4 samples, 0.03%)<std::sync::rwlock::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)std::sys_common::rwlock::RWLock::write_unlock (4 samples, 0.03%)std::sys::unix::rwlock::RWLock::write_unlock (4 samples, 0.03%)std::sys::unix::rwlock::RWLock::raw_unlock (4 samples, 0.03%)__GI___pthread_rwlock_unlock (4 samples, 0.03%)std::time::Instant::now (8 samples, 0.06%)std::sys::unix::time::inner::Instant::now (8 samples, 0.06%)std::sys::unix::time::inner::now (8 samples, 0.06%)__clock_gettime (8 samples, 0.06%)__vdso_clock_gettime (8 samples, 0.06%)[[vdso]] (6 samples, 0.05%)<core::option::Option<T> as core::ops::try::Try>::into_result (2 samples, 0.02%)<core::option::Option<T> as core::ops::try::Try>::into_result (4 samples, 0.03%)tracing_subscriber::layer::Context<S>::span (10 samples, 0.08%)tracing_subscriber::registry::LookupSpan::span (10 samples, 0.08%)<tracing_subscriber::registry::sharded::Registry as tracing_subscriber::registry::LookupSpan>::span_data (8 samples, 0.06%)tracing_subscriber::registry::sharded::Registry::get (4 samples, 0.03%)sharded_slab::pool::Pool<T,C>::get (4 samples, 0.03%)sharded_slab::shard::Shard<T,C>::with_slot (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot (3 samples, 0.02%)sharded_slab::sync::inner::UnsafeCell<T>::with (3 samples, 0.02%)sharded_slab::page::Shared<T,C>::with_slot::_{{closure}} (3 samples, 0.02%)sharded_slab::pool::Pool<T,C>::get::_{{closure}} (2 samples, 0.02%)sharded_slab::page::slot::Slot<T,C>::get (2 samples, 0.02%)tracing_subscriber::registry::SpanRef<R>::extensions_mut (4 samples, 0.03%)<tracing_subscriber::registry::sharded::Data as tracing_subscriber::registry::SpanData>::extensions_mut (3 samples, 0.02%)std::sync::rwlock::RwLock<T>::write (3 samples, 0.02%)std::sys_common::rwlock::RWLock::write (3 samples, 0.02%)std::sys::unix::rwlock::RWLock::write (3 samples, 0.02%)__GI___pthread_rwlock_wrlock (3 samples, 0.02%)<tracing_opentelemetry::layer::OpenTelemetryLayer<S,T> as tracing_subscriber::layer::Layer<S>>::on_enter (36 samples, 0.29%)core::option::Option<T>::unwrap_or_else (13 samples, 0.10%)core::ptr::drop_in_place<sharded_slab::pool::Ref<tracing_subscriber::registry::sharded::DataInner>> (5 samples, 0.04%)<sharded_slab::pool::Ref<T,C> as core::ops::drop::Drop>::drop (5 samples, 0.04%)sharded_slab::page::slot::Guard<T,C>::release (5 samples, 0.04%)sharded_slab::page::slot::Slot<T,C>::release (5 samples, 0.04%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::clone_span (24 samples, 0.19%)tracing_subscriber::registry::sharded::Registry::get (2 samples, 0.02%)core::cell::RefCell<T>::borrow_mut (2 samples, 0.02%)core::cell::RefCell<T>::try_borrow_mut (2 samples, 0.02%)core::cell::BorrowRefMut::new (2 samples, 0.02%)thread_local::ThreadLocal<T>::get_inner (5 samples, 0.04%)thread_local::ThreadLocal<T>::get_or_default (7 samples, 0.06%)thread_local::ThreadLocal<T>::get_or (7 samples, 0.06%)thread_local::ThreadLocal<T>::get_or_try (7 samples, 0.06%)thread_local::thread_id::get (2 samples, 0.02%)tracing::span::Span::in_scope (143 samples, 1.15%)tracing::span::Span::enter (77 samples, 0.62%)tracing::span::Span::do_enter (77 samples, 0.62%)tracing_core::dispatcher::Dispatch::enter (77 samples, 0.62%)<alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::enter (77 samples, 0.62%)<tracing_subscriber::layer::Layered<L,S> as tracing_core::subscriber::Subscriber>::enter (41 samples, 0.33%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::enter (13 samples, 0.10%)tracing_subscriber::registry::stack::SpanStack::push (4 samples, 0.03%)alloc::vec::Vec<T,A>::push (4 samples, 0.03%)core::ptr::write (4 samples, 0.03%)fred::trace::enabled::set_network_span (841 samples, 6.74%)fred::tra..tracing_core::field::FieldSet::iter (4 samples, 0.03%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<parking_lot::raw_rwlock::RawRwLock,core::option::Option<tokio::sync::oneshot::Sender<()>>>> (4 samples, 0.03%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (4 samples, 0.03%)fred::utils::is_locked_some (16 samples, 0.13%)lock_api::rwlock::RwLock<R,T>::read (12 samples, 0.10%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (12 samples, 0.10%)parking_lot::raw_rwlock::RawRwLock::try_lock_shared_fast (10 samples, 0.08%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,572 samples, 20.62%)<core::future::from_generator::G..fred::protocol::connection::write_command::_{{closure}} (2,565 samples, 20.57%)fred::protocol::connection::writ..std::time::Instant::now (6 samples, 0.05%)std::sys::unix::time::inner::Instant::now (5 samples, 0.04%)std::sys::unix::time::inner::now (5 samples, 0.04%)__clock_gettime (5 samples, 0.04%)__vdso_clock_gettime (5 samples, 0.04%)[[vdso]] (4 samples, 0.03%)[libc-2.28.so] (8 samples, 0.06%)alloc::collections::vec_deque::VecDeque<T>::push_back (4 samples, 0.03%)alloc::collections::vec_deque::VecDeque<T>::buffer_write (4 samples, 0.03%)core::ptr::write (4 samples, 0.03%)[libc-2.28.so] (4 samples, 0.03%)fred::multiplexer::commands::handle_command::_{{closure}} (2,595 samples, 20.81%)fred::multiplexer::commands::hand..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,595 samples, 20.81%)<core::future::from_generator::Ge..fred::multiplexer::commands::write_command_t::_{{closure}} (2,595 samples, 20.81%)fred::multiplexer::commands::writ..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,595 samples, 20.81%)<core::future::from_generator::Ge..fred::multiplexer::commands::write_command::_{{closure}} (2,595 samples, 20.81%)fred::multiplexer::commands::writ..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,595 samples, 20.81%)<core::future::from_generator::Ge..fred::multiplexer::Multiplexer::write::_{{closure}} (2,595 samples, 20.81%)fred::multiplexer::Multiplexer::w..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,595 samples, 20.81%)<core::future::from_generator::Ge..fred::multiplexer::utils::write_centralized_command::_{{closure}} (2,595 samples, 20.81%)fred::multiplexer::utils::write_c..<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (2,595 samples, 20.81%)<core::future::from_generator::Ge..fred::multiplexer::utils::write_command::_{{closure}} (2,588 samples, 20.75%)fred::multiplexer::utils::write_c..[libc-2.28.so] (2 samples, 0.02%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (3 samples, 0.02%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (4 samples, 0.03%)[libc-2.28.so] (2 samples, 0.02%)[libc-2.28.so] (6 samples, 0.05%)<F as futures_core::future::TryFuture>::try_poll (36 samples, 0.29%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (36 samples, 0.29%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (31 samples, 0.25%)core::ptr::drop_in_place<core::future::from_generator::GenFuture<fred::multiplexer::responses::process_centralized_frame::{{closure}}>> (7 samples, 0.06%)core::ptr::drop_in_place<fred::multiplexer::responses::process_centralized_frame::{{closure}}> (5 samples, 0.04%)<core::result::Result<T,E> as core::ops::try::Try>::into_result (5 samples, 0.04%)bytes::bytes_mut::BytesMut::split_to (4 samples, 0.03%)bytes::bytes_mut::BytesMut::shallow_clone (2 samples, 0.02%)bytes::bytes_mut::increment_shared (2 samples, 0.02%)bytes::bytes_mut::BytesMut::kind (2 samples, 0.02%)core::ptr::drop_in_place<bytes::bytes_mut::BytesMut> (5 samples, 0.04%)<bytes::bytes_mut::BytesMut as core::ops::drop::Drop>::drop (5 samples, 0.04%)bytes::bytes_mut::release_shared (3 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,fred::metrics::SizeStats>> (10 samples, 0.08%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (10 samples, 0.08%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (10 samples, 0.08%)fred::metrics::SizeStats::sample (8 samples, 0.06%)lock_api::rwlock::RwLock<R,T>::write (6 samples, 0.05%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (6 samples, 0.05%)redis_protocol::decode::frame_type (9 samples, 0.07%)core::str::converts::from_utf8 (10 samples, 0.08%)core::str::validations::run_utf8_validation (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (4 samples, 0.03%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (4 samples, 0.03%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (4 samples, 0.03%)[libc-2.28.so] (3 samples, 0.02%)<&[u8] as nom::traits::FindSubstring<&[u8]>>::find_substring (9 samples, 0.07%)memchr::memchr::memchr (3 samples, 0.02%)memchr::memchr::memchr::imp (3 samples, 0.02%)memchr::memchr::x86::memchr (3 samples, 0.02%)memchr::memchr::x86::avx::memchr (2 samples, 0.02%)redis_protocol::decode::read_to_crlf_s (28 samples, 0.22%)redis_protocol::decode::read_to_crlf (14 samples, 0.11%)<fred::protocol::codec::RedisCodec as tokio_util::codec::decoder::Decoder>::decode (93 samples, 0.75%)fred::protocol::codec::decode_frame (92 samples, 0.74%)redis_protocol::decode::decode_bytes (58 samples, 0.47%)redis_protocol::decode::decode (53 samples, 0.42%)redis_protocol::decode::parse_frame (50 samples, 0.40%)redis_protocol::decode::parse_integer (34 samples, 0.27%)redis_protocol::decode::to_i64 (6 samples, 0.05%)core::str::<impl str>::parse (6 samples, 0.05%)core::num::<impl core::str::traits::FromStr for i64>::from_str (6 samples, 0.05%)core::num::from_str_radix (6 samples, 0.05%)core::str::<impl str>::is_empty (2 samples, 0.02%)<tokio_util::codec::framed_impl::RWFrames as core::borrow::BorrowMut<tokio_util::codec::framed_impl::ReadFrame>>::borrow_mut (4 samples, 0.03%)tokio::io::driver::Handle::inner (2 samples, 0.02%)alloc::sync::Weak<T>::upgrade (2 samples, 0.02%)tokio::io::driver::registration::Registration::poll_ready (4 samples, 0.03%)skb_release_all (2 samples, 0.02%)skb_release_head_state (2 samples, 0.02%)__kfree_skb (4 samples, 0.03%)skb_release_data (2 samples, 0.02%)kmem_cache_free (3 samples, 0.02%)__slab_free (3 samples, 0.02%)lock_sock_nested (3 samples, 0.02%)_raw_spin_lock_bh (3 samples, 0.02%)native_queued_spin_lock_slowpath (3 samples, 0.02%)__release_sock (2 samples, 0.02%)tcp_v4_do_rcv (2 samples, 0.02%)tcp_rcv_established (2 samples, 0.02%)release_sock (3 samples, 0.02%)skb_copy_datagram_iter (9 samples, 0.07%)_copy_to_iter (5 samples, 0.04%)copyout (4 samples, 0.03%)copy_user_generic_string (3 samples, 0.02%)tcp_cleanup_rbuf (3 samples, 0.02%)inet_recvmsg (33 samples, 0.26%)tcp_recvmsg (33 samples, 0.26%)entry_SYSCALL_64_after_hwframe (45 samples, 0.36%)do_syscall_64 (44 samples, 0.35%)__x64_sys_recvfrom (44 samples, 0.35%)__sys_recvfrom (41 samples, 0.33%)sockfd_lookup_light (6 samples, 0.05%)__fget_light (6 samples, 0.05%)__fget (6 samples, 0.05%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_read::AsyncRead>::poll_read (53 samples, 0.42%)tokio::net::tcp::stream::TcpStream::poll_read_priv (53 samples, 0.42%)tokio::io::poll_evented::PollEvented<E>::poll_read (53 samples, 0.42%)tokio::io::driver::registration::Registration::poll_read_io (53 samples, 0.42%)tokio::io::driver::registration::Registration::poll_io (53 samples, 0.42%)tokio::io::poll_evented::PollEvented<E>::poll_read::_{{closure}} (48 samples, 0.38%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read (48 samples, 0.38%)mio::io_source::IoSource<T>::do_io (47 samples, 0.38%)mio::sys::unix::IoSourceState::do_io (47 samples, 0.38%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read::_{{closure}} (47 samples, 0.38%)<&std::net::tcp::TcpStream as std::io::Read>::read (47 samples, 0.38%)std::sys_common::net::TcpStream::read (47 samples, 0.38%)std::sys::unix::net::Socket::read (47 samples, 0.38%)std::sys::unix::net::Socket::recv_with_flags (47 samples, 0.38%)__libc_recv (47 samples, 0.38%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (198 samples, 1.59%)futures_util::future::future::FutureExt::poll_unpin (198 samples, 1.59%)<core::pin::Pin<P> as core::future::future::Future>::poll (198 samples, 1.59%)<core::pin::Pin<P> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (198 samples, 1.59%)<F as futures_core::future::TryFuture>::try_poll (198 samples, 1.59%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (198 samples, 1.59%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (198 samples, 1.59%)<F as futures_core::future::TryFuture>::try_poll (198 samples, 1.59%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (198 samples, 1.59%)<S as futures_core::stream::TryStream>::try_poll_next (162 samples, 1.30%)<futures_util::stream::stream::split::SplitStream<S> as futures_core::stream::Stream>::poll_next (162 samples, 1.30%)<tokio_util::codec::framed::Framed<T,U> as futures_core::stream::Stream>::poll_next (162 samples, 1.30%)<tokio_util::codec::framed_impl::FramedImpl<T,U,R> as futures_core::stream::Stream>::poll_next (162 samples, 1.30%)tokio_util::util::poll_read_buf (58 samples, 0.47%)do_sched_yield (2 samples, 0.02%)__sched_yield (5 samples, 0.04%)entry_SYSCALL_64_after_hwframe (5 samples, 0.04%)do_syscall_64 (5 samples, 0.04%)__x64_sys_sched_yield (5 samples, 0.04%)schedule (3 samples, 0.02%)__schedule (3 samples, 0.02%)pick_next_task_fair (3 samples, 0.02%)update_curr (2 samples, 0.02%)cpuacct_charge (2 samples, 0.02%)fred::utils::send_command (16 samples, 0.13%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (16 samples, 0.13%)tokio::sync::mpsc::chan::Tx<T,S>::send (16 samples, 0.13%)tokio::sync::mpsc::chan::Chan<T,S>::send (16 samples, 0.13%)tokio::sync::mpsc::list::Tx<T>::push (16 samples, 0.13%)tokio::sync::mpsc::list::Tx<T>::find_block (16 samples, 0.13%)syscall (3 samples, 0.02%)entry_SYSCALL_64 (3 samples, 0.02%)[libc-2.28.so] (6 samples, 0.05%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (18 samples, 0.14%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (11 samples, 0.09%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (11 samples, 0.09%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (11 samples, 0.09%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (11 samples, 0.09%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (11 samples, 0.09%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (49 samples, 0.39%)tokio::runtime::task::harness::poll_future::_{{closure}} (49 samples, 0.39%)tokio::runtime::task::core::CoreStage<T>::poll (49 samples, 0.39%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (47 samples, 0.38%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (43 samples, 0.34%)<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (19 samples, 0.15%)tokio::runtime::thread_pool::worker::Launch::launch::_{{closure}} (19 samples, 0.15%)tokio::runtime::thread_pool::worker::run (19 samples, 0.15%)tokio::macros::scoped_tls::ScopedKey<T>::set (19 samples, 0.15%)tokio::runtime::thread_pool::worker::run::_{{closure}} (19 samples, 0.15%)tokio::runtime::thread_pool::worker::Context::run (19 samples, 0.15%)tokio::runtime::thread_pool::worker::Context::run_task (19 samples, 0.15%)tokio::coop::budget (19 samples, 0.15%)tokio::coop::with_budget (19 samples, 0.15%)std::thread::local::LocalKey<T>::with (19 samples, 0.15%)std::thread::local::LocalKey<T>::try_with (19 samples, 0.15%)tokio::coop::with_budget::_{{closure}} (19 samples, 0.15%)tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (19 samples, 0.15%)tokio::runtime::task::Notified<S>::run (19 samples, 0.15%)tokio::runtime::task::raw::RawTask::poll (19 samples, 0.15%)tokio::runtime::task::harness::Harness<T,S>::poll (19 samples, 0.15%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (19 samples, 0.15%)tokio::runtime::task::harness::poll_future (19 samples, 0.15%)std::panic::catch_unwind (19 samples, 0.15%)std::panicking::try (19 samples, 0.15%)std::panicking::try::do_call (19 samples, 0.15%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (19 samples, 0.15%)tokio::runtime::task::harness::poll_future::_{{closure}} (19 samples, 0.15%)tokio::runtime::task::core::CoreStage<T>::poll (19 samples, 0.15%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (19 samples, 0.15%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (19 samples, 0.15%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (19 samples, 0.15%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (15 samples, 0.12%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (4 samples, 0.03%)std::panic::catch_unwind (56 samples, 0.45%)std::panicking::try (56 samples, 0.45%)std::panicking::try::do_call (56 samples, 0.45%)core::mem::manually_drop::ManuallyDrop<T>::new (7 samples, 0.06%)[libc-2.28.so] (7 samples, 0.06%)tokio::runtime::task::state::State::transition_to_idle (2 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::poll (61 samples, 0.49%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (61 samples, 0.49%)tokio::runtime::task::harness::poll_future (61 samples, 0.49%)tokio::sync::oneshot::State::is_closed (2 samples, 0.02%)__rust_probestack (7 samples, 0.06%)fred::client::RedisClient::connect::_{{closure}} (20 samples, 0.16%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (15 samples, 0.12%)fred::multiplexer::commands::init::_{{closure}} (15 samples, 0.12%)<futures_util::stream::try_stream::try_fold::TryFold<St,Fut,T,F> as core::future::future::Future>::poll (9 samples, 0.07%)__rust_probestack (4 samples, 0.03%)<core::pin::Pin<P> as futures_core::future::FusedFuture>::is_terminated (5 samples, 0.04%)<core::pin::Pin<P> as futures_core::future::FusedFuture>::is_terminated (5 samples, 0.04%)<futures_util::future::future::fuse::Fuse<Fut> as futures_core::future::FusedFuture>::is_terminated (5 samples, 0.04%)core::option::Option<T>::is_none (2 samples, 0.02%)core::option::Option<T>::is_some (2 samples, 0.02%)[libc-2.28.so] (4 samples, 0.03%)<F as futures_core::future::TryFuture>::try_poll (2 samples, 0.02%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (2 samples, 0.02%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (2 samples, 0.02%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (2 samples, 0.02%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (9 samples, 0.07%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (9 samples, 0.07%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (9 samples, 0.07%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (9 samples, 0.07%)tokio::runtime::task::harness::poll_future (50 samples, 0.40%)std::panic::catch_unwind (50 samples, 0.40%)std::panicking::try (50 samples, 0.40%)std::panicking::try::do_call (50 samples, 0.40%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (50 samples, 0.40%)tokio::runtime::task::harness::poll_future::_{{closure}} (50 samples, 0.40%)tokio::runtime::task::core::CoreStage<T>::poll (50 samples, 0.40%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (50 samples, 0.40%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (50 samples, 0.40%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (50 samples, 0.40%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (23 samples, 0.18%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (23 samples, 0.18%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (23 samples, 0.18%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (23 samples, 0.18%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (23 samples, 0.18%)futures_util::future::future::FutureExt::poll_unpin (14 samples, 0.11%)<core::pin::Pin<P> as core::future::future::Future>::poll (14 samples, 0.11%)<core::pin::Pin<P> as core::future::future::Future>::poll (14 samples, 0.11%)<futures_util::future::future::fuse::Fuse<Fut> as core::future::future::Future>::poll (14 samples, 0.11%)<futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll (4 samples, 0.03%)<futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll (4 samples, 0.03%)<futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll (4 samples, 0.03%)<F as futures_core::future::TryFuture>::try_poll (4 samples, 0.03%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (4 samples, 0.03%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.03%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.03%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (2 samples, 0.02%)<F as futures_core::future::TryFuture>::try_poll (2 samples, 0.02%)<futures_util::future::try_future::ErrInto<Fut,E> as core::future::future::Future>::poll (2 samples, 0.02%)<futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll (2 samples, 0.02%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (2 samples, 0.02%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (2 samples, 0.02%)core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (5 samples, 0.04%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}}::_{{closure}} (3 samples, 0.02%)[unknown] (8,365 samples, 67.07%)[unknown]tokio::runtime::thread_pool::worker::Context::run (12 samples, 0.10%)tokio::runtime::thread_pool::worker::Context::run_task (12 samples, 0.10%)tokio::coop::budget (12 samples, 0.10%)tokio::coop::with_budget (12 samples, 0.10%)std::thread::local::LocalKey<T>::with (12 samples, 0.10%)std::thread::local::LocalKey<T>::try_with (12 samples, 0.10%)tokio::coop::with_budget::_{{closure}} (12 samples, 0.10%)tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (12 samples, 0.10%)tokio::runtime::task::Notified<S>::run (12 samples, 0.10%)tokio::runtime::task::raw::RawTask::poll (12 samples, 0.10%)tokio::runtime::task::harness::Harness<T,S>::poll (12 samples, 0.10%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (12 samples, 0.10%)tokio::runtime::task::harness::poll_future (12 samples, 0.10%)std::panic::catch_unwind (12 samples, 0.10%)std::panicking::try (12 samples, 0.10%)std::panicking::try::do_call (12 samples, 0.10%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (12 samples, 0.10%)tokio::runtime::task::harness::poll_future::_{{closure}} (12 samples, 0.10%)tokio::runtime::task::core::CoreStage<T>::poll (12 samples, 0.10%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (12 samples, 0.10%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (12 samples, 0.10%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (12 samples, 0.10%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}} (12 samples, 0.10%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (12 samples, 0.10%)fred::multiplexer::utils::spawn_centralized_listener::_{{closure}}::_{{closure}} (12 samples, 0.10%)futures_util::async_await::random::shuffle (5 samples, 0.04%)futures_util::async_await::random::gen_index (4 samples, 0.03%)__libc_thread_freeres (6 samples, 0.05%)[libc-2.28.so] (6 samples, 0.05%)page_fault (6 samples, 0.05%)__do_page_fault (6 samples, 0.05%)down_read (6 samples, 0.05%)call_rwsem_down_read_failed (6 samples, 0.05%)rwsem_down_read_failed (6 samples, 0.05%)schedule (6 samples, 0.05%)__schedule (6 samples, 0.05%)finish_task_switch (6 samples, 0.05%)call_function_interrupt (6 samples, 0.05%)smp_call_function_interrupt (6 samples, 0.05%)irq_enter (6 samples, 0.05%)rcu_nmi_enter (6 samples, 0.05%)entry_SYSCALL_64_after_hwframe (5 samples, 0.04%)do_syscall_64 (5 samples, 0.04%)__x64_sys_set_robust_list (5 samples, 0.04%)madvise (4 samples, 0.03%)entry_SYSCALL_64_after_hwframe (4 samples, 0.03%)do_syscall_64 (4 samples, 0.03%)__x64_sys_madvise (4 samples, 0.03%)zap_page_range (4 samples, 0.03%)tlb_finish_mmu (4 samples, 0.03%)arch_tlb_finish_mmu (4 samples, 0.03%)flush_tlb_mm_range (4 samples, 0.03%)smp_call_function_many (4 samples, 0.03%)<parking_lot_core::thread_parker::imp::UnparkHandle as parking_lot_core::thread_parker::UnparkHandleT>::unpark (2 samples, 0.02%)syscall (2 samples, 0.02%)entry_SYSCALL_64_after_hwframe (2 samples, 0.02%)do_syscall_64 (2 samples, 0.02%)__x64_sys_futex (2 samples, 0.02%)do_futex (2 samples, 0.02%)futex_wake (2 samples, 0.02%)core::mem::drop (3 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::runtime::blocking::pool::Shared>> (3 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (3 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (3 samples, 0.02%)parking_lot::raw_mutex::RawMutex::unlock_slow (3 samples, 0.02%)parking_lot_core::parking_lot::unpark_one (3 samples, 0.02%)tokio::loom::std::parking_lot::Condvar::wait_timeout (6 samples, 0.05%)parking_lot::condvar::Condvar::wait_for (6 samples, 0.05%)parking_lot::condvar::Condvar::wait_until_internal (6 samples, 0.05%)parking_lot_core::parking_lot::park (6 samples, 0.05%)parking_lot_core::parking_lot::with_thread_data (6 samples, 0.05%)parking_lot_core::parking_lot::park::_{{closure}} (6 samples, 0.05%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park_until (6 samples, 0.05%)core::sync::atomic::AtomicI32::load (6 samples, 0.05%)core::sync::atomic::atomic_load (6 samples, 0.05%)entry_SYSCALL_64 (5 samples, 0.04%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (11 samples, 0.09%)parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (11 samples, 0.09%)syscall (11 samples, 0.09%)entry_SYSCALL_64_after_hwframe (6 samples, 0.05%)parking_lot_core::parking_lot::lock_bucket (10 samples, 0.08%)parking_lot_core::word_lock::WordLock::lock (10 samples, 0.08%)parking_lot_core::word_lock::WordLock::lock_slow (5 samples, 0.04%)parking_lot_core::spinwait::SpinWait::spin (5 samples, 0.04%)parking_lot_core::spinwait::cpu_relax (5 samples, 0.04%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (5 samples, 0.04%)tokio::loom::std::parking_lot::Mutex<T>::lock (22 samples, 0.18%)lock_api::mutex::Mutex<R,T>::lock (22 samples, 0.18%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (22 samples, 0.18%)parking_lot::raw_mutex::RawMutex::lock_slow (22 samples, 0.18%)parking_lot_core::parking_lot::park (22 samples, 0.18%)parking_lot_core::parking_lot::with_thread_data (22 samples, 0.18%)parking_lot_core::parking_lot::park::_{{closure}} (22 samples, 0.18%)<tokio::runtime::park::Parker as tokio::park::Park>::park_timeout (4 samples, 0.03%)tokio::runtime::thread_pool::worker::Context::park_timeout (5 samples, 0.04%)tokio::runtime::thread_pool::worker::Context::maintenance (7 samples, 0.06%)tokio::runtime::thread_pool::worker::Core::maintenance (2 samples, 0.02%)tokio::runtime::task::inject::Inject<T>::is_closed (2 samples, 0.02%)tokio::loom::std::parking_lot::Mutex<T>::lock (2 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (2 samples, 0.02%)entry_SYSCALL_64 (23 samples, 0.18%)_raw_spin_lock (7 samples, 0.06%)do_sched_yield (50 samples, 0.40%)yield_task_fair (28 samples, 0.22%)_raw_spin_lock (4 samples, 0.03%)apic_timer_interrupt (2 samples, 0.02%)smp_apic_timer_interrupt (2 samples, 0.02%)hrtimer_interrupt (2 samples, 0.02%)__hrtimer_run_queues (2 samples, 0.02%)__list_add_valid (5 samples, 0.04%)__list_del_entry_valid (2 samples, 0.02%)pick_next_entity (14 samples, 0.11%)clear_buddies (4 samples, 0.03%)__calc_delta (20 samples, 0.16%)__cgroup_account_cputime (3 samples, 0.02%)cpuacct_charge (56 samples, 0.45%)pick_next_task_fair (203 samples, 1.63%)update_curr (111 samples, 0.89%)update_min_vruntime (21 samples, 0.17%)entry_SYSCALL_64_after_hwframe (364 samples, 2.92%)en..do_syscall_64 (356 samples, 2.85%)do..__x64_sys_sched_yield (347 samples, 2.78%)__..schedule (289 samples, 2.32%)s..__schedule (280 samples, 2.25%)_..update_rq_clock (29 samples, 0.23%)sched_clock_cpu (27 samples, 0.22%)sched_clock (24 samples, 0.19%)native_sched_clock (24 samples, 0.19%)__sched_yield (410 samples, 3.29%)__s..syscall_return_via_sysret (12 samples, 0.10%)parking_lot::condvar::Condvar::wait_until_internal (5 samples, 0.04%)parking_lot_core::parking_lot::park (5 samples, 0.04%)parking_lot_core::parking_lot::with_thread_data (5 samples, 0.04%)parking_lot_core::parking_lot::park::_{{closure}} (5 samples, 0.04%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (5 samples, 0.04%)parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (5 samples, 0.04%)syscall (5 samples, 0.04%)entry_SYSCALL_64 (5 samples, 0.04%)std::thread::yield_now (3 samples, 0.02%)std::sys::unix::thread::Thread::yield_now (3 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,()>> (10 samples, 0.08%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (10 samples, 0.08%)core::sync::atomic::AtomicUsize::compare_exchange (17 samples, 0.14%)core::sync::atomic::atomic_compare_exchange (17 samples, 0.14%)__sched_yield (12 samples, 0.10%)entry_SYSCALL_64 (12 samples, 0.10%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (17 samples, 0.14%)core::sync::atomic::AtomicI32::load (195 samples, 1.56%)core::sync::atomic::atomic_load (195 samples, 1.56%)apic_timer_interrupt (2 samples, 0.02%)_raw_spin_lock (4 samples, 0.03%)__const_udelay (19 samples, 0.15%)amd_pmu_addr_offset (5 samples, 0.04%)delay_mwaitx (155 samples, 1.24%)amd_pmu_wait_on_overflow (231 samples, 1.85%)a..native_read_msr (43 samples, 0.34%)__x86_indirect_thunk_rdx (2 samples, 0.02%)amd_pmu_addr_offset (20 samples, 0.16%)native_read_msr (75 samples, 0.60%)amd_pmu_disable_all (460 samples, 3.69%)amd_..x86_pmu_disable_all (226 samples, 1.81%)x..native_write_msr (113 samples, 0.91%)sched_clock_cpu (8 samples, 0.06%)sched_clock (8 samples, 0.06%)native_sched_clock (8 samples, 0.06%)__perf_event_task_sched_out (492 samples, 3.94%)__pe..ctx_sched_out (475 samples, 3.81%)ctx_..x86_pmu_disable (4 samples, 0.03%)deactivate_task (7 samples, 0.06%)account_entity_dequeue (3 samples, 0.02%)reweight_entity (9 samples, 0.07%)update_cfs_group (16 samples, 0.13%)cpuacct_charge (2 samples, 0.02%)update_curr (7 samples, 0.06%)update_min_vruntime (3 samples, 0.02%)__update_load_avg_cfs_rq (12 samples, 0.10%)__update_load_avg_se (7 samples, 0.06%)dequeue_entity (83 samples, 0.67%)update_load_avg (39 samples, 0.31%)dequeue_task_fair (98 samples, 0.79%)update_min_vruntime (3 samples, 0.02%)__mmdrop (6 samples, 0.05%)__free_pages_ok (6 samples, 0.05%)memcg_kmem_uncharge (6 samples, 0.05%)page_counter_uncharge (6 samples, 0.05%)page_counter_cancel (6 samples, 0.05%)finish_task_switch (12 samples, 0.10%)__perf_event_task_sched_in (6 samples, 0.05%)x86_pmu_enable_all (6 samples, 0.05%)native_write_msr (6 samples, 0.05%)load_balance (6 samples, 0.05%)find_busiest_group (5 samples, 0.04%)update_nohz_stats (2 samples, 0.02%)pick_next_task_fair (24 samples, 0.19%)update_blocked_averages (2 samples, 0.02%)__update_idle_core (6 samples, 0.05%)pick_next_task_idle (28 samples, 0.22%)put_prev_task_fair (13 samples, 0.10%)put_prev_entity (9 samples, 0.07%)futex_wait_queue_me (698 samples, 5.60%)futex_w..schedule (684 samples, 5.48%)schedule__schedule (684 samples, 5.48%)__sched..update_rq_clock (9 samples, 0.07%)sched_clock_cpu (8 samples, 0.06%)sched_clock (8 samples, 0.06%)native_sched_clock (8 samples, 0.06%)get_futex_key (12 samples, 0.10%)get_futex_key_refs.isra.12 (3 samples, 0.02%)get_futex_value_locked (9 samples, 0.07%)entry_SYSCALL_64_after_hwframe (915 samples, 7.34%)entry_SYSC..do_syscall_64 (850 samples, 6.82%)do_syscal..__x64_sys_futex (808 samples, 6.48%)__x64_sy..do_futex (793 samples, 6.36%)do_futexfutex_wait (768 samples, 6.16%)futex_wa..futex_wait_setup (60 samples, 0.48%)hash_futex (5 samples, 0.04%)irq_work_interrupt (4 samples, 0.03%)smp_irq_work_interrupt (4 samples, 0.03%)irq_work_run (4 samples, 0.03%)irq_work_run_list (4 samples, 0.03%)perf_pending_event (4 samples, 0.03%)perf_event_wakeup (4 samples, 0.03%)__wake_up_common_lock (4 samples, 0.03%)__wake_up_common (4 samples, 0.03%)pollwake (4 samples, 0.03%)try_to_wake_up (4 samples, 0.03%)parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (1,077 samples, 8.64%)parking_lot_..syscall (1,077 samples, 8.64%)syscallsyscall_return_via_sysret (17 samples, 0.14%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (1,519 samples, 12.18%)<parking_lot_core:..core::ops::function::FnOnce::call_once (6 samples, 0.05%)parking_lot::condvar::Condvar::wait_until_internal::_{{closure}} (6 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (6 samples, 0.05%)parking_lot_core::parking_lot::lock_bucket (12 samples, 0.10%)parking_lot_core::word_lock::WordLock::lock (12 samples, 0.10%)parking_lot_core::parking_lot::park::_{{closure}} (1,566 samples, 12.56%)parking_lot_core::p..parking_lot_core::word_lock::WordLock::unlock (13 samples, 0.10%)core::sync::atomic::AtomicUsize::fetch_sub (13 samples, 0.10%)core::sync::atomic::atomic_sub (13 samples, 0.10%)tokio::runtime::park::Inner::park_condvar (1,628 samples, 13.05%)tokio::runtime::park..tokio::loom::std::parking_lot::Condvar::wait (1,599 samples, 12.82%)tokio::loom::std::p..parking_lot::condvar::Condvar::wait (1,599 samples, 12.82%)parking_lot::condva..parking_lot::condvar::Condvar::wait_until_internal (1,587 samples, 12.72%)parking_lot::condva..parking_lot_core::parking_lot::park (1,570 samples, 12.59%)parking_lot_core::p..parking_lot_core::parking_lot::with_thread_data (1,570 samples, 12.59%)parking_lot_core::p..std::thread::local::LocalKey<T>::try_with (4 samples, 0.03%)parking_lot_core::parking_lot::with_thread_data::THREAD_DATA::__getit (4 samples, 0.03%)std::thread::local::fast::Key<T>::get (2 samples, 0.02%)std::thread::local::lazy::LazyKeyInner<T>::get (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)<mio::event::events::Iter as core::iter::traits::iterator::Iterator>::next (5 samples, 0.04%)mio::event::events::Events::iter (3 samples, 0.02%)[libc-2.28.so] (2 samples, 0.02%)__fget_light (3 samples, 0.02%)__fget (3 samples, 0.02%)__list_del_entry_valid (6 samples, 0.05%)eventfd_poll (12 samples, 0.10%)ep_send_events_proc (199 samples, 1.60%)ep_item_poll.isra.18 (155 samples, 1.24%)sock_poll (84 samples, 0.67%)tcp_poll (40 samples, 0.32%)tcp_stream_memory_free (2 samples, 0.02%)mutex_lock (18 samples, 0.14%)_cond_resched (6 samples, 0.05%)rcu_all_qs (6 samples, 0.05%)ep_scan_ready_list.constprop.22 (218 samples, 1.75%)__const_udelay (4 samples, 0.03%)amd_pmu_addr_offset (3 samples, 0.02%)delay_mwaitx (42 samples, 0.34%)amd_pmu_wait_on_overflow (64 samples, 0.51%)native_read_msr (13 samples, 0.10%)amd_pmu_addr_offset (5 samples, 0.04%)native_read_msr (17 samples, 0.14%)amd_pmu_disable_all (135 samples, 1.08%)x86_pmu_disable_all (67 samples, 0.54%)native_write_msr (39 samples, 0.31%)__perf_event_task_sched_out (139 samples, 1.11%)ctx_sched_out (136 samples, 1.09%)update_cfs_group (4 samples, 0.03%)update_curr (2 samples, 0.02%)dequeue_task_fair (16 samples, 0.13%)dequeue_entity (15 samples, 0.12%)update_load_avg (5 samples, 0.04%)pick_next_task_fair (2 samples, 0.02%)entry_SYSCALL_64_after_hwframe (401 samples, 3.22%)ent..do_syscall_64 (399 samples, 3.20%)do_..__x64_sys_epoll_wait (390 samples, 3.13%)__x..do_epoll_wait (389 samples, 3.12%)do_..ep_poll (383 samples, 3.07%)ep_..schedule_hrtimeout_range_clock (163 samples, 1.31%)schedule (163 samples, 1.31%)__schedule (162 samples, 1.30%)mio::poll::Poll::poll (415 samples, 3.33%)mio..mio::sys::unix::selector::epoll::Selector::select (415 samples, 3.33%)mio..epoll_wait (414 samples, 3.32%)epo..syscall_return_via_sysret (2 samples, 0.02%)core::option::Option<T>::unwrap (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)tokio::io::driver::scheduled_io::ScheduledIo::set_readiness (12 samples, 0.10%)tokio::util::bit::Pack::unpack (2 samples, 0.02%)tokio::util::bit::unpack (2 samples, 0.02%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 32]> (5 samples, 0.04%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (5 samples, 0.04%)tokio::io::driver::scheduled_io::ScheduledIo::wake (12 samples, 0.10%)tokio::io::driver::scheduled_io::ScheduledIo::wake0 (12 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::lock (3 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (3 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (3 samples, 0.02%)<tokio::io::driver::Driver as tokio::park::Park>::park (466 samples, 3.74%)<tok..tokio::io::driver::Driver::turn (466 samples, 3.74%)toki..tokio::io::driver::Driver::dispatch (28 samples, 0.22%)tokio::util::slab::Slab<T>::get (2 samples, 0.02%)tokio::coop::poll_proceed (2 samples, 0.02%)std::thread::local::LocalKey<T>::with (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)<tokio::signal::unix::driver::Driver as tokio::park::Park>::park (481 samples, 3.86%)<tok..tokio::signal::unix::driver::Driver::process (14 samples, 0.11%)tokio::io::driver::registration::Registration::poll_read_ready (12 samples, 0.10%)tokio::io::driver::registration::Registration::poll_ready (12 samples, 0.10%)tokio::io::driver::scheduled_io::ScheduledIo::poll_readiness (6 samples, 0.05%)tokio::loom::std::parking_lot::Mutex<T>::lock (3 samples, 0.02%)lock_api::mutex::Mutex<R,T>::lock (3 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (3 samples, 0.02%)core::sync::atomic::AtomicU8::compare_exchange_weak (3 samples, 0.02%)core::sync::atomic::atomic_compare_exchange_weak (3 samples, 0.02%)<once_cell::sync::Lazy<T,F> as core::ops::deref::Deref>::deref (3 samples, 0.02%)once_cell::sync::Lazy<T,F>::force (3 samples, 0.02%)once_cell::sync::OnceCell<T>::get_or_init (3 samples, 0.02%)once_cell::sync::OnceCell<T>::get_or_try_init (3 samples, 0.02%)once_cell::sync::OnceCell<T>::get (3 samples, 0.02%)once_cell::imp::OnceCell<T>::is_initialized (3 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,alloc::vec::Vec<std::process::Child>>> (2 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (2 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,core::option::Option<tokio::sync::watch::Receiver<()>>>> (2 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (2 samples, 0.02%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park (497 samples, 3.98%)<tok..<tokio::process::imp::driver::Driver as tokio::park::Park>::park (497 samples, 3.98%)<tok..tokio::process::imp::GlobalOrphanQueue::reap_orphans (16 samples, 0.13%)tokio::process::imp::orphan::OrphanQueueImpl<T>::reap_orphans (13 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::try_lock (9 samples, 0.07%)lock_api::mutex::Mutex<R,T>::try_lock (9 samples, 0.07%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::try_lock (9 samples, 0.07%)tokio::loom::std::parking_lot::Mutex<T>::lock (6 samples, 0.05%)lock_api::mutex::Mutex<R,T>::lock (6 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (6 samples, 0.05%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 32]> (8 samples, 0.06%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (8 samples, 0.06%)tokio::time::driver::Inner::lock (12 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::lock (12 samples, 0.10%)lock_api::mutex::Mutex<R,T>::lock (12 samples, 0.10%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (12 samples, 0.10%)tokio::time::driver::wheel::Wheel::poll (3 samples, 0.02%)tokio::time::driver::wheel::Wheel::next_expiration (3 samples, 0.02%)tokio::time::driver::wheel::level::Level::next_expiration (2 samples, 0.02%)tokio::time::driver::wheel::level::Level::next_occupied_slot (2 samples, 0.02%)tokio::time::driver::<impl tokio::time::driver::handle::Handle>::process_at_time (27 samples, 0.22%)tokio::time::driver::wheel::Wheel::poll_at (3 samples, 0.02%)tokio::time::driver::wheel::Wheel::next_expiration (3 samples, 0.02%)tokio::time::driver::<impl tokio::time::driver::handle::Handle>::process (32 samples, 0.26%)tokio::time::driver::ClockTime::now (5 samples, 0.04%)tokio::time::clock::Clock::now (5 samples, 0.04%)tokio::time::clock::now (5 samples, 0.04%)std::time::Instant::now (5 samples, 0.04%)std::sys::unix::time::inner::Instant::now (4 samples, 0.03%)std::sys::unix::time::inner::now (4 samples, 0.03%)__clock_gettime (4 samples, 0.03%)__vdso_clock_gettime (4 samples, 0.03%)[[vdso]] (4 samples, 0.03%)<tokio::time::driver::Driver<P> as tokio::park::Park>::park (539 samples, 4.32%)<toki..tokio::time::driver::Driver<P>::park_internal (539 samples, 4.32%)tokio..<tokio::park::either::Either<A,B> as tokio::park::Park>::park (541 samples, 4.34%)<toki..<tokio::runtime::driver::Driver as tokio::park::Park>::park (545 samples, 4.37%)<toki..__sched_yield (4 samples, 0.03%)entry_SYSCALL_64 (4 samples, 0.03%)tokio::runtime::park::Inner::park_driver (553 samples, 4.43%)tokio..<tokio::runtime::park::Parker as tokio::park::Park>::park (2,678 samples, 21.47%)<tokio::runtime::park::Parker as t..tokio::runtime::park::Inner::park (2,661 samples, 21.34%)tokio::runtime::park::Inner::parktokio::util::try_lock::TryLock<T>::try_lock (30 samples, 0.24%)core::cell::RefCell<T>::borrow_mut (31 samples, 0.25%)core::cell::RefCell<T>::try_borrow_mut (31 samples, 0.25%)core::cell::BorrowRefMut::new (31 samples, 0.25%)core::cell::Cell<T>::set (21 samples, 0.17%)core::cell::Cell<T>::replace (21 samples, 0.17%)core::mem::replace (21 samples, 0.17%)core::mem::swap (21 samples, 0.17%)core::ptr::swap_nonoverlapping_one (21 samples, 0.17%)core::intrinsics::copy_nonoverlapping (21 samples, 0.17%)core::ptr::drop_in_place<core::option::Option<tokio::runtime::park::Parker>> (18 samples, 0.14%)core::result::Result<T,E>::expect (16 samples, 0.13%)tokio::runtime::thread_pool::worker::Context::park_timeout (2,762 samples, 22.15%)tokio::runtime::thread_pool::worker..tokio::runtime::queue::Local<T>::is_stealable (15 samples, 0.12%)tokio::runtime::queue::Inner<T>::is_empty (15 samples, 0.12%)core::sync::atomic::AtomicU16::load (15 samples, 0.12%)core::sync::atomic::atomic_load (15 samples, 0.12%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::runtime::task::inject::Pointers>> (15 samples, 0.12%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (15 samples, 0.12%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (15 samples, 0.12%)tokio::runtime::task::inject::Inject<T>::is_closed (57 samples, 0.46%)tokio::loom::std::parking_lot::Mutex<T>::lock (42 samples, 0.34%)lock_api::mutex::Mutex<R,T>::lock (42 samples, 0.34%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (42 samples, 0.34%)tokio::runtime::thread_pool::worker::Core::maintenance (70 samples, 0.56%)tokio::runtime::thread_pool::worker::Worker::inject (11 samples, 0.09%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,alloc::vec::Vec<usize>>> (4 samples, 0.03%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (4 samples, 0.03%)<T as core::slice::cmp::SliceContains>::slice_contains::_{{closure}} (5 samples, 0.04%)core::cmp::impls::<impl core::cmp::PartialEq for usize>::eq (5 samples, 0.04%)core::slice::<impl [T]>::contains (21 samples, 0.17%)<T as core::slice::cmp::SliceContains>::slice_contains (21 samples, 0.17%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::any (21 samples, 0.17%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (16 samples, 0.13%)tokio::runtime::thread_pool::worker::Core::transition_from_parked (49 samples, 0.39%)tokio::runtime::thread_pool::idle::Idle::is_parked (42 samples, 0.34%)tokio::loom::std::parking_lot::Mutex<T>::lock (16 samples, 0.13%)lock_api::mutex::Mutex<R,T>::lock (16 samples, 0.13%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (16 samples, 0.13%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,alloc::vec::Vec<usize>>> (20 samples, 0.16%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (20 samples, 0.16%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (20 samples, 0.16%)tokio::runtime::thread_pool::idle::Idle::transition_worker_to_parked (27 samples, 0.22%)tokio::loom::std::parking_lot::Mutex<T>::lock (6 samples, 0.05%)lock_api::mutex::Mutex<R,T>::lock (6 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (6 samples, 0.05%)parking_lot::raw_mutex::RawMutex::lock_slow (2 samples, 0.02%)tokio::runtime::thread_pool::worker::Context::park (2,919 samples, 23.40%)tokio::runtime::thread_pool::worker::..tokio::runtime::thread_pool::worker::Core::transition_to_parked (37 samples, 0.30%)tokio::runtime::thread_pool::worker::Shared::notify_if_work_pending (9 samples, 0.07%)tokio::runtime::queue::Steal<T>::is_empty (5 samples, 0.04%)tokio::runtime::queue::Inner<T>::is_empty (5 samples, 0.04%)core::sync::atomic::AtomicU16::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)parking_lot::condvar::Condvar::notify_one_slow (4 samples, 0.03%)parking_lot_core::parking_lot::unpark_requeue (4 samples, 0.03%)<parking_lot_core::thread_parker::imp::UnparkHandle as parking_lot_core::thread_parker::UnparkHandleT>::unpark (4 samples, 0.03%)syscall (4 samples, 0.03%)entry_SYSCALL_64 (4 samples, 0.03%)tokio::coop::CURRENT::__getit (2 samples, 0.02%)core::cell::RefCell<T>::borrow_mut (20 samples, 0.16%)core::cell::RefCell<T>::try_borrow_mut (20 samples, 0.16%)core::cell::BorrowRefMut::new (20 samples, 0.16%)core::cell::Cell<T>::set (5 samples, 0.04%)core::cell::Cell<T>::replace (5 samples, 0.04%)core::mem::replace (5 samples, 0.04%)core::mem::swap (5 samples, 0.04%)core::ptr::swap_nonoverlapping_one (5 samples, 0.04%)core::intrinsics::copy_nonoverlapping (5 samples, 0.04%)core::intrinsics::copy_nonoverlapping (18 samples, 0.14%)core::option::Option<T>::take (19 samples, 0.15%)core::mem::take (19 samples, 0.15%)core::mem::replace (19 samples, 0.15%)core::mem::swap (19 samples, 0.15%)core::ptr::swap_nonoverlapping_one (19 samples, 0.15%)tokio::runtime::task::harness::SchedulerView<S>::transition_to_running (7 samples, 0.06%)tokio::runtime::task::state::State::transition_to_running (5 samples, 0.04%)__rust_probestack (2 samples, 0.02%)core::task::poll::Poll<T>::is_ready (3 samples, 0.02%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (25 samples, 0.20%)tokio::runtime::task::harness::poll_future::_{{closure}} (21 samples, 0.17%)tokio::runtime::task::core::CoreStage<T>::poll (21 samples, 0.17%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (15 samples, 0.12%)tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (15 samples, 0.12%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (9 samples, 0.07%)std::panic::catch_unwind (40 samples, 0.32%)std::panicking::try (40 samples, 0.32%)std::panicking::try::do_call (40 samples, 0.32%)core::mem::manually_drop::ManuallyDrop<T>::new (15 samples, 0.12%)[libc-2.28.so] (9 samples, 0.07%)tokio::runtime::task::state::State::transition_to_idle (4 samples, 0.03%)tokio::runtime::task::state::State::fetch_update (2 samples, 0.02%)tokio::runtime::task::state::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::poll (99 samples, 0.79%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (75 samples, 0.60%)tokio::runtime::task::harness::poll_future (66 samples, 0.53%)tokio::coop::budget (190 samples, 1.52%)tokio::coop::with_budget (190 samples, 1.52%)std::thread::local::LocalKey<T>::with (186 samples, 1.49%)std::thread::local::LocalKey<T>::try_with (180 samples, 1.44%)tokio::coop::with_budget::_{{closure}} (178 samples, 1.43%)tokio::runtime::thread_pool::worker::Context::run_task::_{{closure}} (178 samples, 1.43%)tokio::runtime::task::Notified<S>::run (136 samples, 1.09%)tokio::runtime::task::raw::RawTask::poll (136 samples, 1.09%)tokio::runtime::task::raw::poll (8 samples, 0.06%)tokio::runtime::thread_pool::idle::Idle::transition_worker_from_searching (5 samples, 0.04%)tokio::runtime::thread_pool::idle::State::dec_num_searching (5 samples, 0.04%)default_wake_function (2 samples, 0.02%)select_idle_sibling (2 samples, 0.02%)available_idle_cpu (2 samples, 0.02%)select_task_rq_fair (8 samples, 0.06%)__wake_up_common (15 samples, 0.12%)try_to_wake_up (13 samples, 0.10%)__wake_up_common (18 samples, 0.14%)ep_poll_callback (18 samples, 0.14%)_raw_spin_lock_irqsave (2 samples, 0.02%)eventfd_write (21 samples, 0.17%)_raw_spin_lock_irq (3 samples, 0.02%)mio::sys::unix::waker::eventfd::Waker::wake (30 samples, 0.24%)<&std::fs::File as std::io::Write>::write (29 samples, 0.23%)std::sys::unix::fs::File::write (29 samples, 0.23%)std::sys::unix::fd::FileDesc::write (29 samples, 0.23%)__libc_write (29 samples, 0.23%)entry_SYSCALL_64_after_hwframe (28 samples, 0.22%)do_syscall_64 (28 samples, 0.22%)ksys_write (28 samples, 0.22%)vfs_write (27 samples, 0.22%)security_file_permission (3 samples, 0.02%)common_file_perm (3 samples, 0.02%)<tokio::io::driver::Handle as tokio::park::Unpark>::unpark (33 samples, 0.26%)tokio::io::driver::Handle::wakeup (33 samples, 0.26%)tokio::io::driver::Handle::inner (3 samples, 0.02%)alloc::sync::Weak<T>::upgrade (3 samples, 0.02%)tokio::runtime::park::Inner::unpark_condvar (5 samples, 0.04%)tokio::loom::std::parking_lot::Mutex<T>::lock (5 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (5 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (5 samples, 0.04%)<tokio::runtime::park::Unparker as tokio::park::Unpark>::unpark (33 samples, 0.26%)tokio::runtime::park::Inner::unpark (31 samples, 0.25%)std::time::Instant::now (4 samples, 0.03%)std::sys::unix::time::inner::Instant::now (4 samples, 0.03%)std::sys::unix::time::inner::now (4 samples, 0.03%)parking_lot::condvar::Condvar::wait_until_internal (4 samples, 0.03%)parking_lot_core::parking_lot::park (4 samples, 0.03%)parking_lot_core::parking_lot::with_thread_data (4 samples, 0.03%)parking_lot_core::parking_lot::park::_{{closure}} (4 samples, 0.03%)<parking_lot_core::thread_parker::imp::ThreadParker as parking_lot_core::thread_parker::ThreadParkerT>::park (4 samples, 0.03%)parking_lot_core::thread_parker::imp::ThreadParker::futex_wait (4 samples, 0.03%)syscall (4 samples, 0.03%)entry_SYSCALL_64 (4 samples, 0.03%)_raw_spin_lock (3 samples, 0.02%)get_futex_key (6 samples, 0.05%)get_futex_key_refs.isra.12 (4 samples, 0.03%)hash_futex (3 samples, 0.02%)__unqueue_futex (7 samples, 0.06%)plist_del (4 samples, 0.03%)mark_wake_futex (42 samples, 0.34%)wake_q_add (14 samples, 0.11%)__raw_spin_unlock (2 samples, 0.02%)_raw_spin_lock_irqsave (2 samples, 0.02%)default_send_IPI_single_phys (2 samples, 0.02%)llist_add_batch (2 samples, 0.02%)sched_clock_cpu (5 samples, 0.04%)sched_clock (4 samples, 0.03%)native_sched_clock (4 samples, 0.03%)select_idle_sibling (9 samples, 0.07%)available_idle_cpu (8 samples, 0.06%)select_task_rq_fair (58 samples, 0.47%)update_cfs_rq_h_load (8 samples, 0.06%)account_entity_enqueue (3 samples, 0.02%)update_cfs_group (2 samples, 0.02%)__update_load_avg_cfs_rq (2 samples, 0.02%)ttwu_do_activate (16 samples, 0.13%)enqueue_task_fair (16 samples, 0.13%)enqueue_entity (12 samples, 0.10%)update_load_avg (6 samples, 0.05%)dbs_update_util_handler (2 samples, 0.02%)ttwu_do_wakeup (8 samples, 0.06%)check_preempt_curr (8 samples, 0.06%)resched_curr (3 samples, 0.02%)entry_SYSCALL_64_after_hwframe (253 samples, 2.03%)e..do_syscall_64 (251 samples, 2.01%)d..__x64_sys_futex (248 samples, 1.99%)_..do_futex (243 samples, 1.95%)d..futex_wake (237 samples, 1.90%)f..wake_up_q (140 samples, 1.12%)try_to_wake_up (140 samples, 1.12%)update_rq_clock (4 samples, 0.03%)sched_clock_cpu (4 samples, 0.03%)sched_clock (3 samples, 0.02%)native_sched_clock (3 samples, 0.02%)<parking_lot_core::thread_parker::imp::UnparkHandle as parking_lot_core::thread_parker::UnparkHandleT>::unpark (262 samples, 2.10%)<..syscall (258 samples, 2.07%)s..parking_lot_core::parking_lot::FairTimeout::should_timeout (17 samples, 0.14%)std::time::Instant::now (12 samples, 0.10%)std::sys::unix::time::inner::Instant::now (10 samples, 0.08%)std::sys::unix::time::inner::now (10 samples, 0.08%)__clock_gettime (10 samples, 0.08%)__vdso_clock_gettime (9 samples, 0.07%)[[vdso]] (9 samples, 0.07%)parking_lot_core::parking_lot::get_hashtable (2 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::is_null (2 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::guaranteed_eq (2 samples, 0.02%)parking_lot::condvar::Condvar::notify_one_slow (323 samples, 2.59%)pa..parking_lot_core::parking_lot::unpark_requeue (320 samples, 2.57%)pa..parking_lot_core::parking_lot::lock_bucket_pair (23 samples, 0.18%)parking_lot_core::word_lock::WordLock::lock (20 samples, 0.16%)tokio::runtime::thread_pool::worker::Context::run_task (610 samples, 4.89%)tokio:..tokio::runtime::thread_pool::worker::Core::transition_from_searching (417 samples, 3.34%)tok..tokio::runtime::thread_pool::worker::Shared::transition_worker_from_searching (417 samples, 3.34%)tok..tokio::runtime::thread_pool::worker::Shared::notify_parked (412 samples, 3.30%)tok..tokio::runtime::thread_pool::idle::Idle::worker_to_notify (20 samples, 0.16%)tokio::runtime::thread_pool::idle::Idle::notify_should_wakeup (18 samples, 0.14%)core::sync::atomic::AtomicUsize::fetch_add (13 samples, 0.10%)core::sync::atomic::atomic_add (13 samples, 0.10%)core::ptr::drop_in_place<core::option::Option<tokio::runtime::task::Notified<alloc::sync::Arc<tokio::runtime::thread_pool::worker::Shared>>>> (2 samples, 0.02%)tokio::runtime::task::inject::Inject<T>::pop (4 samples, 0.03%)tokio::runtime::task::inject::Inject<T>::is_empty (4 samples, 0.03%)core::option::Option<T>::or_else (7 samples, 0.06%)tokio::runtime::thread_pool::worker::Core::next_task::_{{closure}} (5 samples, 0.04%)tokio::runtime::thread_pool::worker::Core::next_task (47 samples, 0.38%)tokio::runtime::thread_pool::worker::Core::next_local_task (6 samples, 0.05%)core::option::Option<T>::or_else (6 samples, 0.05%)tokio::runtime::thread_pool::worker::Core::next_local_task::_{{closure}} (6 samples, 0.05%)tokio::runtime::queue::Local<T>::pop (6 samples, 0.05%)core::sync::atomic::AtomicU32::load (6 samples, 0.05%)core::sync::atomic::atomic_load (6 samples, 0.05%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (5 samples, 0.04%)core::num::<impl u16>::wrapping_add (29 samples, 0.23%)core::sync::atomic::AtomicU32::load (7 samples, 0.06%)core::sync::atomic::atomic_load (7 samples, 0.06%)tokio::runtime::queue::pack (10 samples, 0.08%)tokio::runtime::queue::Steal<T>::steal_into (217 samples, 1.74%)tokio::runtime::queue::Steal<T>::steal_into2 (199 samples, 1.60%)tokio::runtime::queue::unpack (131 samples, 1.05%)tokio::runtime::task::inject::Inject<T>::pop (2 samples, 0.02%)tokio::runtime::task::inject::Inject<T>::is_empty (2 samples, 0.02%)tokio::runtime::thread_pool::worker::Core::transition_to_searching (2 samples, 0.02%)tokio::runtime::thread_pool::worker::Core::steal_work (249 samples, 2.00%)t..tokio::util::rand::FastRand::fastrand_n (4 samples, 0.03%)tokio::util::rand::FastRand::fastrand (4 samples, 0.03%)<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once (3,881 samples, 31.12%)<alloc::boxed::Box<F,A> as core::ops::function::Fn..<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once (3,881 samples, 31.12%)<alloc::boxed::Box<F,A> as core::ops::function::Fn..core::ops::function::FnOnce::call_once{{vtable.shim}} (3,881 samples, 31.12%)core::ops::function::FnOnce::call_once{{vtable.shi..std::thread::Builder::spawn_unchecked::_{{closure}} (3,881 samples, 31.12%)std::thread::Builder::spawn_unchecked::_{{closure}}std::panic::catch_unwind (3,881 samples, 31.12%)std::panic::catch_unwindstd::panicking::try (3,881 samples, 31.12%)std::panicking::trystd::panicking::try::do_call (3,881 samples, 31.12%)std::panicking::try::do_call<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (3,881 samples, 31.12%)<std::panic::AssertUnwindSafe<F> as core::ops::fun..std::thread::Builder::spawn_unchecked::_{{closure}}::_{{closure}} (3,881 samples, 31.12%)std::thread::Builder::spawn_unchecked::_{{closure}..std::sys_common::backtrace::__rust_begin_short_backtrace (3,881 samples, 31.12%)std::sys_common::backtrace::__rust_begin_short_bac..tokio::runtime::blocking::pool::Spawner::spawn_thread::_{{closure}} (3,881 samples, 31.12%)tokio::runtime::blocking::pool::Spawner::spawn_thr..tokio::runtime::blocking::pool::Inner::run (3,881 samples, 31.12%)tokio::runtime::blocking::pool::Inner::runtokio::runtime::task::Notified<S>::run (3,845 samples, 30.83%)tokio::runtime::task::Notified<S>::runtokio::runtime::task::raw::RawTask::poll (3,845 samples, 30.83%)tokio::runtime::task::raw::RawTask::polltokio::runtime::task::harness::Harness<T,S>::poll (3,845 samples, 30.83%)tokio::runtime::task::harness::Harness<T,S>::polltokio::runtime::task::harness::Harness<T,S>::poll_inner (3,845 samples, 30.83%)tokio::runtime::task::harness::Harness<T,S>::poll_..tokio::runtime::task::harness::poll_future (3,845 samples, 30.83%)tokio::runtime::task::harness::poll_futurestd::panic::catch_unwind (3,845 samples, 30.83%)std::panic::catch_unwindstd::panicking::try (3,845 samples, 30.83%)std::panicking::trystd::panicking::try::do_call (3,845 samples, 30.83%)std::panicking::try::do_call<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (3,845 samples, 30.83%)<std::panic::AssertUnwindSafe<F> as core::ops::fun..tokio::runtime::task::harness::poll_future::_{{closure}} (3,845 samples, 30.83%)tokio::runtime::task::harness::poll_future::_{{clo..tokio::runtime::task::core::CoreStage<T>::poll (3,845 samples, 30.83%)tokio::runtime::task::core::CoreStage<T>::polltokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (3,845 samples, 30.83%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with..tokio::runtime::task::core::CoreStage<T>::poll::_{{closure}} (3,845 samples, 30.83%)tokio::runtime::task::core::CoreStage<T>::poll::_{..<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (3,845 samples, 30.83%)<tokio::runtime::blocking::task::BlockingTask<T> a..tokio::runtime::thread_pool::worker::Launch::launch::_{{closure}} (3,845 samples, 30.83%)tokio::runtime::thread_pool::worker::Launch::launc..tokio::runtime::thread_pool::worker::run (3,845 samples, 30.83%)tokio::runtime::thread_pool::worker::runtokio::macros::scoped_tls::ScopedKey<T>::set (3,845 samples, 30.83%)tokio::macros::scoped_tls::ScopedKey<T>::settokio::runtime::thread_pool::worker::run::_{{closure}} (3,845 samples, 30.83%)tokio::runtime::thread_pool::worker::run::_{{closu..tokio::runtime::thread_pool::worker::Context::run (3,845 samples, 30.83%)tokio::runtime::thread_pool::worker::Context::rundo_munmap (5 samples, 0.04%)find_vma (5 samples, 0.04%)core::ptr::drop_in_place<std::sys::unix::stack_overflow::Handler> (7 samples, 0.06%)<std::sys::unix::stack_overflow::Handler as core::ops::drop::Drop>::drop (7 samples, 0.06%)std::sys::unix::stack_overflow::imp::drop_handler (7 samples, 0.06%)__munmap (7 samples, 0.06%)entry_SYSCALL_64_after_hwframe (7 samples, 0.06%)do_syscall_64 (7 samples, 0.06%)__x64_sys_munmap (7 samples, 0.06%)vm_munmap (7 samples, 0.06%)clone (3,905 samples, 31.31%)clonestart_thread (3,905 samples, 31.31%)start_threadstd::sys::unix::thread::Thread::new::thread_start (3,889 samples, 31.18%)std::sys::unix::thread::Thread::new::thread_startentry_SYSCALL_64 (19 samples, 0.15%)entry_SYSCALL_64_after_hwframe (9 samples, 0.07%)all (12,472 samples, 100%)tokio-runtime-w (12,311 samples, 98.71%)tokio-runtime-wsyscall_return_via_sysret (2 samples, 0.02%) \ No newline at end of file diff --git a/bin/pipeline_test/src/main.rs b/bin/pipeline_test/src/main.rs index 2d304559..eb6c17e2 100644 --- a/bin/pipeline_test/src/main.rs +++ b/bin/pipeline_test/src/main.rs @@ -34,6 +34,7 @@ static DEFAULT_PORT: u16 = 6379; static TEST_KEY: &'static str = "foo"; mod utils; +use fred::globals; #[derive(Debug)] struct Argv { @@ -153,6 +154,7 @@ fn spawn_client_task( fn main() { pretty_env_logger::init(); + globals::set_backpressure_count(1000000); let argv = parse_argv(); info!("Running with configuration: {:?}", argv); diff --git a/examples/sentinel.rs b/examples/sentinel.rs index 2646b1cd..96ccd3d4 100644 --- a/examples/sentinel.rs +++ b/examples/sentinel.rs @@ -19,6 +19,7 @@ async fn main() -> Result<(), RedisError> { }; let client = RedisClient::new(config); + let policy = ReconnectPolicy::default(); let _ = client.connect(Some(policy)); let _ = client.wait_for_connect().await?; diff --git a/src/client.rs b/src/client.rs index 7591c3f4..b9911a4e 100644 --- a/src/client.rs +++ b/src/client.rs @@ -4,7 +4,6 @@ use crate::modules::inner::{MultiPolicy, RedisClientInner}; use crate::modules::response::RedisResponse; use crate::multiplexer::commands as multiplexer_commands; use crate::multiplexer::utils as multiplexer_utils; -use crate::protocol::types::RedisCommand; use crate::types::*; use crate::utils; use futures::Stream; @@ -14,16 +13,13 @@ use std::fmt; use std::ops::Deref; use std::sync::Arc; use std::time::Duration; -use tokio::sync::mpsc::{unbounded_channel, UnboundedSender}; +use tokio::sync::mpsc::unbounded_channel; use tokio::time::interval as tokio_interval; use tokio_stream::wrappers::UnboundedReceiverStream; #[cfg(feature = "metrics")] use crate::modules::metrics::Stats; -#[doc(hidden)] -pub type CommandSender = UnboundedSender; - /// Utility functions used by the client that may also be useful to callers. pub mod util { pub use crate::utils::f64_to_redis_string; @@ -170,7 +166,7 @@ impl RedisClient { /// /// This function returns a `JoinHandle` to a task that drives the connection. It will not resolve /// until the connection closes, and if a reconnection policy with unlimited attempts - /// is provided then the `JoinHandle` will run forever. + /// is provided then the `JoinHandle` will run forever, or until `QUIT` is called. /// /// **Note:** See the [RedisConfig](crate::types::RedisConfig) documentation for more information on how the `policy` is applied to new connections. pub fn connect(&self, policy: Option) -> ConnectHandle { diff --git a/src/commands/server.rs b/src/commands/server.rs index c396cb27..c4cee610 100644 --- a/src/commands/server.rs +++ b/src/commands/server.rs @@ -2,7 +2,6 @@ use super::*; use crate::client::RedisClient; use crate::error::*; use crate::modules::inner::RedisClientInner; -use crate::multiplexer::utils as multiplexer_utils; use crate::protocol::types::*; use crate::protocol::utils as protocol_utils; use crate::types::*; @@ -19,7 +18,6 @@ pub async fn quit(inner: &Arc) -> Result<(), RedisError> { let _ = utils::request_response(&inner, || Ok((RedisCommandKind::Quit, vec![]))).await; // close anything left over from previous connections or reconnection attempts - multiplexer_utils::close_command_tx(&inner.command_tx); utils::shutdown_listeners(&inner); utils::set_client_state(&inner.state, ClientState::Disconnected); @@ -42,7 +40,6 @@ pub async fn shutdown(inner: &Arc, flags: Option Self { Globals { max_command_attempts: Arc::new(AtomicUsize::new(3)), - backpressure_count: Arc::new(AtomicUsize::new(500)), + backpressure_count: Arc::new(AtomicUsize::new(5000)), feed_count: Arc::new(AtomicUsize::new(500)), min_backpressure_time_ms: Arc::new(AtomicUsize::new(100)), cluster_error_cache_delay: Arc::new(AtomicUsize::new(100)), @@ -206,7 +206,7 @@ pub fn set_max_command_attempts(val: usize) -> usize { /// to use the `disable_pipeline` flag on the [connect](crate::client::RedisClient::connect) function instead since backpressure is probabilistic /// while the `no_pipeline` flag is not. /// -/// Default: 500 +/// Default: 5000 pub fn get_backpressure_count() -> usize { read_atomic(&globals().backpressure_count) } diff --git a/src/modules/inner.rs b/src/modules/inner.rs index 0019c187..71e42833 100644 --- a/src/modules/inner.rs +++ b/src/modules/inner.rs @@ -1,16 +1,16 @@ -use crate::client::CommandSender; use crate::client::RedisClient; use crate::error::*; use crate::modules::backchannel::Backchannel; use crate::multiplexer::SentCommand; use crate::protocol::types::DefaultResolver; +use crate::protocol::types::RedisCommand; use crate::types::*; use crate::utils; use parking_lot::RwLock; use std::collections::VecDeque; use std::sync::atomic::AtomicUsize; use std::sync::Arc; -use tokio::sync::mpsc::UnboundedSender; +use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender}; use tokio::sync::oneshot::Sender as OneshotSender; use tokio::sync::RwLock as AsyncRwLock; use tokio::task::JoinHandle; @@ -18,6 +18,9 @@ use tokio::task::JoinHandle; #[cfg(feature = "metrics")] use crate::modules::metrics::MovingStats; +pub type CommandSender = UnboundedSender; +pub type CommandReceiver = UnboundedReceiver; + /// State sent to the task that performs reconnection logic. pub struct ClosedState { /// Commands that were in flight that can be retried again after reconnecting. @@ -69,7 +72,9 @@ pub struct RedisClientInner { /// An mpsc sender for errors to `on_error` streams. pub error_tx: RwLock>>, /// An mpsc sender for commands to the multiplexer. - pub command_tx: RwLock>, + pub command_tx: CommandSender, + /// Temporary storage for the receiver half of the multiplexer command channel. + pub command_rx: RwLock>, /// An mpsc sender for pubsub messages to `on_message` streams. pub message_tx: RwLock>>, /// An mpsc sender for pubsub messages to `on_keyspace_event` streams. @@ -114,6 +119,7 @@ impl RedisClientInner { let backchannel = Backchannel::default(); let id = Arc::new(format!("fred-{}", utils::random_string(10))); let resolver = DefaultResolver::new(&id); + let (command_tx, command_rx) = unbounded_channel(); Arc::new(RedisClientInner { #[cfg(feature = "metrics")] @@ -133,7 +139,6 @@ impl RedisClientInner { keyspace_tx: RwLock::new(VecDeque::new()), reconnect_tx: RwLock::new(VecDeque::new()), connect_tx: RwLock::new(VecDeque::new()), - command_tx: RwLock::new(None), reconnect_sleep_jh: RwLock::new(None), cmd_buffer_len: Arc::new(AtomicUsize::new(0)), redeliver_count: Arc::new(AtomicUsize::new(0)), @@ -142,6 +147,8 @@ impl RedisClientInner { cluster_state: RwLock::new(None), backchannel: Arc::new(AsyncRwLock::new(backchannel)), sentinel_primary: RwLock::new(None), + command_rx: RwLock::new(Some(command_rx)), + command_tx, resolver, id, }) @@ -187,4 +194,13 @@ impl RedisClientInner { pub fn should_trace(&self) -> bool { false } + + pub fn take_command_rx(&self) -> Option { + self.command_rx.write().take() + } + + pub fn store_command_rx(&self, rx: CommandReceiver) { + let mut guard = self.command_rx.write(); + *guard = Some(rx); + } } diff --git a/src/modules/pool.rs b/src/modules/pool.rs index 34ad2760..0befb6e8 100644 --- a/src/modules/pool.rs +++ b/src/modules/pool.rs @@ -2,6 +2,7 @@ use crate::client::RedisClient; use crate::error::{RedisError, RedisErrorKind}; use crate::types::{ConnectHandle, ReconnectPolicy, RedisConfig}; use crate::utils; +use futures::future::{join_all, try_join_all}; use parking_lot::RwLock; use std::fmt; use std::ops::Deref; @@ -75,9 +76,9 @@ impl DynamicRedisPool { /// Wait for all the clients to connect to the server. pub async fn wait_for_connect(&self) -> Result<(), RedisError> { - for client in self.clients() { - let _ = client.wait_for_connect().await?; - } + let clients = self.clients(); + let futures = clients.iter().map(|client| client.wait_for_connect()); + let _ = try_join_all(futures).await?; Ok(()) } @@ -193,9 +194,9 @@ impl DynamicRedisPool { /// Call `QUIT` on each client in the pool. pub async fn quit_pool(&self) { - for client in self.inner.clients.read().iter() { - let _ = client.quit().await; - } + let clients = self.clients(); + let futures = clients.iter().map(|c| c.quit()); + let _ = join_all(futures).await; } /// Add a client to the pool, using the same config and reconnection policy from the initial connections. @@ -305,9 +306,8 @@ impl StaticRedisPool { /// Wait for all the clients to connect to the server. pub async fn wait_for_connect(&self) -> Result<(), RedisError> { - for client in self.inner.clients.iter() { - let _ = client.wait_for_connect().await?; - } + let futures = self.inner.clients.iter().map(|c| c.wait_for_connect()); + let _ = try_join_all(futures).await?; Ok(()) } @@ -346,8 +346,7 @@ impl StaticRedisPool { /// Call `QUIT` on each client in the pool. pub async fn quit_pool(&self) { - for client in self.inner.clients.iter() { - let _ = client.quit().await; - } + let futures = self.inner.clients.iter().map(|c| c.quit()); + let _ = join_all(futures).await; } } diff --git a/src/multiplexer/commands.rs b/src/multiplexer/commands.rs index 45001ab1..eaa2081b 100644 --- a/src/multiplexer/commands.rs +++ b/src/multiplexer/commands.rs @@ -153,7 +153,6 @@ fn shutdown_client(inner: &Arc, error: &RedisError) { utils::emit_connect_error(inner, &error); utils::emit_error(&inner, &error); client_utils::shutdown_listeners(&inner); - client_utils::set_locked(&inner.command_tx, None); client_utils::set_locked(&inner.multi_block, None); client_utils::set_client_state(&inner.state, ClientState::Disconnected); inner.update_cluster_state(None); @@ -402,7 +401,7 @@ async fn handle_write_error( Ok(false) } else { _debug!(inner, "Closing command stream from error without reconnect policy."); - let in_flight_commands = utils::take_sent_commands(&multiplexer.connections).await; + let in_flight_commands = utils::take_sent_commands(&multiplexer.connections); write_final_error_to_callers(&inner, in_flight_commands, &error); Ok(true) @@ -837,6 +836,15 @@ pub async fn init(inner: &Arc, mut policy: Option rx, + None => { + return Err(RedisError::new( + RedisErrorKind::Config, + "Redis client is already initialized.", + )) + } + }; client_utils::set_locked(&inner.policy, policy.clone()); let multiplexer = Multiplexer::new(inner); @@ -851,8 +859,6 @@ pub async fn init(inner: &Arc, mut policy: Option, mut policy: Option>>, - commands: Arc>, + commands: Arc>, counters: Counters, // TODO find a better way to do this that works with mutable servers due to sentinel changes, but where server names are cloned a lot server: Arc>>, @@ -112,7 +112,7 @@ pub enum Connections { cache: Arc>, counters: Arc, Counters>>>, writers: Arc, RedisSink>>>, - commands: Arc, SentCommands>>>, + commands: Arc, SentCommands>>>, connection_ids: Arc, i64>>>, }, } @@ -125,7 +125,7 @@ impl Connections { server: Arc::new(AsyncRwLock::new(Arc::new(server))), counters: Counters::new(cmd_buffer_len), writer: Arc::new(AsyncRwLock::new(None)), - commands: Arc::new(AsyncRwLock::new(VecDeque::new())), + commands: Arc::new(Mutex::new(VecDeque::new())), connection_id: Arc::new(RwLock::new(None)), } } @@ -136,7 +136,7 @@ impl Connections { Connections::Clustered { cache: Arc::new(RwLock::new(cache)), writers: Arc::new(AsyncRwLock::new(BTreeMap::new())), - commands: Arc::new(AsyncRwLock::new(BTreeMap::new())), + commands: Arc::new(Mutex::new(BTreeMap::new())), counters: Arc::new(RwLock::new(BTreeMap::new())), connection_ids: Arc::new(RwLock::new(BTreeMap::new())), } diff --git a/src/multiplexer/responses.rs b/src/multiplexer/responses.rs index 8e2341ac..3a1e8d97 100644 --- a/src/multiplexer/responses.rs +++ b/src/multiplexer/responses.rs @@ -9,11 +9,10 @@ use crate::protocol::utils::{frame_to_error, frame_to_single_result}; use crate::trace; use crate::types::{HScanResult, KeyspaceEvent, RedisKey, RedisValue, SScanResult, ScanResult, ZScanResult}; use crate::utils as client_utils; -use parking_lot::RwLock; +use parking_lot::{Mutex, RwLock}; use redis_protocol::resp2::types::Frame as ProtocolFrame; use std::collections::{BTreeMap, BTreeSet, VecDeque}; use std::sync::Arc; -use tokio::sync::RwLock as AsyncRwLock; #[cfg(feature = "custom-reconnect-errors")] use crate::globals::globals; @@ -707,12 +706,12 @@ fn parse_redis_auth_error(_frame: &ProtocolFrame) -> Option { } /// Read the last (oldest) command from the command queue. -async fn last_cluster_command( +fn last_cluster_command( inner: &Arc, - commands: &Arc, VecDeque>>>, + commands: &Arc, VecDeque>>>, server: &Arc, ) -> Result, RedisError> { - let last_command = match commands.write().await.get_mut(server) { + let last_command = match commands.lock().get_mut(server) { Some(commands) => match commands.pop_front() { Some(cmd) => cmd, None => { @@ -730,13 +729,13 @@ async fn last_cluster_command( } /// Push the last command back on the command queue. -async fn add_back_last_cluster_command( +fn add_back_last_cluster_command( inner: &Arc, - commands: &Arc, VecDeque>>>, + commands: &Arc, VecDeque>>>, server: &Arc, command: SentCommand, ) -> Result<(), RedisError> { - match commands.write().await.get_mut(server) { + match commands.lock().get_mut(server) { Some(commands) => commands.push_front(command), None => { _error!(inner, "Couldn't find command queue for server {}", server); @@ -749,12 +748,12 @@ async fn add_back_last_cluster_command( /// Check if the command has a response sender to unblock the multiplexer loop, and if send a message on that channel. async fn check_command_resp_tx(inner: &Arc, command: &SentCommand) { - _trace!(inner, "Writing to multiplexer sender to unblock command loop."); if command.command.kind.is_blocking() { inner.backchannel.write().await.set_unblocked(); } if let Some(tx) = command.command.take_resp_tx() { + _trace!(inner, "Writing to multiplexer sender to unblock command loop."); if let Err(e) = tx.send(()) { _warn!(inner, "Error sending cmd loop response: {:?}", e); } @@ -762,10 +761,8 @@ async fn check_command_resp_tx(inner: &Arc, command: &SentComm } /// Whether or not the most recent command ends a transaction. -async fn last_centralized_command_ends_transaction( - commands: &Arc>, -) -> Option { - commands.read().await.back().and_then(|c| { +async fn last_centralized_command_ends_transaction(commands: &Arc>) -> Option { + commands.lock().back().and_then(|c| { if c.command.kind.is_exec() { Some(TransactionEnded::Exec) } else if c.command.kind.is_discard() { @@ -777,11 +774,11 @@ async fn last_centralized_command_ends_transaction( } /// Whether or not the most recent command ends a transaction. -async fn last_clustered_command_ends_transaction( - commands: &Arc, SentCommands>>>, +fn last_clustered_command_ends_transaction( + commands: &Arc, SentCommands>>>, server: &Arc, ) -> Option { - commands.read().await.get(server).and_then(|commands| { + commands.lock().get(server).and_then(|commands| { commands.back().and_then(|c| { if c.command.kind.is_exec() { Some(TransactionEnded::Exec) @@ -803,25 +800,23 @@ fn response_is_queued(frame: &ProtocolFrame) -> bool { } /// Read the most recent (newest) command from a centralized command response queue. -async fn take_most_recent_centralized_command(commands: &Arc>) -> Option { - commands.write().await.pop_back() +fn take_most_recent_centralized_command(commands: &Arc>) -> Option { + commands.lock().pop_back() } /// Read the most recent (newest) command from a clustered command queue. -async fn take_most_recent_cluster_command( - commands: &Arc, SentCommands>>>, +fn take_most_recent_cluster_command( + commands: &Arc, SentCommands>>>, server: &Arc, ) -> Option { - commands - .write() - .await - .get_mut(server) - .and_then(|commands| commands.pop_back()) + commands.lock().get_mut(server).and_then(|commands| commands.pop_back()) } /// Send a `Canceled` error to all commands in a centralized command response queue. -async fn cancel_centralized_multi_commands(inner: &Arc, commands: &Arc>) { - for command in commands.write().await.drain(..) { +async fn cancel_centralized_multi_commands(inner: &Arc, commands: &Arc>) { + let commands: Vec = { commands.lock().drain(..).collect() }; + + for command in commands.into_iter() { check_command_resp_tx(inner, &command).await; respond_to_caller_error(inner, command, RedisError::new_canceled()); } @@ -830,14 +825,18 @@ async fn cancel_centralized_multi_commands(inner: &Arc, comman /// Send a `Canceled` error to all commands in a clustered command queue. async fn cancel_clustered_multi_commands( inner: &Arc, - commands: &Arc, SentCommands>>>, + commands: &Arc, SentCommands>>>, server: &Arc, ) { - if let Some(commands) = commands.write().await.get_mut(server) { - for command in commands.drain(..) { - check_command_resp_tx(inner, &command).await; - respond_to_caller_error(inner, command, RedisError::new_canceled()) - } + let commands = if let Some(commands) = commands.lock().get_mut(server) { + commands.drain(..).collect() + } else { + vec![] + }; + + for command in commands.into_iter() { + check_command_resp_tx(inner, &command).await; + respond_to_caller_error(inner, command, RedisError::new_canceled()) } } @@ -845,7 +844,7 @@ async fn cancel_clustered_multi_commands( async fn end_centralized_multi_block( inner: &Arc, counters: &Counters, - commands: &Arc>, + commands: &Arc>, frame: ProtocolFrame, ending_cmd: TransactionEnded, ) -> Result<(), RedisError> { @@ -860,7 +859,7 @@ async fn end_centralized_multi_block( if ending_cmd == TransactionEnded::Discard || (ending_cmd == TransactionEnded::Exec && frame.is_null()) { // the transaction was discarded or aborted due to a WATCH condition failing _trace!(inner, "Ending transaction with discard or null response"); - let recent_cmd = take_most_recent_centralized_command(commands).await; + let recent_cmd = take_most_recent_centralized_command(commands); cancel_centralized_multi_commands(inner, commands).await; let _ = client_utils::take_locked(&inner.multi_block); @@ -879,13 +878,15 @@ async fn end_centralized_multi_block( // return the frame to the caller directly, let them sort out the results _trace!(inner, "Returning exec result to the caller directly"); - let mut last_command = match commands.write().await.pop_front() { - Some(cmd) => cmd, - None => { - return Err(RedisError::new( - RedisErrorKind::ProtocolError, - "Missing last command from EXEC or DISCARD.", - )) + let mut last_command = { + match commands.lock().pop_front() { + Some(cmd) => cmd, + None => { + return Err(RedisError::new( + RedisErrorKind::ProtocolError, + "Missing last command from EXEC or DISCARD.", + )) + } } }; if !last_command.command.kind.ends_transaction() { @@ -908,7 +909,7 @@ async fn end_clustered_multi_block( inner: &Arc, server: &Arc, counters: &Arc, Counters>>>, - commands: &Arc, SentCommands>>>, + commands: &Arc, SentCommands>>>, frame: ProtocolFrame, ending_cmd: TransactionEnded, ) -> Result<(), RedisError> { @@ -925,7 +926,7 @@ async fn end_clustered_multi_block( if ending_cmd == TransactionEnded::Discard || (ending_cmd == TransactionEnded::Exec && frame.is_null()) { // the transaction was discarded or aborted due to a WATCH condition failing _trace!(inner, "Ending transaction with discard or null response."); - let recent_cmd = take_most_recent_cluster_command(commands, server).await; + let recent_cmd = take_most_recent_cluster_command(commands, server); cancel_clustered_multi_commands(inner, commands, server).await; let _ = client_utils::take_locked(&inner.multi_block); @@ -944,7 +945,7 @@ async fn end_clustered_multi_block( // return the frame to the caller directly, let them sort out the results _trace!(inner, "Returning exec result to the caller directly."); - let mut last_command = match last_cluster_command(inner, commands, server).await? { + let mut last_command = match last_cluster_command(inner, commands, server)? { Some(cmd) => cmd, None => { return Err(RedisError::new( @@ -973,7 +974,7 @@ async fn handle_clustered_queued_response( inner: &Arc, server: &Arc, counters: &Arc, Counters>>>, - commands: &Arc, VecDeque>>>, + commands: &Arc, VecDeque>>>, frame: ProtocolFrame, ) -> Result<(), RedisError> { let multi_block = match client_utils::read_locked(&inner.multi_block) { @@ -991,7 +992,7 @@ async fn handle_clustered_queued_response( // read the last command and respond with the QUEUED result _trace!(inner, "Handle QUEUED response for transaction."); - let mut last_command = match last_cluster_command(inner, commands, server).await? { + let mut last_command = match last_cluster_command(inner, commands, server)? { Some(cmd) => cmd, None => { return Err(RedisError::new( @@ -1016,7 +1017,7 @@ async fn handle_clustered_queued_response( async fn handle_centralized_queued_response( inner: &Arc, counters: &Counters, - commands: &Arc>, + commands: &Arc>, frame: ProtocolFrame, ) -> Result<(), RedisError> { let multi_block = match client_utils::read_locked(&inner.multi_block) { @@ -1032,13 +1033,15 @@ async fn handle_centralized_queued_response( // read the last command and respond with the QUEUED result _trace!(inner, "Handle QUEUED response for transaction."); - let mut last_command = match commands.write().await.pop_front() { - Some(cmd) => cmd, - None => { - return Err(RedisError::new( - RedisErrorKind::ProtocolError, - "Could not find last request.", - )) + let mut last_command = { + match commands.lock().pop_front() { + Some(cmd) => cmd, + None => { + return Err(RedisError::new( + RedisErrorKind::ProtocolError, + "Could not find last request.", + )) + } } }; @@ -1099,13 +1102,13 @@ fn check_special_errors(inner: &Arc, frame: &ProtocolFrame) -> } /// Refresh the cluster state and retry the last command. -async fn handle_redirection_error( +fn handle_redirection_error( inner: &Arc, server: &Arc, - commands: &Arc, SentCommands>>>, + commands: &Arc, SentCommands>>>, error: RedisError, ) -> Result<(), RedisError> { - let last_command = last_cluster_command(inner, commands, server).await?; + let last_command = last_cluster_command(inner, commands, server)?; if let Some(command) = last_command { utils::refresh_cluster_state(inner, command, error); @@ -1120,11 +1123,11 @@ pub async fn process_clustered_frame( inner: &Arc, server: &Arc, counters: &Arc, Counters>>>, - commands: &Arc, VecDeque>>>, + commands: &Arc, VecDeque>>>, frame: ProtocolFrame, ) -> Result<(), RedisError> { if let Some(error) = check_redirection_error(inner, &frame) { - handle_redirection_error(inner, server, commands, error).await?; + handle_redirection_error(inner, server, commands, error)?; return Ok(()); } if let Some(error) = check_special_errors(inner, &frame) { @@ -1138,7 +1141,7 @@ pub async fn process_clustered_frame( return Ok(()); } - if let Some(trx_ended) = last_clustered_command_ends_transaction(commands, server).await { + if let Some(trx_ended) = last_clustered_command_ends_transaction(commands, server) { end_clustered_multi_block(inner, server, counters, commands, frame, trx_ended).await } else { let counters = match counters.read().get(server) { @@ -1148,7 +1151,7 @@ pub async fn process_clustered_frame( return Err(RedisError::new(RedisErrorKind::Unknown, "Missing command counters.")); } }; - let last_command = match last_cluster_command(inner, commands, server).await? { + let last_command = match last_cluster_command(inner, commands, server)? { Some(cmd) => cmd, None => { _error!( @@ -1162,7 +1165,7 @@ pub async fn process_clustered_frame( }; if let Some(last_command) = process_response(inner, server, &counters, last_command, frame).await? { - add_back_last_cluster_command(inner, commands, server, last_command).await?; + add_back_last_cluster_command(inner, commands, server, last_command)?; } Ok(()) } @@ -1178,7 +1181,7 @@ pub async fn process_centralized_frame( inner: &Arc, server: &Arc, counters: &Counters, - commands: &Arc>, + commands: &Arc>, frame: ProtocolFrame, ) -> Result<(), RedisError> { if let Some(error) = check_special_errors(inner, &frame) { @@ -1192,24 +1195,27 @@ pub async fn process_centralized_frame( return Ok(()); } + // TODO change this so we can check the last command without contending for a lock if let Some(trx_ended) = last_centralized_command_ends_transaction(commands).await { end_centralized_multi_block(inner, counters, commands, frame, trx_ended).await } else { - let last_command = match commands.write().await.pop_front() { - Some(cmd) => cmd, - None => { - _error!( - inner, - "Missing last command for {:?} frame from {}", - frame.kind(), - server - ); - return Ok(()); + let last_command = { + match commands.lock().pop_front() { + Some(cmd) => cmd, + None => { + _error!( + inner, + "Missing last command for {:?} frame from {}", + frame.kind(), + server + ); + return Ok(()); + } } }; if let Some(last_command) = process_response(inner, server, counters, last_command, frame).await? { - commands.write().await.push_front(last_command); + commands.lock().push_front(last_command); } Ok(()) diff --git a/src/multiplexer/sentinel.rs b/src/multiplexer/sentinel.rs index 2c0465ae..925a0a9c 100644 --- a/src/multiplexer/sentinel.rs +++ b/src/multiplexer/sentinel.rs @@ -368,7 +368,7 @@ pub async fn connect_centralized_from_sentinel( connections: &Connections, close_tx: &Arc>>, ) -> Result, RedisError> { - let pending_commands = utils::take_sent_commands(connections).await; + let pending_commands = utils::take_sent_commands(connections); connections.disconnect_centralized().await; client_utils::set_client_state(&inner.state, ClientState::Connecting); diff --git a/src/multiplexer/utils.rs b/src/multiplexer/utils.rs index 6b357dd1..0bc73aea 100644 --- a/src/multiplexer/utils.rs +++ b/src/multiplexer/utils.rs @@ -1,4 +1,4 @@ -use crate::client::{CommandSender, RedisClient}; +use crate::client::RedisClient; use crate::error::{RedisError, RedisErrorKind}; use crate::globals::globals; use crate::modules::inner::{ClosedState, RedisClientInner}; @@ -8,6 +8,7 @@ use crate::multiplexer::{Backpressure, CloseTx, Connections, Counters, SentComma use crate::protocol::connection::{self, RedisSink, RedisStream}; use crate::protocol::types::*; use crate::protocol::utils as protocol_utils; +use crate::trace; use crate::types::*; use crate::utils as client_utils; use futures::future::Either; @@ -15,13 +16,13 @@ use futures::pin_mut; use futures::select; use futures::{FutureExt, StreamExt, TryFutureExt, TryStreamExt}; use log::Level; -use parking_lot::RwLock; +use parking_lot::{Mutex, RwLock}; use std::cmp; use std::collections::{BTreeMap, BTreeSet, VecDeque}; use std::mem; use std::ops::DerefMut; use std::sync::Arc; -use std::time::Duration; +use std::time::{Duration, Instant}; use tokio; use tokio::sync::broadcast::{channel as broadcast_channel, Receiver as BroadcastReceiver}; use tokio::sync::mpsc::UnboundedSender; @@ -61,10 +62,6 @@ pub fn close_connect_tx(connect_tx: &RwLock>) { - let _ = command_tx.write().take(); -} - pub fn emit_connect(inner: &Arc) { _debug!(inner, "Emitting connect message."); for tx in inner.connect_tx.write().drain(..) { @@ -109,17 +106,17 @@ pub fn emit_reconnect(inner: &Arc) { *tx_guard = new_tx; } -async fn take_commands( - commands: &Arc, SentCommands>>>, +fn take_commands( + commands: &Arc, SentCommands>>>, server: &Arc, ) -> Option { - commands.write().await.remove(server) + commands.lock().remove(server) } /// Emit a message to the task monitoring for connection closed events. /// /// If the caller has provided a reconnect policy it will kick in when this message is received. -pub async fn emit_connection_closed( +pub fn emit_connection_closed( inner: &Arc, connections: &Connections, server: &Arc, @@ -128,9 +125,9 @@ pub async fn emit_connection_closed( _debug!(inner, "Emit connection closed from error: {:?}", error); let closed_tx = { inner.connection_closed_tx.read().clone() }; let commands = match connections { - Connections::Clustered { ref commands, .. } => take_commands(commands, server).await, + Connections::Clustered { ref commands, .. } => take_commands(commands, server), Connections::Centralized { ref commands, .. } => { - let commands: SentCommands = commands.write().await.drain(..).collect(); + let commands: SentCommands = commands.lock().drain(..).collect(); Some(commands) } }; @@ -181,6 +178,10 @@ pub fn insert_locked_map(locked: &RwLock>, key: K, val locked.write().insert(key, value) } +pub fn insert_locked_map_mutex(locked: &Mutex>, key: K, value: V) -> Option { + locked.lock().insert(key, value) +} + pub async fn insert_locked_map_async(locked: &AsyncRwLock>, key: K, value: V) -> Option { locked.write().await.insert(key, value) } @@ -273,7 +274,7 @@ pub fn unblock_multiplexer(inner: &Arc, command: &RedisCommand pub async fn write_all_nodes( inner: &Arc, writers: &Arc, RedisSink>>>, - commands: &Arc, VecDeque>>>, + commands: &Arc, VecDeque>>>, counters: &Arc, Counters>>>, command: RedisCommand, ) -> Result { @@ -297,44 +298,102 @@ pub async fn write_all_nodes( } }; - if let Some(commands) = commands.write().await.get_mut(server) { - let kind = match command.kind.clone_all_nodes() { - Some(k) => k, - None => { - return Err(RedisError::new( - RedisErrorKind::Config, - "Invalid redis command kind to send to all nodes.", - )); - } - }; - let _command = command.duplicate(kind); + let kind = match command.kind.clone_all_nodes() { + Some(k) => k, + None => { + return Err(RedisError::new( + RedisErrorKind::Config, + "Invalid redis command kind to send to all nodes.", + )); + } + }; + let _command = command.duplicate(kind); - write_command(inner, &server, &counter, writer, commands, _command).await?; - } else { - return Err(RedisError::new( - RedisErrorKind::Config, - format!("Failed to lookup command queue for {}", server), - )); - } + send_clustered_command(inner, &server, &counter, writer, commands, _command).await?; } Ok(Backpressure::Skipped) } -pub async fn write_command( +pub fn prepare_command( inner: &Arc, - server: &str, + counters: &Counters, + command: RedisCommand, +) -> Result<(SentCommand, Frame, bool), RedisError> { + let frame = command.to_frame()?; + let mut sent_command: SentCommand = command.into(); + sent_command.command.incr_attempted(); + sent_command.network_start = Some(Instant::now()); + if inner.should_trace() { + trace::set_network_span(&mut sent_command.command, true); + } + // flush the socket under the following conditions: + // * we don't know of any queued commands following this command + // * we've fed up to the global max feed count commands already + // * the command closes the connection + // * the command ends a transaction + // * the command blocks the multiplexer command loop + let should_flush = counters.should_send() + || sent_command.command.is_quit() + || sent_command.command.kind.ends_transaction() + || client_utils::is_locked_some(&sent_command.command.resp_tx); + + Ok((sent_command, frame, should_flush)) +} + +pub async fn send_centralized_command( + inner: &Arc, + server: &Arc, counters: &Counters, writer: &mut RedisSink, - commands: &mut SentCommands, + commands: &Arc>, command: RedisCommand, ) -> Result<(), RedisError> { - _debug!(inner, "Writing command {} to {}", command.kind.to_str_debug(), server); + let (command, frame, should_flush) = prepare_command(inner, counters, command)?; + _debug!( + inner, + "Writing command {} to {}", + command.command.kind.to_str_debug(), + server + ); - commands.push_back(command.into()); - let command = commands.back_mut().expect("Failed to read last command sent."); + { + commands.lock().push_back(command.into()); + } + // if writing the command fails it will be retried from this point forward since it has been added to the commands queue + connection::write_command(inner, writer, counters, frame, should_flush).await +} + +pub async fn send_clustered_command( + inner: &Arc, + server: &Arc, + counters: &Counters, + writer: &mut RedisSink, + commands: &Arc, SentCommands>>>, + command: RedisCommand, +) -> Result<(), RedisError> { + let (command, frame, should_flush) = prepare_command(inner, counters, command)?; + _debug!( + inner, + "Writing command {} to {}", + command.command.kind.to_str_debug(), + server + ); - connection::write_command(inner, writer, counters, command).await + { + if let Some(commands) = commands.lock().get_mut(server) { + commands.push_back(command); + } else { + _error!(inner, "Failed to lookup command queue for {}", server); + return Err(RedisError::new_context( + RedisErrorKind::IO, + format!("Missing command queue for {}", server), + command.command, + )); + } + } + // if writing the command fails it will be retried from this point forward since it has been added to the commands queue + connection::write_command(inner, writer, counters, frame, should_flush).await } pub async fn write_centralized_command( @@ -359,10 +418,9 @@ pub async fn write_centralized_command( } = connections { if let Some(writer) = writer.write().await.deref_mut() { - let mut commands_guard = commands.write().await; let server_guard = server.read().await; - write_command(inner, &*server_guard, counters, writer, &mut *commands_guard, command) + send_centralized_command(inner, &*server_guard, counters, writer, &commands, command) .await .map(|_| Backpressure::Ok((*server_guard).clone())) } else { @@ -444,20 +502,11 @@ pub async fn write_clustered_command( let counters_opt = counters.read().get(&server).cloned(); if let Some(counters) = counters_opt { let mut writers_guard = writers.write().await; - let mut commands_guard = commands.write().await; if let Some(writer) = writers_guard.get_mut(&server) { - if let Some(commands) = commands_guard.get_mut(&server) { - write_command(inner, &server, &counters, writer, commands, command) - .await - .map(|_| Backpressure::Ok(server.clone())) - } else { - return Err(RedisError::new_context( - RedisErrorKind::Unknown, - format!("Unable to find server command queue for {}", server), - command, - )); - } + send_clustered_command(inner, &server, &counters, writer, commands, command) + .await + .map(|_| Backpressure::Ok(server.clone())) } else { return Err(RedisError::new_context( RedisErrorKind::Cluster, @@ -481,14 +530,14 @@ pub async fn write_clustered_command( } } -pub async fn take_sent_commands(connections: &Connections) -> VecDeque { +pub fn take_sent_commands(connections: &Connections) -> VecDeque { match connections { - Connections::Centralized { ref commands, .. } => commands.write().await.drain(..).collect(), + Connections::Centralized { ref commands, .. } => commands.lock().drain(..).collect(), Connections::Clustered { ref cache, ref commands, .. - } => zip_cluster_commands(cache, commands).await, + } => zip_cluster_commands(cache, commands), } } @@ -503,9 +552,9 @@ pub async fn take_sent_commands(connections: &Connections) -> VecDeque>, - commands: &Arc, SentCommands>>>, + commands: &Arc, SentCommands>>>, ) -> VecDeque { let num_connections = { let mut out = BTreeSet::new(); @@ -519,7 +568,7 @@ pub async fn zip_cluster_commands( let mut out = Vec::with_capacity(num_connections); let mut capacity = 0; - for (_, commands) in commands.write().await.iter_mut() { + for (_, commands) in commands.lock().iter_mut() { capacity += commands.len(); out.push(mem::replace(commands, VecDeque::new())); } @@ -565,7 +614,7 @@ async fn remove_cluster_writer(connections: &Connections, server: &Arc) pub fn spawn_clustered_listener( inner: &Arc, connections: &Connections, - commands: &Arc, VecDeque>>>, + commands: &Arc, VecDeque>>>, counters: &Arc, Counters>>>, mut close_rx: BroadcastReceiver, server: &Arc, @@ -629,7 +678,7 @@ pub fn spawn_clustered_listener( _debug!(inner, "Redis clustered frame stream closed with error {:?}", error); remove_cluster_writer(&connections, &server).await; client_utils::set_client_state(&inner.state, ClientState::Disconnected); - emit_connection_closed(&inner, &connections, &server, error).await; + emit_connection_closed(&inner, &connections, &server, error); Ok::<(), RedisError>(()) }); @@ -695,7 +744,7 @@ pub async fn connect_clustered( connections: &Connections, close_tx: &Arc>>, ) -> Result, RedisError> { - let pending_commands = take_sent_commands(connections).await; + let pending_commands = take_sent_commands(connections); if let Connections::Clustered { ref commands, @@ -716,7 +765,7 @@ pub async fn connect_clustered( for server in main_nodes.into_iter() { let (sink, stream) = create_cluster_connection(inner, connection_ids, &server, uses_tls).await?; - insert_locked_map_async(commands, server.clone(), VecDeque::new()).await; + insert_locked_map_mutex(commands, server.clone(), VecDeque::new()); insert_locked_map_async(writers, server.clone(), sink).await; insert_locked_map(counters, server.clone(), Counters::new(&inner.cmd_buffer_len)); spawn_clustered_listener(inner, connections, commands, counters, tx.subscribe(), &server, stream); @@ -738,7 +787,7 @@ pub fn spawn_centralized_listener( server: &Arc, connections: &Connections, mut close_rx: BroadcastReceiver, - commands: &Arc>>, + commands: &Arc>>, counters: &Counters, stream: RedisStream, ) { @@ -799,7 +848,7 @@ pub fn spawn_centralized_listener( _debug!(inner, "Redis frame stream closed with error {:?}", error); client_utils::set_client_state(&inner.state, ClientState::Disconnected); - emit_connection_closed(&inner, &connections, &server, error).await; + emit_connection_closed(&inner, &connections, &server, error); Ok::<(), RedisError>(()) }); @@ -810,7 +859,7 @@ pub async fn connect_centralized( connections: &Connections, close_tx: &Arc>>, ) -> Result, RedisError> { - let pending_commands = take_sent_commands(connections).await; + let pending_commands = take_sent_commands(connections); if let Connections::Centralized { ref commands, @@ -989,7 +1038,7 @@ async fn remove_server( inner: &Arc, counters: &Arc, Counters>>>, writers: &Arc, RedisSink>>>, - commands: &Arc, SentCommands>>>, + commands: &Arc, SentCommands>>>, connection_ids: &Arc, i64>>>, server: &Arc, ) -> Result<(), RedisError> { @@ -998,7 +1047,7 @@ async fn remove_server( let _ = { writers.write().await.remove(server) }; let _ = { counters.write().remove(server) }; let _ = { connection_ids.write().remove(server) }; - commands.write().await.remove(server) + commands.lock().remove(server) }; if let Some(commands) = commands { @@ -1022,7 +1071,7 @@ async fn add_server( connections: &Connections, counters: &Arc, Counters>>>, writers: &Arc, RedisSink>>>, - commands: &Arc, SentCommands>>>, + commands: &Arc, SentCommands>>>, connection_ids: &Arc, i64>>>, close_tx: &Arc>>, server: &Arc, @@ -1032,7 +1081,7 @@ async fn add_server( let (sink, stream) = create_cluster_connection(inner, connection_ids, server, uses_tls).await?; let tx = get_or_create_close_tx(inner, close_tx); - insert_locked_map_async(commands, server.clone(), VecDeque::new()).await; + insert_locked_map_mutex(commands, server.clone(), VecDeque::new()); insert_locked_map_async(writers, server.clone(), sink).await; insert_locked_map(counters, server.clone(), Counters::new(&inner.cmd_buffer_len)); spawn_clustered_listener(inner, connections, commands, counters, tx.subscribe(), &server, stream); @@ -1114,6 +1163,8 @@ pub async fn sync_cluster( connections: &Connections, close_tx: &Arc>>, ) -> Result<(), RedisError> { + _debug!(inner, "Synchronizing cluster state."); + if let Connections::Clustered { ref cache, ref writers, @@ -1228,10 +1279,9 @@ mod tests { commands.insert(server_a, server_a_commands); commands.insert(server_b, server_b_commands); commands.insert(server_c, server_c_commands); - let commands = Arc::new(AsyncRwLock::new(commands)); + let commands = Arc::new(Mutex::new(commands)); let zipped: Vec = zip_cluster_commands(&cache, &commands) - .await .into_iter() .map(|mut cmd| cmd.command.args.pop().unwrap().as_u64().unwrap()) .collect(); @@ -1239,7 +1289,7 @@ mod tests { assert_eq!(zipped, expected); - for (_, commands) in commands.read().await.iter() { + for (_, commands) in commands.lock().iter() { assert!(commands.is_empty()); } } diff --git a/src/protocol/connection.rs b/src/protocol/connection.rs index ba95a4d9..ff3b88ef 100644 --- a/src/protocol/connection.rs +++ b/src/protocol/connection.rs @@ -1,11 +1,10 @@ use crate::error::{RedisError, RedisErrorKind}; use crate::modules::inner::RedisClientInner; -use crate::multiplexer::{Counters, SentCommand}; +use crate::multiplexer::Counters; use crate::protocol::codec::RedisCodec; use crate::protocol::types::{ClusterKeyCache, RedisCommand, RedisCommandKind}; use crate::protocol::utils as protocol_utils; use crate::protocol::utils::pretty_error; -use crate::trace; use crate::types::{ClientState, InfoKind, Resolve}; use crate::utils as client_utils; use futures::sink::SinkExt; @@ -14,7 +13,6 @@ use redis_protocol::resp2::types::Frame as ProtocolFrame; use semver::Version; use std::net::SocketAddr; use std::sync::Arc; -use std::time::Instant; use tokio::io::{AsyncRead, AsyncWrite}; use tokio::net::TcpStream; use tokio_util::codec::Framed; @@ -493,28 +491,11 @@ pub async fn write_command( inner: &Arc, sink: &mut RedisSink, counters: &Counters, - command: &mut SentCommand, + frame: ProtocolFrame, + should_flush: bool, ) -> Result<(), RedisError> { - let frame = command.command.to_frame()?; - command.command.incr_attempted(); - command.network_start = Some(Instant::now()); - - // flush the socket under the following conditions: - // * we don't know of any queued commands following this command - // * we've fed up to the global max feed count commands already - // * the command closes the connection - // * the command ends a transaction - // * the command blocks the multiplexer command loop - let should_flush = counters.should_send() - || command.command.is_quit() - || command.command.kind.ends_transaction() - || client_utils::is_locked_some(&command.command.resp_tx); - if should_flush { _trace!(inner, "Sending command and flushing the sink."); - if inner.should_trace() { - trace::set_network_span(&mut command.command, true); - } match sink { RedisSink::Tcp(ref mut inner) => inner.send(frame).await?, @@ -523,9 +504,6 @@ pub async fn write_command( counters.reset_feed_count(); } else { _trace!(inner, "Sending command without flushing the sink."); - if inner.should_trace() { - trace::set_network_span(&mut command.command, false); - } match sink { RedisSink::Tcp(ref mut inner) => inner.feed(frame).await?, diff --git a/src/utils.rs b/src/utils.rs index ab1349e0..aed46606 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -404,18 +404,16 @@ pub async fn wait_for_connect(inner: &Arc) -> Result<(), Redis } pub fn send_command(inner: &Arc, command: RedisCommand) -> Result<(), RedisError> { - if let Some(tx) = &*inner.command_tx.read() { - if let Err(e) = tx.send(command) { - _error!(inner, "Error sending redis command: {:?}", e); + if let Err(mut e) = inner.command_tx.send(command) { + if let Some(tx) = e.0.tx.take() { + if let Err(_) = tx.send(Err(RedisError::new(RedisErrorKind::Unknown, "Failed to send command."))) { + _error!(inner, "Failed to send command {:?}.", e.0.extract_key()); + } } - incr_atomic(&inner.cmd_buffer_len); - Ok(()) - } else { - Err(RedisError::new( - RedisErrorKind::Unknown, - "Redis connection is not initialized.", - )) } + + incr_atomic(&inner.cmd_buffer_len); + Ok(()) } pub async fn apply_timeout(ft: Fut, timeout: u64) -> Result diff --git a/tests/integration/centralized.rs b/tests/integration/centralized.rs index 08d07bbf..c19c3ad4 100644 --- a/tests/integration/centralized.rs +++ b/tests/integration/centralized.rs @@ -20,6 +20,7 @@ mod keys { centralized_test!(keys, should_mget_values); centralized_test!(keys, should_msetnx_values); centralized_test!(keys, should_copy_values); + centralized_test!(keys, should_get_keys_from_pool_in_a_stream); } mod multi { @@ -39,6 +40,15 @@ mod other { centralized_test!(other, should_error_when_blocked); } +mod pool { + centralized_test!(pool, should_connect_and_ping_static_pool_single_conn); + centralized_test!(pool, should_connect_and_ping_static_pool_two_conn); + #[cfg(feature = "fd-tests")] + centralized_test!(pool, should_connect_and_ping_static_pool_many_conn); + #[cfg(feature = "fd-tests")] + centralized_test!(pool, should_connect_and_ping_static_pool_repeatedly); +} + mod hashes { centralized_test!(hashes, should_hset_and_hget); diff --git a/tests/integration/clustered.rs b/tests/integration/clustered.rs index 41c9851f..7648e641 100644 --- a/tests/integration/clustered.rs +++ b/tests/integration/clustered.rs @@ -20,6 +20,7 @@ mod keys { cluster_test!(keys, should_mget_values); cluster_test!(keys, should_msetnx_values); cluster_test!(keys, should_copy_values); + cluster_test!(keys, should_get_keys_from_pool_in_a_stream); } mod multi { @@ -43,6 +44,15 @@ mod other { cluster_test!(other, should_error_when_blocked); } +mod pool { + cluster_test!(pool, should_connect_and_ping_static_pool_single_conn); + cluster_test!(pool, should_connect_and_ping_static_pool_two_conn); + #[cfg(feature = "fd-tests")] + cluster_test!(pool, should_connect_and_ping_static_pool_many_conn); + #[cfg(feature = "fd-tests")] + cluster_test!(pool, should_connect_and_ping_static_pool_repeatedly); +} + mod hashes { cluster_test!(hashes, should_hset_and_hget); diff --git a/tests/integration/keys/mod.rs b/tests/integration/keys/mod.rs index 2919430e..06a57d7c 100644 --- a/tests/integration/keys/mod.rs +++ b/tests/integration/keys/mod.rs @@ -1,9 +1,11 @@ use fred::client::RedisClient; use fred::error::RedisError; +use fred::pool::StaticRedisPool; use fred::prelude::Expiration; -use fred::types::{RedisConfig, RedisMap, RedisValue}; +use fred::types::{ReconnectPolicy, RedisConfig, RedisMap, RedisValue}; +use futures::pin_mut; +use futures::StreamExt; use std::collections::HashMap; - use std::time::Duration; use tokio; use tokio::time::sleep; @@ -285,3 +287,37 @@ pub async fn should_copy_values(client: RedisClient, _: RedisConfig) -> Result<( Ok(()) } + +pub async fn should_get_keys_from_pool_in_a_stream( + client: RedisClient, + config: RedisConfig, +) -> Result<(), RedisError> { + let _ = client.set("foo", "bar", None, None, false).await?; + + let pool = StaticRedisPool::new(config, 5)?; + let _ = pool.connect(Some(ReconnectPolicy::default())); + let _ = pool.wait_for_connect().await?; + + let stream = + tokio_stream::wrappers::IntervalStream::new(tokio::time::interval(Duration::from_millis(100))).then(move |_| { + let pool = pool.clone(); + + async move { + let value: Option = pool.get("foo").await.unwrap(); + value + } + }); + pin_mut!(stream); + + let mut count = 0; + while let Some(value) = stream.next().await { + assert_eq!(value, Some("bar".into())); + count += 1; + + if count >= 10 { + break; + } + } + + Ok(()) +} diff --git a/tests/integration/mod.rs b/tests/integration/mod.rs index 0a592086..70ba8ebd 100644 --- a/tests/integration/mod.rs +++ b/tests/integration/mod.rs @@ -13,6 +13,7 @@ mod lua; mod memory; mod multi; mod other; +mod pool; mod pubsub; mod scanning; mod server; diff --git a/tests/integration/pool/mod.rs b/tests/integration/pool/mod.rs new file mode 100644 index 00000000..5b58b457 --- /dev/null +++ b/tests/integration/pool/mod.rs @@ -0,0 +1,62 @@ +use fred::client::RedisClient; +use fred::error::RedisError; +use fred::pool::StaticRedisPool; +use fred::types::RedisConfig; + +#[cfg(feature = "fd-tests")] +use std::time::Duration; + +async fn create_and_ping_pool(config: &RedisConfig, count: usize) -> Result<(), RedisError> { + let pool = StaticRedisPool::new(config.clone(), count)?; + let _ = pool.connect(None); + let _ = pool.wait_for_connect().await?; + + for client in pool.clients().iter() { + let _ = client.ping().await?; + } + + let _ = pool.ping().await?; + let _ = pool.quit_pool().await; + Ok(()) +} + +pub async fn should_connect_and_ping_static_pool_single_conn( + _: RedisClient, + config: RedisConfig, +) -> Result<(), RedisError> { + create_and_ping_pool(&config, 1).await +} + +pub async fn should_connect_and_ping_static_pool_two_conn( + _: RedisClient, + config: RedisConfig, +) -> Result<(), RedisError> { + create_and_ping_pool(&config, 2).await +} + +// this may require increasing the number of allowed file descriptors +#[cfg(feature = "fd-tests")] +pub async fn should_connect_and_ping_static_pool_many_conn( + _: RedisClient, + config: RedisConfig, +) -> Result<(), RedisError> { + for count in 3..25 { + let _ = create_and_ping_pool(&config, count).await?; + tokio::time::sleep(Duration::from_millis(100)).await; + } + + Ok(()) +} + +#[cfg(feature = "fd-tests")] +pub async fn should_connect_and_ping_static_pool_repeatedly( + _: RedisClient, + config: RedisConfig, +) -> Result<(), RedisError> { + for _ in 1..1000 { + let _ = create_and_ping_pool(&config, 1).await?; + tokio::time::sleep(Duration::from_millis(100)).await; + } + + Ok(()) +} diff --git a/tests/integration/utils.rs b/tests/integration/utils.rs index 505d3b69..5f6eded0 100644 --- a/tests/integration/utils.rs +++ b/tests/integration/utils.rs @@ -3,6 +3,7 @@ use crate::chaos_monkey::set_test_kind; use fred::client::RedisClient; use fred::error::RedisError; +use fred::globals; use fred::types::{ReconnectPolicy, RedisConfig, ServerConfig}; use std::env; use std::future::Future; @@ -64,6 +65,7 @@ where Fut: Future>, { set_test_kind(true); + globals::set_default_command_timeout(10_000); let policy = ReconnectPolicy::new_constant(300, RECONNECT_DELAY); let config = RedisConfig { @@ -89,6 +91,7 @@ where Fut: Future>, { set_test_kind(false); + globals::set_default_command_timeout(10_000); let policy = ReconnectPolicy::new_constant(300, RECONNECT_DELAY); let config = RedisConfig {