Thread: 1 (ceph-mgr) - 1000 samples + 100.00% main + 100.00% MgrStandby::main + 100.00% AsyncMessenger::wait + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 2 (msgr-worker-0) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% execute_native_thread_routine + 100.00% std::_Function_handler >::_M_invoke(const std::_Any_data &) + 100.00% NetworkStack::::operator() + 99.90% EventCenter::process_events + 60.90% EpollDriver::event_wait | + 60.80% epoll_wait | + 0.10% std::vector >::resize + 38.30% EventCenter::process_time_events | + 32.80% AsyncConnection::wakeup_from | | + 28.90% AsyncConnection::process | | | + 22.80% ProtocolV2::read_event | | | | + 22.40% ProtocolV2::run_continuation | | | | + 22.10% ProtocolV2::throttle_message | | | | | + 15.20% Throttle::get_or_fail | | | | | | + 9.40% std::lock_guard::~lock_guard | | | | | | | + 9.40% std::mutex::unlock | | | | | | | + 9.40% __gthread_mutex_unlock | | | | | | | + 9.30% __pthread_mutex_unlock_usercnt | | | | | | | | + 8.80% __lll_unlock_wake | | | | | | | + 0.10% __GI___pthread_mutex_unlock | | | | | | + 4.50% std::lock_guard::lock_guard | | | | | | | + 4.50% std::mutex::lock | | | | | | | + 4.50% __gthread_mutex_lock | | | | | | | + 4.50% __GI___pthread_mutex_lock | | | | | | | + 3.60% __lll_lock_wait | | | | | | + 0.40% PerfCounters::inc | | | | | + 6.20% EventCenter::create_time_event | | | | | | + 3.30% std::multimap > >, EventCenter::TimeEvent, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::insert(std::pair > > const, EventCenter::TimeEvent>&&) | | | | | | | + 3.30% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_insert_equal > > const, EventCenter::TimeEvent> >(std::pair > > const, EventCenter::TimeEvent>&&) | | | | | | | + 2.20% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_get_insert_equal_pos | | | | | | | + 1.10% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_insert_ > > const, EventCenter::TimeEvent>, std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair > > const, EventCenter::TimeEvent>&&, std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node&) | | | | | | | + 1.10% std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) | | | | | | + 2.40% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::operator[] | | | | | | | + 1.80% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::lower_bound | | | | | | | | + 1.80% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::lower_bound | | | | | | | | + 1.80% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound | | | | | | | + 0.60% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > const, EventCenter::TimeEvent> > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&) | | | | | | + 0.30% ceph::time_detail::coarse_mono_clock::now | | | | | + 0.30% std::set, std::allocator >::insert(unsigned long&&) | | | | | + 0.10% ProtocolV2::::operator() | | | | + 0.20% CtFun::call | | | + 1.50% AsyncConnection::::operator() | | | | + 1.50% ceph::logging::SubsystemMap::should_gather<27u, 20> | | | + 1.10% ceph::time_detail::mono_clock::now | | | | + 1.00% __GI___clock_gettime | | | | + 0.80% clock_gettime | | | + 0.60% std::lock_guard::lock_guard | | | + 0.50% PerfCounters::tinc | | | + 0.20% ceph::time_detail::coarse_mono_clock::now | | | + 0.10% std::lock_guard::~lock_guard | | + 2.20% std::mutex::lock | | | + 2.20% __gthread_mutex_lock | | | + 2.20% __GI___pthread_mutex_lock | | + 0.90% std::set, std::allocator >::erase | | + 0.80% std::mutex::unlock | + 2.80% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::erase | | + 2.80% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::erase | | + 1.60% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::equal_range | | | + 0.80% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_upper_bound | | | + 0.70% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound | | + 1.20% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux | | + 0.90% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux | + 1.00% std::multimap > >, EventCenter::TimeEvent, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator > > const, EventCenter::TimeEvent> >) | + 1.00% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator > > const, EventCenter::TimeEvent> >) | + 1.00% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_erase_aux | + 0.80% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) | + 0.10% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_drop_node + 0.50% AsyncConnection::process + 0.10% std::__atomic_base::load + 0.10% Processor::accept Thread: 3 (msgr-worker-1) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% execute_native_thread_routine + 100.00% std::_Function_handler >::_M_invoke(const std::_Any_data &) + 100.00% NetworkStack::::operator() + 100.00% EventCenter::process_events + 59.80% EpollDriver::event_wait | + 59.70% epoll_wait | + 0.10% std::vector >::resize + 38.80% EventCenter::process_time_events | + 33.70% AsyncConnection::wakeup_from | | + 29.20% AsyncConnection::process | | | + 21.60% ProtocolV2::read_event | | | | + 21.10% ProtocolV2::run_continuation | | | | + 20.90% ProtocolV2::throttle_message | | | | | + 12.70% Throttle::get_or_fail | | | | | | + 6.20% std::lock_guard::~lock_guard | | | | | | | + 6.20% std::mutex::unlock | | | | | | | + 6.20% __gthread_mutex_unlock | | | | | | | + 6.20% __pthread_mutex_unlock_usercnt | | | | | | | + 5.60% __lll_unlock_wake | | | | | | + 5.30% std::lock_guard::lock_guard | | | | | | | + 5.30% std::mutex::lock | | | | | | | + 5.20% __gthread_mutex_lock | | | | | | | + 5.20% __GI___pthread_mutex_lock | | | | | | | + 4.10% __lll_lock_wait | | | | | | + 0.30% PerfCounters::inc | | | | | + 7.10% EventCenter::create_time_event | | | | | | + 3.70% std::multimap > >, EventCenter::TimeEvent, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::insert(std::pair > > const, EventCenter::TimeEvent>&&) | | | | | | | + 3.70% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_insert_equal > > const, EventCenter::TimeEvent> >(std::pair > > const, EventCenter::TimeEvent>&&) | | | | | | | + 2.30% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_get_insert_equal_pos | | | | | | | + 1.40% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_insert_ > > const, EventCenter::TimeEvent>, std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair > > const, EventCenter::TimeEvent>&&, std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node&) | | | | | | | + 0.90% std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) | | | | | | | + 0.30% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node::operator() > > const, EventCenter::TimeEvent> >(std::pair > > const, EventCenter::TimeEvent>&&) const | | | | | | + 3.10% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::operator[] | | | | | | | + 2.30% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::lower_bound | | | | | | | | + 2.30% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::lower_bound | | | | | | | | + 2.30% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound | | | | | | | + 0.80% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > const, EventCenter::TimeEvent> > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&) | | | | | | + 0.10% ceph::time_detail::coarse_mono_clock::now | | | | | + 0.60% std::set, std::allocator >::insert(unsigned long&&) | | | | | + 0.10% ProtocolV2::::operator() | | | | + 0.20% CtFun::call | | | + 2.20% ceph::time_detail::mono_clock::now | | | | + 2.10% __GI___clock_gettime | | | | + 1.90% clock_gettime | | | | + 1.20% ??? | | | + 1.60% AsyncConnection::::operator() | | | | + 1.60% ceph::logging::SubsystemMap::should_gather<27u, 20> | | | + 0.60% PerfCounters::tinc | | | + 0.50% std::lock_guard::lock_guard | | | + 0.20% std::lock_guard::~lock_guard | | + 2.50% std::mutex::lock | | | + 2.50% __gthread_mutex_lock | | | + 2.40% __GI___pthread_mutex_lock | | + 1.20% std::mutex::unlock | | | + 1.20% __gthread_mutex_unlock | | | + 1.20% __pthread_mutex_unlock_usercnt | | + 0.80% std::set, std::allocator >::erase | + 2.00% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::erase | | + 2.00% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::erase | | + 1.10% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux | | | + 0.90% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux | | | + 0.10% std::_Rb_tree_const_iterator > > const, EventCenter::TimeEvent> > > >::operator++ | | + 0.90% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::equal_range | + 1.50% std::multimap > >, EventCenter::TimeEvent, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator > > const, EventCenter::TimeEvent> >) | + 1.50% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator > > const, EventCenter::TimeEvent> >) | + 1.50% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_erase_aux | + 1.00% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) | + 0.40% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_drop_node + 0.70% AsyncConnection::process + 0.40% AsyncConnection::handle_write + 0.10% C_handle_notify::do_request Thread: 4 (msgr-worker-2) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% execute_native_thread_routine + 100.00% std::_Function_handler >::_M_invoke(const std::_Any_data &) + 100.00% NetworkStack::::operator() + 100.00% EventCenter::process_events + 66.20% EpollDriver::event_wait | + 66.20% epoll_wait + 31.70% EventCenter::process_time_events | + 27.70% AsyncConnection::wakeup_from | | + 24.20% AsyncConnection::process | | | + 16.60% ProtocolV2::read_event | | | | + 15.90% ProtocolV2::run_continuation | | | | + 15.40% ProtocolV2::throttle_message | | | | | + 8.10% EventCenter::create_time_event | | | | | | + 4.60% std::multimap > >, EventCenter::TimeEvent, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::insert(std::pair > > const, EventCenter::TimeEvent>&&) | | | | | | | + 4.60% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_insert_equal > > const, EventCenter::TimeEvent> >(std::pair > > const, EventCenter::TimeEvent>&&) | | | | | | | + 2.90% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_get_insert_equal_pos | | | | | | | | + 0.10% std::less > > >::operator() | | | | | | | + 1.70% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_insert_ > > const, EventCenter::TimeEvent>, std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair > > const, EventCenter::TimeEvent>&&, std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node&) | | | | | | | + 1.00% std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) | | | | | | | + 0.60% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_Alloc_node::operator() > > const, EventCenter::TimeEvent> >(std::pair > > const, EventCenter::TimeEvent>&&) const | | | | | | + 3.10% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::operator[] | | | | | | | + 2.20% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::lower_bound | | | | | | | | + 2.20% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::lower_bound | | | | | | | | + 2.10% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound | | | | | | | | + 0.10% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_end | | | | | | | + 0.80% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > const, EventCenter::TimeEvent> > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&) | | | | | | + 0.40% ceph::time_detail::coarse_mono_clock::now | | | | | + 5.90% Throttle::get_or_fail | | | | | | + 3.20% std::lock_guard::lock_guard | | | | | | | + 3.20% std::mutex::lock | | | | | | | + 3.20% __gthread_mutex_lock | | | | | | | + 3.20% __GI___pthread_mutex_lock | | | | | | | + 2.60% __lll_lock_wait | | | | | | + 2.20% std::lock_guard::~lock_guard | | | | | | | + 2.20% std::mutex::unlock | | | | | | | + 2.20% __gthread_mutex_unlock | | | | | | | + 2.20% __pthread_mutex_unlock_usercnt | | | | | | | + 1.70% __lll_unlock_wake | | | | | | + 0.30% PerfCounters::inc | | | | | + 1.30% std::set, std::allocator >::insert(unsigned long&&) | | | | | + 1.30% std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(unsigned long&&) | | | | | + 0.90% std::_Rb_tree, std::less, std::allocator >::_M_insert_, std::less, std::allocator >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, unsigned long&&, std::_Rb_tree, std::less, std::allocator >::_Alloc_node&) | | | | | + 0.20% std::_Rb_tree, std::less, std::allocator >::_M_get_insert_unique_pos | | | | + 0.10% CtFun::call | | | + 2.20% ceph::time_detail::mono_clock::now | | | | + 2.00% __GI___clock_gettime | | | | | + 1.80% clock_gettime | | | | | + 0.70% ??? | | | | + 0.10% clock_gettime@plt | | | + 1.50% AsyncConnection::::operator() | | | | + 1.50% ceph::logging::SubsystemMap::should_gather<27u, 20> | | | + 0.60% PerfCounters::tinc | | | + 0.50% std::lock_guard::~lock_guard | | | + 0.50% std::lock_guard::lock_guard | | | + 0.40% ceph::time_detail::coarse_mono_clock::now | | | + 0.10% std::unique_ptr >::operator-> | | + 1.50% std::mutex::lock | | | + 1.50% __gthread_mutex_lock | | | + 1.50% __GI___pthread_mutex_lock | | + 1.20% std::set, std::allocator >::erase | | | + 1.20% std::_Rb_tree, std::less, std::allocator >::erase | | | + 1.00% std::_Rb_tree, std::less, std::allocator >::equal_range | | | + 0.10% std::_Rb_tree, std::less, std::allocator >::_M_erase_aux | | + 0.80% std::mutex::unlock | + 1.20% std::map > > const, EventCenter::TimeEvent> >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::erase | | + 1.20% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::erase | | + 0.90% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux | | + 0.30% std::_Rb_tree > > const, EventCenter::TimeEvent> > >, std::_Select1st > > const, EventCenter::TimeEvent> > > >, std::less, std::allocator > > const, EventCenter::TimeEvent> > > > >::equal_range | + 1.00% std::multimap > >, EventCenter::TimeEvent, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator > > const, EventCenter::TimeEvent> >) | + 1.00% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator > > const, EventCenter::TimeEvent> >) | + 1.00% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_erase_aux | + 0.80% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) | + 0.20% std::_Rb_tree > >, std::pair > > const, EventCenter::TimeEvent>, std::_Select1st > > const, EventCenter::TimeEvent> >, std::less > > >, std::allocator > > const, EventCenter::TimeEvent> > >::_M_drop_node + 1.70% AsyncConnection::process + 0.90% std::function::operator()(char*, long) const + 0.30% std::lock_guard::lock_guard + 0.30% ProtocolV2::read_event + 0.10% ceph::time_detail::mono_clock::now Thread: 5 (log) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% ceph::logging::Log::entry + 100.00% std::condition_variable::wait(std::unique_lock&) + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 6 (service) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% CephContextServiceThread::entry + 100.00% std::condition_variable::wait_for > + 100.00% std::condition_variable::wait_until > > + 100.00% std::condition_variable::__wait_until_impl > > + 100.00% __gthread_cond_timedwait + 100.00% pthread_cond_timedwait@@GLIBC_2.3.2 Thread: 7 (admin_socket) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% execute_native_thread_routine + 100.00% AdminSocket::entry + 100.00% poll + 100.00% poll Thread: 8 (ceph-mgr) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% execute_native_thread_routine + 100.00% ceph::timer_detail::timer::timer_thread + 100.00% std::condition_variable::wait_until > > + 100.00% std::condition_variable::__wait_until_impl > > + 100.00% __gthread_cond_timedwait + 100.00% pthread_cond_timedwait@@GLIBC_2.3.2 Thread: 9 (fn_anonymous) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 100.00% std::condition_variable::wait(std::unique_lock&) + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 10 (fn_anonymous) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 100.00% std::condition_variable::wait(std::unique_lock&) + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 11 (signal_handler) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SignalHandler::entry + 100.00% poll + 100.00% __poll_chk + 100.00% poll Thread: 12 (mgrsb-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 100.00% std::condition_variable::wait(std::unique_lock&) + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 13 (ms_dispatch) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% DispatchQueue::DispatchThread::entry + 100.00% DispatchQueue::entry + 99.90% Cond::Wait | + 99.90% pthread_cond_wait@@GLIBC_2.3.2 + 0.10% Messenger::ms_deliver_dispatch Thread: 14 (ms_local) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% DispatchQueue::LocalDeliveryThread::entry + 100.00% DispatchQueue::run_local_delivery + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 15 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 100.00% Cond::WaitUntil + 100.00% pthread_cond_timedwait@@GLIBC_2.3.2 Thread: 16 (fn_anonymous) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 100.00% std::condition_variable::wait(std::unique_lock&) + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 17 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 99.80% Cond::WaitUntil | + 99.80% pthread_cond_timedwait@@GLIBC_2.3.2 + 0.20% Context::complete Thread: 18 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 19 (flusher) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% ObjectCacher::FlusherThread::entry + 100.00% ObjectCacher::flusher_entry + 100.00% Cond::WaitInterval > > + 100.00% pthread_cond_timedwait@@GLIBC_2.3.2 Thread: 20 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 96.10% Cond::WaitUntil | + 96.10% pthread_cond_timedwait@@GLIBC_2.3.2 + 3.90% Context::complete + 3.90% FunctionContext::finish + 3.90% boost::function1::operator() + 3.90% MgrStandby::tick + 3.80% MgrStandby::send_beacon | + 3.80% collect_sys_info | + 3.80% _IO_new_fopen | + 3.80% __fopen_internal | + 3.80% _IO_new_file_fopen | + 3.80% __GI__IO_file_open | + 3.80% open64 + 0.10% ConfigProxy::get_val > > Thread: 21 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 100.00% Context::complete + 100.00% FunctionContext::finish + 100.00% boost::function1::operator() + 100.00% ActivePyModule::notify + 100.00% PyObject_CallMethod + 100.00% call_function_tail + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% ceph_state_get + 100.00% ActivePyModules::get_python + 100.00% ClusterState::with_pgmap > + 100.00% ActivePyModules::::operator() + 100.00% PGMap::dump + 100.00% PGMap::dump_osd_stats + 100.00% osd_stat_t::dump + 42.80% ceph::fixed_u_to_string[abi:cxx11](unsigned long, int) | + 26.40% std::__cxx11::basic_ostringstream, std::allocator >::basic_ostringstream(std::_Ios_Openmode) | | + 22.60% std::basic_ios >::init(std::basic_streambuf >*) | | | + 14.80% std::basic_ios >::_M_cache_locale(std::locale const&) | | | | + 2.80% std::num_put > > const& std::use_facet > > >(std::locale const&) | | | | | + 2.40% __dynamic_cast | | | | | | + 0.70% __cxxabiv1::__si_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const | | | | | + 0.10% std::locale::id::_M_id() const | | | | + 2.70% std::ctype const& std::use_facet >(std::locale const&) | | | | | + 2.10% __dynamic_cast | | | | | | + 1.50% __cxxabiv1::__vmi_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const | | | | | | + 0.60% __strcmp_sse2_unaligned | | | | | + 0.10% std::locale::id::_M_id() const | | | | + 2.60% bool std::has_facet >(std::locale const&) | | | | | + 2.30% __dynamic_cast | | | | | + 1.40% __cxxabiv1::__vmi_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const | | | | | + 0.30% __strcmp_sse2_unaligned | | | | | + 0.10% strcmp@plt | | | | + 2.10% bool std::has_facet > > >(std::locale const&) | | | | | + 1.70% __dynamic_cast | | | | | | + 0.90% __cxxabiv1::__si_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const | | | | | + 0.10% std::locale::id::_M_id() const | | | | + 2.00% std::num_get > > const& std::use_facet > > >(std::locale const&) | | | | | + 1.60% __dynamic_cast | | | | | | + 0.50% __cxxabiv1::__si_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const | | | | | + 0.10% std::locale::id::_M_id() const | | | | + 2.00% bool std::has_facet > > >(std::locale const&) | | | | + 1.90% __dynamic_cast | | | | + 0.60% __cxxabiv1::__si_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const | | | + 7.20% std::ios_base::_M_init() | | | + 2.90% std::locale::locale() | | | | + 0.40% std::locale::_S_initialize() | | | + 2.30% std::locale::operator=(std::locale const&) | | | + 1.70% std::locale::~locale() | | + 2.80% std::locale::locale() | | | + 0.80% std::locale::_S_initialize() | | + 0.70% std::ios_base::ios_base() | + 6.50% std::__cxx11::basic_ostringstream, std::allocator >::str | | + 6.40% std::__cxx11::basic_stringbuf, std::allocator >::str() const | | + 2.50% void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) [clone .isra.78] | | | + 0.60% __memmove_avx_unaligned_erms | | | + 0.10% memcpy@plt | | + 1.30% __memmove_avx_unaligned_erms | | + 0.30% memcpy@plt | + 4.20% std::ostream::operator<< | | + 4.20% std::ostream& std::ostream::_M_insert(unsigned long) | | + 2.70% std::ostreambuf_iterator > std::num_put > >::_M_insert_int(std::ostreambuf_iterator >, std::ios_base&, char, unsigned long) const | | | + 0.90% std::basic_streambuf >::xsputn(char const*, long) | | | + 0.30% std::__use_cache >::operator()(std::locale const&) const | | | + 0.30% int std::__int_to_char(char*, unsigned long, char const*, std::_Ios_Fmtflags, bool) | | | + 0.10% std::num_put > >::_M_pad(char, long, std::ios_base&, char*, char const*, int&) const | | + 0.90% std::ostream::sentry::~sentry() | | + 0.30% std::ostream::sentry::sentry(std::ostream&) | + 1.70% std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&) | | + 1.00% std::__cxx11::basic_string, std::allocator >::insert | | + 0.60% std::__cxx11::basic_string, std::allocator >::append | + 1.60% std::__cxx11::basic_string, std::allocator >::substr | | + 1.60% std::__cxx11::basic_string, std::allocator >::basic_string | | + 1.50% std::__cxx11::basic_string, std::allocator >::_M_construct | | | + 1.50% std::__cxx11::basic_string, std::allocator >::_M_construct_aux | | | + 1.50% std::__cxx11::basic_string, std::allocator >::_M_construct | | | + 0.30% std::__cxx11::basic_string, std::allocator >::_S_copy_chars | | + 0.10% std::__cxx11::basic_string, std::allocator >::_Alloc_hider::_Alloc_hider(char*, std::allocator&&) | + 1.60% std::__cxx11::basic_ostringstream, std::allocator >::~basic_ostringstream | | + 0.90% std::basic_ios >::~basic_ios | | + 0.70% std::__cxx11::basic_stringbuf, std::allocator >::~basic_stringbuf | + 0.60% std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, char const*) | + 0.10% std::basic_ios >::fill | + 0.10% std::__cxx11::basic_string, std::allocator >::~basic_string + 25.50% PyFormatter::open_object_section | + 21.70% PyDict_New | | + 21.10% _PyObject_GC_New | | | + 21.10% _PyObject_GC_Malloc | | | + 14.50% collect_generations | | | | + 14.50% collect | | | | + 8.20% update_refs | | | | + 3.10% subtract_refs | | | | | + 2.90% dict_traverse.lto_priv.405 | | | | | | + 1.60% visit_decref | | | | | | + 0.80% PyDict_Next | | | | | + 0.20% list_traverse.lto_priv.387 | | | | + 2.80% move_unreachable | | | | | + 2.50% dict_traverse.lto_priv.405 | | | | | | + 1.40% visit_reachable | | | | | | + 0.30% PyDict_Next | | | | | + 0.10% gc_list_move | | | | + 0.40% gc_list_size | | | + 6.40% PyObject_Malloc | | | | + 0.40% new_arena | | | + 0.20% PyErr_Occurred | | + 0.50% memset | + 3.80% PyFormatter::dump_pyobject | + 1.80% PyString_FromString | | + 1.10% PyObject_Malloc | | + 0.10% strlen | + 0.90% PyDict_SetItem | + 0.60% PyList_Append | + 0.10% PyList_Append@plt + 18.10% ceph::Formatter::dump_format_unquoted | + 17.60% PyFormatter::dump_format_va | + 8.20% vsnprintf | | + 8.10% ___vsnprintf_chk | | + 5.80% _IO_vfprintf_internal | | | + 1.30% __find_specmb | | | | + 1.10% strchrnul | | | + 1.20% __GI__IO_default_xsputn | | | | + 0.10% IO_validate_vtable | | | + 0.20% strlen | | | + 0.20% IO_validate_vtable | | + 0.70% _IO_str_init_static_internal | | + 0.50% _IO_no_init | + 5.70% PyFormatter::dump_pyobject | | + 3.80% PyString_FromString | | | + 2.90% PyObject_Malloc | | | | + 0.10% new_arena | | | + 0.20% strlen | | + 1.80% PyDict_SetItem | | + 1.10% dict_set_item_by_hash_or_entry | | | + 0.90% insertdict | | + 0.60% string_hash.lto_priv.452 | | + 0.10% PyObject_Hash | + 3.30% PyString_FromString | + 2.60% PyObject_Malloc | | + 0.10% new_arena | + 0.20% strlen | + 0.10% memcpy + 4.60% ctime_r | + 2.90% __asctime_r | | + 2.90% asctime_internal | | + 2.90% __snprintf | | + 2.90% _IO_vsnprintf | | + 2.70% _IO_vfprintf_internal | | | + 0.60% __GI__IO_padn | | | + 0.40% __find_specmb | | | + 0.10% strnlen | | | + 0.10% __GI__IO_default_xsputn | | | + 0.10% IO_validate_vtable | | + 0.10% _IO_str_init_static_internal | + 1.60% __localtime_r | + 1.60% __tz_convert | + 1.40% __tzfile_compute | | + 1.20% __tzset_parse_tz | | | + 1.00% parse_offset | | | | + 0.90% __sscanf | | | + 0.10% parse_tzname | | + 0.10% __tz_compute | + 0.10% __offtime + 2.70% PyFormatter::open_array_section | + 2.20% PyList_New | | + 2.20% _PyObject_GC_New | | + 2.20% _PyObject_GC_Malloc | | + 2.00% collect_generations | | | + 2.00% collect | | | + 1.10% subtract_refs | | | | + 1.00% dict_traverse.lto_priv.405 | | | | | + 0.60% visit_decref | | | | | + 0.40% PyDict_Next | | | | + 0.10% list_traverse.lto_priv.387 | | | + 0.50% move_unreachable | | | + 0.40% update_refs | | + 0.10% PyObject_Malloc | | + 0.10% PyErr_Occurred | + 0.50% PyFormatter::dump_pyobject + 2.70% PyFormatter::dump_pyobject | + 1.20% PyString_FromString | | + 1.00% PyObject_Malloc | | + 0.10% strlen | + 1.10% PyDict_SetItem | | + 0.40% string_hash.lto_priv.452 | | + 0.40% dict_set_item_by_hash_or_entry | + 0.30% PyList_Append + 0.80% PyFormatter::dump_string + 0.60% PyFormatter::dump_int + 0.40% std::__cxx11::basic_string, std::allocator >::basic_string + 0.40% std::_Rb_tree_const_iterator >::operator++ + 0.30% PyFormatter::close_section + 0.10% store_statfs_t::dump + 0.10% std::__cxx11::basic_string, std::allocator >::~basic_string + 0.10% objectstore_perf_stat_t::dump + 0.10% dump + 0.10% ctime_r@plt Thread: 22 (ms_dispatch) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% DispatchQueue::DispatchThread::entry + 100.00% DispatchQueue::entry + 100.00% Messenger::ms_deliver_dispatch + 100.00% Dispatcher::ms_dispatch2 + 100.00% DaemonServer::ms_dispatch + 100.00% ClusterState::ingest_pgstats + 100.00% std::lock_guard::lock_guard + 100.00% Mutex::lock + 100.00% __GI___pthread_mutex_lock + 100.00% __lll_lock_wait Thread: 23 (ms_local) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% DispatchQueue::LocalDeliveryThread::entry + 100.00% DispatchQueue::run_local_delivery + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 24 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 100.00% Context::complete + 100.00% FunctionContext::finish + 100.00% boost::function1::operator() + 100.00% DaemonServer::tick + 100.00% DaemonServer::send_report + 100.00% ClusterState::with_mutable_pgmap > + 100.00% std::lock_guard::lock_guard + 100.00% Mutex::lock + 100.00% __GI___pthread_mutex_lock + 100.00% __lll_lock_wait Thread: 25 (cmdfin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 100.00% std::condition_variable::wait(std::unique_lock&) + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 26 (balancer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% PyModuleRunner::PyModuleRunnerThread::entry + 100.00% PyModuleRunner::serve + 100.00% PyObject_CallMethod + 100.00% call_function_tail + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% ActivePyModules::get_osdmap + 100.00% PyEval_RestoreThread + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 27 (crash) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% PyModuleRunner::PyModuleRunnerThread::entry + 100.00% PyModuleRunner::serve + 100.00% PyObject_CallMethod + 100.00% call_function_tail + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% time_sleep + 100.00% floatsleep + 100.00% PyEval_RestoreThread + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 28 (devicehealth) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% PyModuleRunner::PyModuleRunnerThread::entry + 100.00% PyModuleRunner::serve + 100.00% PyObject_CallMethod + 100.00% call_function_tail + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% do_call + 100.00% PyObject_Call + 100.00% __pyx_pw_5rados_8requires_7wrapper_1validate_func + 100.00% __pyx_pf_5rados_8requires_7wrapper_validate_func + 100.00% __Pyx_PyObject_Call + 100.00% methoddescr_call + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% __pyx_pw_5rados_5Ioctx_103operate_write_op + 100.00% __pyx_pf_5rados_5Ioctx_102operate_write_op + 100.00% PyEval_RestoreThread + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 29 (progress) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% PyModuleRunner::PyModuleRunnerThread::entry + 100.00% PyModuleRunner::serve + 100.00% PyObject_CallMethod + 100.00% call_function_tail + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% time_sleep + 100.00% floatsleep + 100.00% PyEval_RestoreThread + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 30 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% t_bootstrap + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% ext_do_call + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% time_sleep + 100.00% floatsleep + 100.00% PyEval_RestoreThread + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 31 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% t_bootstrap + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% ext_do_call + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% time_sleep + 100.00% floatsleep + 100.00% PyEval_RestoreThread + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 32 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% t_bootstrap + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% time_sleep + 100.00% floatsleep + 100.00% PyEval_RestoreThread + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 33 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% t_bootstrap + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% lock_PyThread_acquire_lock + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 34 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% t_bootstrap + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% lock_PyThread_acquire_lock + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 35 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% t_bootstrap + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% lock_PyThread_acquire_lock + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 36 (mgr-fin) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% t_bootstrap + 100.00% PyEval_CallObjectWithKeywords + 100.00% PyObject_Call + 100.00% instancemethod_call.lto_priv.271 + 100.00% PyObject_Call + 100.00% function_call.lto_priv.355 + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% fast_function + 100.00% PyEval_EvalCodeEx + 100.00% PyEval_EvalFrameEx + 100.00% call_function + 100.00% lock_PyThread_acquire_lock + 100.00% PyThread_acquire_lock + 100.00% __new_sem_wait_slow + 100.00% do_futex_wait + 100.00% futex_abstimed_wait_cancelable Thread: 37 (devicehealth) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% execute_native_thread_routine + 100.00% ceph::timer_detail::timer::timer_thread + 100.00% std::condition_variable::wait_until > > + 100.00% std::condition_variable::__wait_until_impl > > + 100.00% __gthread_cond_timedwait + 100.00% pthread_cond_timedwait@@GLIBC_2.3.2 Thread: 38 (ms_dispatch) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% DispatchQueue::DispatchThread::entry + 100.00% DispatchQueue::entry + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 39 (ms_local) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% DispatchQueue::LocalDeliveryThread::entry + 100.00% DispatchQueue::run_local_delivery + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 40 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 99.80% Cond::WaitUntil | + 99.80% pthread_cond_timedwait@@GLIBC_2.3.2 + 0.20% Context::complete Thread: 41 (fn_anonymous) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 99.80% std::condition_variable::wait(std::unique_lock&) | + 99.80% pthread_cond_wait@@GLIBC_2.3.2 + 0.20% Context::complete Thread: 42 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 43 (safe_timer) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% SafeTimerThread::entry + 100.00% SafeTimer::timer_thread + 100.00% Cond::Wait + 100.00% pthread_cond_wait@@GLIBC_2.3.2 Thread: 44 (fn-radosclient) - 1000 samples + 100.00% clone + 100.00% start_thread + 100.00% Finisher::finisher_thread_entry + 100.00% std::condition_variable::wait(std::unique_lock&) + 100.00% pthread_cond_wait@@GLIBC_2.3.2