Project

General

Profile

Bug #43364 » mgr-callgraph.txt

Eric Petit, 12/20/2019 06:51 AM

 


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<void(), NetworkStack::add_thread(unsigned int)::<lambda()> >::_M_invoke(const std::_Any_data &)
+ 100.00% NetworkStack::<lambda()>::operator()
+ 100.00% EventCenter::process_events
+ 56.60% EventCenter::process_time_events
| + 49.30% AsyncConnection::wakeup_from
| | + 43.90% AsyncConnection::process
| | | + 35.10% ProtocolV2::read_event
| | | | + 34.90% ProtocolV2::run_continuation
| | | | + 34.70% ProtocolV2::throttle_message
| | | | | + 23.40% Throttle::get_or_fail
| | | | | | + 10.70% std::lock_guard<std::mutex>::~lock_guard
| | | | | | | + 10.70% std::mutex::unlock
| | | | | | | + 10.70% __gthread_mutex_unlock
| | | | | | | + 10.70% __pthread_mutex_unlock_usercnt
| | | | | | | + 10.00% __lll_unlock_wake
| | | | | | + 8.80% std::lock_guard<std::mutex>::lock_guard
| | | | | | | + 8.80% std::mutex::lock
| | | | | | | + 8.80% __gthread_mutex_lock
| | | | | | | + 8.70% __GI___pthread_mutex_lock
| | | | | | | + 7.00% __lll_lock_wait
| | | | | | + 1.90% PerfCounters::inc
| | | | | | + 0.10% Throttle::_should_wait
| | | | | + 10.00% EventCenter::create_time_event
| | | | | | + 4.90% std::multimap<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, EventCenter::TimeEvent, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::insert(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&)
| | | | | | | + 4.90% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_insert_equal<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&)
| | | | | | | + 3.60% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_get_insert_equal_pos
| | | | | | | | + 0.10% std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >::operator()
| | | | | | | + 1.30% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_insert_<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&, std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node&)
| | | | | | | + 0.40% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node::operator()<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&) const
| | | | | | | + 0.30% std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| | | | | | + 4.70% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::operator[]
| | | | | | | + 3.10% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::lower_bound
| | | | | | | | + 3.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::lower_bound
| | | | | | | | + 3.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound
| | | | | | | + 1.50% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | | | | | + 0.60% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_insert_node
| | | | | | | + 0.50% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | | | | | + 0.40% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_get_insert_hint_unique_pos
| | | | | | + 0.10% ceph::time_detail::coarse_mono_clock::now
| | | | | + 1.00% std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >::insert(unsigned long&&)
| | | | | + 1.00% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_M_insert_unique<unsigned long>(unsigned long&&)
| | | | | + 0.90% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_M_insert_<unsigned long, std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, unsigned long&&, std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_Alloc_node&)
| | | | + 0.10% CtFun<ProtocolV2>::call
| | | + 2.80% AsyncConnection::<lambda(auto:48)>::operator()<CephContext*>
| | | | + 2.80% ceph::logging::SubsystemMap::should_gather<27u, 20>
| | | + 2.30% ceph::time_detail::mono_clock::now
| | | | + 2.30% __GI___clock_gettime
| | | | + 2.10% clock_gettime
| | | | + 1.30% ???
| | | + 0.50% ceph::time_detail::coarse_mono_clock::now
| | | + 0.40% std::lock_guard<std::mutex>::lock_guard
| | | + 0.30% std::lock_guard<std::mutex>::~lock_guard
| | | + 0.30% PerfCounters::tinc
| | + 3.50% std::mutex::lock
| | | + 3.50% __gthread_mutex_lock
| | | + 3.30% __GI___pthread_mutex_lock
| | + 0.90% std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >::erase
| | + 0.90% std::mutex::unlock
| + 3.80% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::erase
| | + 3.80% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::erase
| | + 2.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::equal_range
| | | + 0.40% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_upper_bound
| | + 1.70% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux
| | + 1.60% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux
| | | + 1.10% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| | | + 0.50% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_drop_node
| | + 0.10% std::_Rb_tree_const_iterator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >::operator++
| + 1.90% std::multimap<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, EventCenter::TimeEvent, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >)
| + 1.90% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >)
| + 1.90% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > 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.70% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_drop_node
+ 42.10% EpollDriver::event_wait
| + 42.10% epoll_wait
+ 0.80% AsyncConnection::process
+ 0.10% std::vector<FiredFileEvent, std::allocator<FiredFileEvent> >::~vector
+ 0.10% ceph::time_detail::mono_clock::now
+ 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<void(), NetworkStack::add_thread(unsigned int)::<lambda()> >::_M_invoke(const std::_Any_data &)
+ 100.00% NetworkStack::<lambda()>::operator()
+ 99.90% EventCenter::process_events
+ 58.70% EventCenter::process_time_events
| + 50.60% AsyncConnection::wakeup_from
| | + 41.70% AsyncConnection::process
| | | + 31.00% ProtocolV2::read_event
| | | | + 30.40% ProtocolV2::run_continuation
| | | | + 30.10% ProtocolV2::throttle_message
| | | | + 19.20% Throttle::get_or_fail
| | | | | + 9.20% std::lock_guard<std::mutex>::~lock_guard
| | | | | | + 9.20% std::mutex::unlock
| | | | | | + 9.20% __gthread_mutex_unlock
| | | | | | + 9.20% __pthread_mutex_unlock_usercnt
| | | | | | + 8.60% __lll_unlock_wake
| | | | | + 7.40% std::lock_guard<std::mutex>::lock_guard
| | | | | | + 7.40% std::mutex::lock
| | | | | | + 7.30% __gthread_mutex_lock
| | | | | | + 7.30% __GI___pthread_mutex_lock
| | | | | | + 6.20% __lll_lock_wait
| | | | | + 1.60% PerfCounters::inc
| | | | | + 0.10% std::unique_ptr<PerfCounters, PerfCountersDeleter>::operator bool
| | | | + 9.50% EventCenter::create_time_event
| | | | | + 4.80% std::multimap<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, EventCenter::TimeEvent, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::insert(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&)
| | | | | | + 4.80% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_insert_equal<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&)
| | | | | | + 3.60% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_get_insert_equal_pos
| | | | | | + 1.20% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_insert_<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&, std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node&)
| | | | | | + 0.70% std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| | | | | | + 0.40% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node::operator()<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&) const
| | | | | + 3.90% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::operator[]
| | | | | | + 2.60% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::lower_bound
| | | | | | | + 2.60% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::lower_bound
| | | | | | | + 2.60% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound
| | | | | | + 1.30% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | | | | + 1.00% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_insert_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.20% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_get_insert_hint_unique_pos
| | | | | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | | | + 0.50% ceph::time_detail::coarse_mono_clock::now
| | | | + 0.60% std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >::insert(unsigned long&&)
| | | + 3.50% ceph::time_detail::mono_clock::now
| | | | + 3.30% __GI___clock_gettime
| | | | | + 2.90% clock_gettime
| | | | | + 1.70% ???
| | | | + 0.10% clock_gettime@plt
| | | + 2.50% AsyncConnection::<lambda(auto:48)>::operator()<CephContext*>
| | | | + 2.50% ceph::logging::SubsystemMap::should_gather<27u, 20>
| | | + 0.40% std::lock_guard<std::mutex>::~lock_guard
| | | + 0.30% PerfCounters::tinc
| | | + 0.20% ceph::time_detail::coarse_mono_clock::now
| | | + 0.10% std::lock_guard<std::mutex>::lock_guard
| | + 4.80% std::mutex::lock
| | | + 4.70% __gthread_mutex_lock
| | | + 4.40% __GI___pthread_mutex_lock
| | | + 0.10% pthread_mutex_lock@plt
| | + 2.20% std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >::erase
| | | + 2.20% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::erase
| | | + 1.60% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::equal_range
| | | + 0.50% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_M_erase_aux
| | + 1.70% std::mutex::unlock
| | + 1.70% __gthread_mutex_unlock
| | + 1.70% __pthread_mutex_unlock_usercnt
| + 3.90% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::erase
| | + 3.90% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::erase
| | + 2.50% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux
| | | + 2.50% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux
| | | + 1.90% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| | | + 0.60% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_drop_node
| | + 1.40% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::equal_range
| | + 0.20% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_upper_bound
| | + 0.20% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound
| + 2.20% std::multimap<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, EventCenter::TimeEvent, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >)
| + 2.20% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >)
| + 2.20% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_erase_aux
| + 1.30% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| + 0.90% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_drop_node
+ 36.40% EpollDriver::event_wait
| + 36.30% epoll_wait
+ 2.70% AsyncConnection::process
| + 0.90% std::function<void (char*, long)>::operator()(char*, long) const
| + 0.70% ProtocolV2::read_event
| + 0.50% AsyncConnection::read(unsigned int, char*, std::function<void (char*, long)>)
| + 0.30% ceph::time_detail::mono_clock::now
+ 1.10% AsyncConnection::handle_write
| + 1.10% ProtocolV2::write_event
| + 0.60% ProtocolV2::prepare_send_message
| + 0.50% ProtocolV2::write_message
+ 0.40% C_clean_handler::do_request
+ 0.20% std::vector<FiredFileEvent, std::allocator<FiredFileEvent> >::~vector
+ 0.20% AsyncMessenger::reap_dead
+ 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<void(), NetworkStack::add_thread(unsigned int)::<lambda()> >::_M_invoke(const std::_Any_data &)
+ 100.00% NetworkStack::<lambda()>::operator()
+ 99.80% EventCenter::process_events
| + 57.50% EventCenter::process_time_events
| | + 47.40% AsyncConnection::wakeup_from
| | | + 39.40% AsyncConnection::process
| | | | + 26.70% ProtocolV2::read_event
| | | | | + 26.20% ProtocolV2::run_continuation
| | | | | + 25.80% ProtocolV2::throttle_message
| | | | | | + 13.00% EventCenter::create_time_event
| | | | | | | + 7.60% std::multimap<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, EventCenter::TimeEvent, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::insert(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&)
| | | | | | | | + 7.60% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_insert_equal<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&)
| | | | | | | | + 5.50% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_get_insert_equal_pos
| | | | | | | | | + 0.10% std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >::operator()
| | | | | | | | + 2.10% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_insert_<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&, std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node&)
| | | | | | | | + 1.50% std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| | | | | | | | + 0.50% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_Alloc_node::operator()<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >(std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>&&) const
| | | | | | | + 4.40% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::operator[]
| | | | | | | | + 3.30% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::lower_bound
| | | | | | | | | + 3.30% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::lower_bound
| | | | | | | | | + 3.30% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound
| | | | | | | | + 1.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | | | | | | + 0.80% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_insert_node
| | | | | | | | + 0.20% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_get_insert_hint_unique_pos
| | | | | | | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | | | | | + 0.50% ceph::time_detail::coarse_mono_clock::now
| | | | | | | + 0.10% EventCenter::in_thread
| | | | | | + 11.20% Throttle::get_or_fail
| | | | | | | + 7.10% std::lock_guard<std::mutex>::lock_guard
| | | | | | | | + 7.10% std::mutex::lock
| | | | | | | | + 7.10% __gthread_mutex_lock
| | | | | | | | + 7.00% __GI___pthread_mutex_lock
| | | | | | | | + 6.30% __lll_lock_wait
| | | | | | | + 3.10% std::lock_guard<std::mutex>::~lock_guard
| | | | | | | | + 3.10% std::mutex::unlock
| | | | | | | | + 3.10% __gthread_mutex_unlock
| | | | | | | | + 3.10% __pthread_mutex_unlock_usercnt
| | | | | | | | + 2.20% __lll_unlock_wake
| | | | | | | + 0.80% PerfCounters::inc
| | | | | | + 0.80% std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >::insert(unsigned long&&)
| | | | | + 0.30% CtFun<ProtocolV2>::call
| | | | + 3.40% AsyncConnection::<lambda(auto:48)>::operator()<CephContext*>
| | | | | + 3.40% ceph::logging::SubsystemMap::should_gather<27u, 20>
| | | | + 2.20% ceph::time_detail::mono_clock::now
| | | | | + 2.20% __GI___clock_gettime
| | | | | + 2.10% clock_gettime
| | | | | + 1.20% ???
| | | | + 0.90% std::lock_guard<std::mutex>::lock_guard
| | | | + 0.70% std::lock_guard<std::mutex>::~lock_guard
| | | | + 0.70% PerfCounters::tinc
| | | | + 0.30% ceph::time_detail::coarse_mono_clock::now
| | | + 4.30% std::mutex::lock
| | | | + 4.20% __gthread_mutex_lock
| | | | + 4.20% __GI___pthread_mutex_lock
| | | + 2.30% std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >::erase
| | | | + 2.30% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::erase
| | | | + 1.40% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::equal_range
| | | | + 0.70% std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_M_erase_aux
| | | + 1.30% std::mutex::unlock
| | | + 1.30% __gthread_mutex_unlock
| | | + 1.20% __pthread_mutex_unlock_usercnt
| | + 4.40% std::map<unsigned long, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::erase
| | | + 4.40% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::erase
| | | + 2.30% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::equal_range
| | | | + 1.20% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_upper_bound
| | | | + 0.30% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_lower_bound
| | | + 2.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux
| | | + 1.70% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_erase_aux
| | | | + 1.40% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| | | | + 0.30% std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >, std::_Select1st<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > > >::_M_drop_node
| | | + 0.40% std::_Rb_tree_const_iterator<std::pair<unsigned long const, std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > > >::operator++
| | + 2.70% std::multimap<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, EventCenter::TimeEvent, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >)
| | + 2.70% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >)
| | + 2.70% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_erase_aux
| | + 2.10% std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
| | + 0.60% std::_Rb_tree<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >, std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent>, std::_Select1st<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> >, std::less<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > const, EventCenter::TimeEvent> > >::_M_drop_node
| + 40.60% EpollDriver::event_wait
| | + 40.60% epoll_wait
| + 1.20% AsyncConnection::process
| | + 0.70% ProtocolV2::read_event
| | + 0.20% std::function<void (char*, long)>::operator()(char*, long) const
| | + 0.10% ceph::time_detail::mono_clock::now
| | + 0.10% EventCenter::create_file_event
| | + 0.10% AsyncConnection::<lambda(auto:48)>::operator()<CephContext*>
| + 0.10% C_handle_notify::do_request
+ 0.10% NetworkStack::<lambda()>::<lambda(auto:22)>::operator()<CephContext*>

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<std::mutex>&)
+ 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<unsigned long, std::ratio<1l, 1000000000l> >
+ 100.00% std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >
+ 100.00% std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >
+ 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
+ 99.90% poll
| + 99.90% poll
+ 0.10% AdminSocket::do_accept

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<ceph::time_detail::coarse_mono_clock>::timer_thread
+ 100.00% std::condition_variable::wait_until<ceph::time_detail::coarse_mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >
+ 100.00% std::condition_variable::__wait_until_impl<std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > >
+ 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<std::mutex>&)
+ 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<std::mutex>&)
+ 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<std::mutex>&)
+ 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% __pthread_mutex_cond_lock
+ 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<std::mutex>&)
+ 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
+ 100.00% Cond::WaitUntil
+ 100.00% pthread_cond_timedwait@@GLIBC_2.3.2

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<std::chrono::duration<long, std::ratio<1l, 1l> > >
+ 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.30% Cond::WaitUntil
| + 96.30% pthread_cond_timedwait@@GLIBC_2.3.2
+ 3.70% Context::complete
+ 3.70% FunctionContext::finish
+ 3.70% boost::function1<void, int>::operator()
+ 3.70% MgrStandby::tick
+ 3.70% MgrStandby::send_beacon
+ 3.70% collect_sys_info
+ 3.70% _IO_new_fopen
+ 3.70% __fopen_internal
+ 3.70% _IO_new_file_fopen
+ 3.70% __GI__IO_file_open
+ 3.70% open64

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<void, int>::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<ActivePyModules::get_python(const string&)::<lambda(const PGMap&)> >
+ 100.00% ActivePyModules::<lambda(const PGMap&)>::operator()
+ 100.00% PGMap::dump
+ 100.00% PGMap::dump_osd_stats
+ 100.00% osd_stat_t::dump
+ 52.00% PyFormatter::open_object_section
| + 50.30% PyDict_New
| | + 49.70% _PyObject_GC_New
| | | + 49.70% _PyObject_GC_Malloc
| | | + 45.50% collect_generations
| | | | + 45.50% collect
| | | | + 30.00% subtract_refs
| | | | | + 22.30% dict_traverse.lto_priv.405
| | | | | | + 15.40% visit_decref
| | | | | | | + 0.10% type_is_gc.lto_priv.155
| | | | | | + 6.00% PyDict_Next
| | | | | + 5.30% list_traverse.lto_priv.387
| | | | | | + 4.30% visit_decref
| | | | | + 0.40% type_traverse.lto_priv.150
| | | | | + 0.40% func_traverse.lto_priv.356
| | | | | + 0.20% visit_decref
| | | | | + 0.20% subtype_traverse
| | | | | + 0.20% set_traverse.lto_priv.137
| | | | + 13.40% update_refs
| | | | + 1.80% move_unreachable
| | | | | + 1.20% dict_traverse.lto_priv.405
| | | | | | + 0.60% visit_reachable
| | | | | | + 0.50% PyDict_Next
| | | | | + 0.30% list_traverse.lto_priv.387
| | | | + 0.30% gc_list_size
| | | + 4.00% PyObject_Malloc
| | | + 0.40% new_arena
| | + 0.40% memset
| + 1.60% PyFormatter::dump_pyobject
| | + 0.60% PyString_FromString
| | + 0.40% PyList_Append
| | + 0.20% PyDict_SetItem
| | + 0.10% PyList_Append@plt
| + 0.10% std::stack<_object*, std::deque<_object*, std::allocator<_object*> > >::push
+ 25.80% ceph::fixed_u_to_string[abi:cxx11](unsigned long, int)
| + 16.00% std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(std::_Ios_Openmode)
| | + 14.80% std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)
| | | + 10.50% std::basic_ios<char, std::char_traits<char> >::_M_cache_locale(std::locale const&)
| | | | + 2.80% std::ctype<char> const& std::use_facet<std::ctype<char> >(std::locale const&)
| | | | | + 2.50% __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.80% __strcmp_sse2_unaligned
| | | | | + 0.10% std::locale::id::_M_id() const
| | | | + 1.90% bool std::has_facet<std::ctype<char> >(std::locale const&)
| | | | | + 1.80% __dynamic_cast
| | | | | + 1.00% __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.40% __strcmp_sse2_unaligned
| | | | + 1.80% bool std::has_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > >(std::locale const&)
| | | | | + 1.50% __dynamic_cast
| | | | | + 0.20% __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
| | | | + 1.30% std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > >(std::locale const&)
| | | | | + 1.00% __dynamic_cast
| | | | | + 0.10% __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
| | | | + 1.20% std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > >(std::locale const&)
| | | | | + 0.90% __dynamic_cast
| | | | + 1.10% bool std::has_facet<std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > >(std::locale const&)
| | | | + 0.80% __dynamic_cast
| | | + 3.70% std::ios_base::_M_init()
| | | + 1.30% std::locale::locale()
| | | | + 0.30% std::locale::_S_initialize()
| | | + 1.10% std::locale::~locale()
| | | + 1.10% std::locale::operator=(std::locale const&)
| | + 0.80% std::locale::locale()
| | + 0.40% std::ios_base::ios_base()
| + 2.80% std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::str
| | + 2.80% std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const
| | + 1.20% void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) [clone .isra.78]
| | | + 0.10% memcpy@plt
| | | + 0.10% __memmove_avx_unaligned_erms
| | + 0.60% __memmove_avx_unaligned_erms
| + 2.70% std::ostream::operator<<
| | + 2.70% std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)
| | + 1.80% std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<unsigned long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long) const
| | | + 0.60% std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long)
| | | + 0.50% int std::__int_to_char<char, unsigned long>(char*, unsigned long, char const*, std::_Ios_Fmtflags, bool)
| | | + 0.10% std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_pad(char, long, std::ios_base&, char*, char const*, int&) const
| | | + 0.10% std::__use_cache<std::__numpunct_cache<char> >::operator()(std::locale const&) const
| | + 0.50% std::ostream::sentry::~sentry()
| | + 0.20% std::ostream::sentry::sentry(std::ostream&)
| + 2.10% std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream
| | + 1.10% std::basic_ios<char, std::char_traits<char> >::~basic_ios
| | | + 0.50% std::ios_base::~ios_base()
| | | + 0.20% std::locale::~locale()
| | + 0.60% std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf
| | + 0.30% std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
| + 0.70% std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
| + 0.60% std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::substr
| + 0.20% std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const*)
| + 0.10% std::basic_ios<char, std::char_traits<char> >::fill
| + 0.10% std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string
+ 14.50% ceph::Formatter::dump_format_unquoted
| + 13.90% PyFormatter::dump_format_va
| + 7.00% PyFormatter::dump_pyobject
| | + 3.70% PyDict_SetItem
| | | + 1.60% string_hash.lto_priv.452
| | | + 1.10% dict_set_item_by_hash_or_entry
| | | | + 0.90% insertdict
| | | + 0.20% PyObject_Hash
| | + 2.60% PyString_FromString
| | + 2.00% PyObject_Malloc
| | | + 0.30% new_arena
| | + 0.10% strlen@plt
| | + 0.10% strlen
| + 3.80% vsnprintf
| | + 3.80% ___vsnprintf_chk
| | + 2.60% _IO_vfprintf_internal
| | | + 0.50% __find_specmb
| | | + 0.50% __GI__IO_default_xsputn
| | | + 0.10% strlen
| | + 0.20% _IO_str_init_static_internal
| | + 0.20% _IO_no_init
| + 3.00% PyString_FromString
| + 1.60% PyObject_Malloc
| | + 0.10% new_arena
| + 0.30% strlen
| + 0.10% memcpy
+ 2.30% ctime_r
| + 1.50% __asctime_r
| | + 1.50% asctime_internal
| | + 1.50% __snprintf
| | + 1.50% _IO_vsnprintf
| | + 1.20% _IO_vfprintf_internal
| | | + 0.20% strnlen
| | | + 0.20% read_int
| | | + 0.20% __GI__IO_default_xsputn
| | | + 0.10% _itoa_word
| | + 0.10% _IO_str_init_static_internal
| + 0.80% __localtime_r
+ 1.60% PyFormatter::dump_pyobject
| + 0.80% PyString_FromString
| + 0.70% PyDict_SetItem
| + 0.10% PyList_Append
+ 1.10% PyFormatter::open_array_section
| + 0.80% PyList_New
| + 0.20% PyList_New@plt
| + 0.10% PyFormatter::dump_pyobject
+ 0.60% std::_Rb_tree_const_iterator<std::pair<int const, osd_stat_t::Interfaces> >::operator++
+ 0.50% PyFormatter::dump_string
+ 0.50% PyFormatter::dump_int
+ 0.30% std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string
+ 0.20% dump
+ 0.10% PyFormatter::close_section

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<Mutex>::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<void, int>::operator()
+ 100.00% DaemonServer::tick
+ 100.00% DaemonServer::send_report
+ 100.00% ClusterState::with_mutable_pgmap<DaemonServer::send_report()::<lambda(PGMap&)> >
+ 100.00% std::lock_guard<Mutex>::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<std::mutex>&)
+ 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_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: 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_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: 29 (diskprediction_) - 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 (diskprediction_) - 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: 31 (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: 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% 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: 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% 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: 34 (telemetry) - 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: 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_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: 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 (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: 38 (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: 39 (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
(1-1/4)