Created
September 3, 2020 22:55
-
-
Save jdurgin/9628c529e009bd61e06f9dac8da2518e to your computer and use it in GitHub Desktop.
4k random write osd wallclock profile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Thread: 1 (ceph-osd) - 1000 samples | |
| + 100.00% main | |
| + 100.00% AsyncMessenger::wait | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 2 (log) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ceph::logging::Log::entry | |
| + 99.90% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 99.90% pthread_cond_wait@@GLIBC_2.3.2 | |
| + 0.10% std::unique_lock<std::mutex>::unlock | |
| Thread: 3 (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: 4 (admin_socket) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% AdminSocket::entry | |
| + 100.00% poll | |
| + 100.00% poll | |
| Thread: 5 (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 | |
| + 100.00% EpollDriver::event_wait | |
| + 100.00% epoll_wait | |
| Thread: 6 (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() | |
| + 100.00% EventCenter::process_events | |
| + 44.20% AsyncConnection::process | |
| | + 43.60% std::function<void (char*, long)>::operator()(char*, long) const | |
| | | + 43.60% std::_Function_handler<void(char*, long int), ProtocolV1::read(CONTINUATION_RX_TYPE<ProtocolV1>&, int, char*)::<lambda(char*, int)> >::_M_invoke(const std::_Any_data &, char *&&, long &&) | |
| | | + 43.60% ProtocolV1::<lambda(char*, int)>::operator() | |
| | | + 22.00% ProtocolV1::handle_message_footer | |
| | | | + 13.10% DispatchQueue::fast_dispatch | |
| | | | | + 13.10% DispatchQueue::fast_dispatch | |
| | | | | + 12.50% Messenger::ms_fast_dispatch | |
| | | | | | + 12.40% Dispatcher::ms_fast_dispatch2 | |
| | | | | | | + 12.40% OSD::ms_fast_dispatch | |
| | | | | | | + 8.30% OSD::enqueue_op | |
| | | | | | | + 4.00% OpTracker::create_request<OpRequest, Message*> | |
| | | | | | + 0.10% boost::intrusive_ptr<Message const>::intrusive_ptr<Message> | |
| | | | | + 0.50% DispatchQueue::post_dispatch | |
| | | | | + 0.10% DispatchQueue::pre_dispatch | |
| | | | + 7.00% decode_message | |
| | | | + 0.60% ceph::buffer::v14_2_0::list::clear | |
| | | | + 0.20% ceph::time_detail::mono_clock::now | |
| | | | + 0.20% PerfCounters::tinc | |
| | | | + 0.20% Connection::is_blackhole | |
| | | | + 0.10% std::mutex::unlock | |
| | | | + 0.10% std::mutex::lock | |
| | | | + 0.10% boost::intrusive_ptr<Message const>::~intrusive_ptr | |
| | | | + 0.10% boost::intrusive_ptr<Connection>::intrusive_ptr | |
| | | | + 0.10% ProtocolV1::<lambda(auto:102)>::operator()<CephContext*> | |
| | | | + 0.10% Messenger::ms_fast_preprocess | |
| | | + 14.30% ProtocolV1::read_message_data | |
| | | | + 13.80% ProtocolV1::read | |
| | | | | + 13.80% AsyncConnection::read(unsigned int, char*, std::function<void (char*, long)>) | |
| | | | | + 13.80% AsyncConnection::read_until | |
| | | | | + 12.50% AsyncConnection::read_bulk | |
| | | | | | + 12.40% ConnectedSocket::read | |
| | | | | | + 12.20% PosixConnectedSocketImpl::read | |
| | | | | | + 12.10% read | |
| | | | | | + 12.10% read | |
| | | | | | + 0.60% __pthread_enable_asynccancel | |
| | | | | + 1.30% memcpy | |
| | | | + 0.20% ceph::buffer::v14_2_0::ptr::~ptr | |
| | | | + 0.10% ceph::buffer::v14_2_0::list::iterator_impl<false>::get_current_ptr | |
| | | | + 0.10% ProtocolV1::read_message_footer | |
| | | + 2.80% ProtocolV1::handle_message_front | |
| | | + 1.50% ProtocolV1::throttle_dispatch_queue | |
| | | + 0.80% ProtocolV1::wait_message | |
| | | + 0.80% ProtocolV1::throttle_bytes | |
| | | + 0.50% ProtocolV1::handle_message_header | |
| | | + 0.50% ProtocolV1::handle_message_data | |
| | | + 0.30% ProtocolV1::handle_message | |
| | + 0.60% AsyncConnection::read(unsigned int, char*, std::function<void (char*, long)>) | |
| + 28.60% AsyncConnection::handle_write | |
| | + 28.60% ProtocolV1::write_event | |
| | + 19.60% ProtocolV1::write_message | |
| | | + 16.40% AsyncConnection::_try_send | |
| | | | + 16.40% ConnectedSocket::send | |
| | | | + 16.40% PosixConnectedSocketImpl::send | |
| | | | + 16.40% PosixConnectedSocketImpl::do_sendmsg | |
| | | | + 16.30% sendmsg | |
| | | + 1.80% RefCountedObject::put | |
| | | + 1.10% ceph::buffer::v14_2_0::list::append | |
| | | + 0.20% std::__atomic_base<unsigned long>::operator++ | |
| | | + 0.10% ceph::buffer::v14_2_0::list::claim_append | |
| | + 6.10% ProtocolV1::prepare_send_message | |
| | + 1.10% ProtocolV1::_get_next_outgoing | |
| | + 1.00% std::mutex::lock | |
| | + 0.30% std::mutex::unlock | |
| | + 0.30% PerfCounters::tinc | |
| | + 0.20% ceph::time_detail::mono_clock::now | |
| + 25.50% EpollDriver::event_wait | |
| | + 25.50% epoll_wait | |
| + 1.40% C_handle_notify::do_request | |
| + 0.10% std::deque<EventCallback*, std::allocator<EventCallback*> >::~deque | |
| + 0.10% std::deque<EventCallback*, std::allocator<EventCallback*> >::deque | |
| Thread: 7 (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() | |
| + 100.00% EventCenter::process_events | |
| + 97.90% EpollDriver::event_wait | |
| | + 97.90% epoll_wait | |
| + 2.10% AsyncConnection::handle_write | |
| Thread: 8 (signal_handler) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SignalHandler::entry | |
| + 100.00% poll | |
| + 100.00% poll | |
| Thread: 9 (OpHistorySvc) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% OpHistoryServiceThread::entry | |
| + 99.60% usleep | |
| | + 99.60% nanosleep | |
| + 0.20% std::pair<utime_t, boost::intrusive_ptr<TrackedOp> >::~pair | |
| + 0.20% OpHistory::_insert_delayed | |
| Thread: 10 (ceph-osd) - 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: 11 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 100.00% std::condition_variable::wait_until<ceph::time_detail::real_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: 12 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 95.00% std::condition_variable::wait_until<ceph::time_detail::real_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 95.00% std::condition_variable::__wait_until_impl<std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 95.00% __gthread_cond_timedwait | |
| | + 95.00% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| + 5.00% Context::complete | |
| Thread: 13 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 14 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 15 (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: 16 (bstore_aio) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% KernelDevice::AioCompletionThread::entry | |
| + 100.00% KernelDevice::_aio_thread | |
| + 94.80% aio_queue_t::get_next_completed | |
| | + 94.70% __io_getevents_0_4 | |
| | + 0.10% io_getevents | |
| + 4.70% BlueStore::_txc_state_proc | |
| Thread: 17 (bstore_discard) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% KernelDevice::DiscardThread::entry | |
| + 100.00% KernelDevice::_discard_thread | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 18 (rocksdb:low0) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper | |
| + 100.00% rocksdb::ThreadPoolImpl::Impl::BGThread | |
| + 74.20% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 74.20% pthread_cond_wait@@GLIBC_2.3.2 | |
| + 25.80% std::function<void ()>::operator()() const | |
| + 25.80% rocksdb::DBImpl::BGWorkCompaction | |
| + 25.60% rocksdb::DBImpl::BackgroundCallCompaction | |
| | + 25.60% rocksdb::DBImpl::BackgroundCompaction | |
| | + 25.60% rocksdb::CompactionJob::Run | |
| | + 25.60% rocksdb::CompactionJob::ProcessKeyValueCompaction | |
| | + 17.70% rocksdb::CompactionIterator::Next | |
| | | + 10.00% rocksdb::MergingIterator::Next | |
| | | | + 9.70% rocksdb::IteratorWrapperBase<rocksdb::Slice>::Next | |
| | | | + 0.20% rocksdb::BinaryHeap<rocksdb::IteratorWrapperBase<rocksdb::Slice>*, rocksdb::MinIteratorComparator>::replace_top | |
| | | + 7.60% rocksdb::CompactionIterator::NextFromInput | |
| | + 5.40% rocksdb::BlockBasedTableBuilder::Add | |
| | + 1.10% rocksdb::CompactionJob::FinishCompactionOutputFile | |
| | + 0.30% rocksdb::VersionSet::MakeInputIterator | |
| | + 0.30% rocksdb::MergingIterator::SeekToFirst | |
| | + 0.30% rocksdb::FileMetaData::UpdateBoundaries | |
| | + 0.20% rocksdb::CompactionIterator::PrepareOutput | |
| | + 0.10% rocksdb::CompactionJob::SubcompactionState::ShouldStopBefore | |
| + 0.20% tcmalloc::ThreadCache::Scavenge() | |
| Thread: 19 (rocksdb:low1) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper | |
| + 100.00% rocksdb::ThreadPoolImpl::Impl::BGThread | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 20 (rocksdb:high0) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper | |
| + 100.00% rocksdb::ThreadPoolImpl::Impl::BGThread | |
| + 63.80% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 63.80% pthread_cond_wait@@GLIBC_2.3.2 | |
| + 36.20% std::function<void ()>::operator()() const | |
| + 36.20% rocksdb::DBImpl::BackgroundCallFlush | |
| + 36.20% rocksdb::DBImpl::BackgroundFlush | |
| + 36.20% rocksdb::DBImpl::FlushMemTablesToOutputFiles | |
| + 36.20% rocksdb::DBImpl::FlushMemTableToOutputFile | |
| + 36.20% rocksdb::FlushJob::Run | |
| + 36.20% rocksdb::FlushJob::WriteLevel0Table | |
| + 36.20% rocksdb::BuildTable | |
| + 17.30% rocksdb::BlockBasedTableBuilder::Add | |
| | + 8.40% rocksdb::BlockBasedTableBuilder::Flush | |
| | + 4.90% rocksdb::BlockBuilder::Add | |
| | + 1.50% rocksdb::FullFilterBlockBuilder::Add | |
| | + 0.90% rocksdb::ShortenedIndexBuilder::AddIndexEntry | |
| | + 0.50% rocksdb::NotifyCollectTableCollectorsOnAdd | |
| | + 0.30% rocksdb::BlockBasedTableBuilder::ok | |
| | + 0.20% std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign | |
| | + 0.10% rocksdb::FlushBlockBySizePolicy::Update | |
| | + 0.10% rocksdb::ExtractUserKey | |
| + 15.20% rocksdb::CompactionIterator::Next | |
| | + 14.20% rocksdb::CompactionIterator::NextFromInput | |
| | | + 6.00% rocksdb::MergeHelper::MergeUntil | |
| | | + 4.10% rocksdb::MemTableIterator::key | |
| | | + 1.80% rocksdb::MemTableIterator::value | |
| | | + 0.50% rocksdb::(anonymous namespace)::BytewiseComparatorImpl::Equal | |
| | | + 0.40% rocksdb::IterKey::SetInternalKey | |
| | | + 0.20% rocksdb::MemTableIterator::Valid | |
| | | + 0.10% rocksdb::Slice::Slice | |
| | | + 0.10% rocksdb::RangeDelAggregator::ShouldDelete | |
| | | + 0.10% rocksdb::ParseInternalKey | |
| | | + 0.10% rocksdb::MemTableIterator::Next | |
| | | + 0.10% rocksdb::CompactionIterator::findEarliestVisibleSnapshot | |
| | + 0.90% rocksdb::MemTableIterator::Next | |
| + 2.00% rocksdb::BlockBasedTableBuilder::Finish | |
| + 0.60% rocksdb::WritableFileWriter::Sync | |
| + 0.50% rocksdb::TableCache::NewIterator | |
| + 0.20% rocksdb::ThreadStatusUtil::SetThreadOperationProperty | |
| + 0.20% rocksdb::FileMetaData::UpdateBoundaries | |
| Thread: 21 (bstore_aio) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% KernelDevice::AioCompletionThread::entry | |
| + 100.00% KernelDevice::_aio_thread | |
| + 100.00% aio_queue_t::get_next_completed | |
| + 100.00% __io_getevents_0_4 | |
| Thread: 22 (bstore_discard) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% KernelDevice::DiscardThread::entry | |
| + 100.00% KernelDevice::_discard_thread | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 23 (bstore_aio) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% KernelDevice::AioCompletionThread::entry | |
| + 100.00% KernelDevice::_aio_thread | |
| + 100.00% aio_queue_t::get_next_completed | |
| + 100.00% __io_getevents_0_4 | |
| Thread: 24 (bstore_discard) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% KernelDevice::DiscardThread::entry | |
| + 100.00% KernelDevice::_discard_thread | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 25 (ceph-osd) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% rocksdb::DeleteScheduler::BackgroundEmptyTrash | |
| + 100.00% rocksdb::InstrumentedCondVar::Wait | |
| + 100.00% rocksdb::InstrumentedCondVar::WaitInternal | |
| + 100.00% rocksdb::port::CondVar::Wait | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 26 (rocksdb:dump_st) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% std::thread::_State_impl<std::thread::_Invoker<std::tuple<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}> > >::_M_run() | |
| + 100.00% std::thread::_Invoker<std::tuple<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}> >::operator()() | |
| + 100.00% std::thread::_Invoker<std::tuple<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) | |
| + 100.00% std::__invoke<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}>(std::__invoke_result&&, (rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}&&)...) | |
| + 100.00% std::__invoke_impl<void, rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}>(std::__invoke_other, rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}&&) | |
| + 100.00% rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}::operator()() const | |
| + 100.00% rocksdb::RepeatableThread::thread | |
| + 100.00% rocksdb::RepeatableThread::wait | |
| + 100.00% rocksdb::InstrumentedCondVar::TimedWait | |
| + 100.00% rocksdb::InstrumentedCondVar::TimedWaitInternal | |
| + 100.00% rocksdb::port::CondVar::TimedWait | |
| + 100.00% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| Thread: 27 (rocksdb:pst_st) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% std::thread::_State_impl<std::thread::_Invoker<std::tuple<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}> > >::_M_run() | |
| + 100.00% std::thread::_Invoker<std::tuple<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}> >::operator()() | |
| + 100.00% std::thread::_Invoker<std::tuple<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) | |
| + 100.00% std::__invoke<rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}>(std::__invoke_result&&, (rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}&&)...) | |
| + 100.00% std::__invoke_impl<void, rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}>(std::__invoke_other, rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}&&) | |
| + 100.00% rocksdb::RepeatableThread::RepeatableThread(std::function<void ()>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env*, unsigned long, unsigned long)::{lambda()#1}::operator()() const | |
| + 100.00% rocksdb::RepeatableThread::thread | |
| + 100.00% rocksdb::RepeatableThread::wait | |
| + 100.00% rocksdb::InstrumentedCondVar::TimedWait | |
| + 100.00% rocksdb::InstrumentedCondVar::TimedWaitInternal | |
| + 100.00% rocksdb::port::CondVar::TimedWait | |
| + 100.00% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| Thread: 28 (cfin) - 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: 29 (bstore_kv_sync) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% BlueStore::KVSyncThread::entry | |
| + 100.00% BlueStore::_kv_sync_thread | |
| + 66.00% BlueStore::_txc_apply_kv | |
| | + 61.80% RocksDBStore::submit_transaction | |
| | | + 61.40% RocksDBStore::submit_common | |
| | | | + 61.00% rocksdb::DBImpl::Write | |
| | | | + 60.90% rocksdb::DBImpl::WriteImpl | |
| | | | + 43.60% rocksdb::WriteBatchInternal::InsertInto | |
| | | | | + 43.40% rocksdb::WriteBatch::Iterate | |
| | | | | | + 31.40% rocksdb::MemTableInserter::PutCF | |
| | | | | | | + 31.30% rocksdb::MemTableInserter::PutCFImpl | |
| | | | | | | + 30.70% rocksdb::MemTable::Add | |
| | | | | | | | + 25.10% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::Insert<false> | |
| | | | | | | | | + 21.30% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::RecomputeSpliceLevels | |
| | | | | | | | | | + 20.10% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::FindSpliceForLevel<true> | |
| | | | | | | | | | + 10.80% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::KeyIsAfterNode | |
| | | | | | | | | | | + 10.60% rocksdb::MemTable::KeyComparator::operator() | |
| | | | | | | | | | | + 8.00% rocksdb::InternalKeyComparator::CompareKeySeq | |
| | | | | | | | | | | + 1.30% rocksdb::GetLengthPrefixedSlice | |
| | | | | | | | | | + 0.80% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::Node::Next | |
| | | | | | | | | + 1.60% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::KeyIsAfterNode | |
| | | | | | | | | + 1.10% rocksdb::MemTable::KeyComparator::operator() | |
| | | | | | | | | + 0.30% rocksdb::MemTableRep::KeyComparator::decode_key | |
| | | | | | | | | + 0.20% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::Node::SetNext | |
| | | | | | | | | + 0.10% rocksdb::InlineSkipList<rocksdb::MemTableRep::KeyComparator const&>::Node::NoBarrier_SetNext | |
| | | | | | | | + 2.40% __memmove_avx_unaligned_erms | |
| | | | | | | | + 1.20% rocksdb::(anonymous namespace)::SkipListRep::Allocate | |
| | | | | | | | + 1.10% rocksdb::MemTable::UpdateFlushState | |
| | | | | | | | + 0.20% rocksdb::EncodeVarint32 | |
| | | | | | | | + 0.10% std::unique_ptr<rocksdb::MemTableRep, std::default_delete<rocksdb::MemTableRep> >::operator-> | |
| | | | | | | | + 0.10% std::__atomic_base<unsigned long>::operator unsigned long | |
| | | | | | | + 0.20% rocksdb::MemTableInserter::get_post_process_info | |
| | | | | | | + 0.20% rocksdb::MemTableInserter::SeekToColumnFamily | |
| | | | | | | + 0.10% rocksdb::MemTableInserter::CheckMemtableFull | |
| | | | | | | + 0.10% rocksdb::ColumnFamilyMemTablesImpl::GetMemTable | |
| | | | | | + 9.50% rocksdb::MemTableInserter::MergeCF | |
| | | | | | + 0.80% rocksdb::MemTableInserter::DeleteCF | |
| | | | | | + 0.50% rocksdb::ReadRecordFromWriteBatch | |
| | | | | | + 0.20% rocksdb::Status::operator= | |
| | | | | | + 0.10% rocksdb::Slice::Slice | |
| | | | | + 0.10% rocksdb::MemTableInserter::MemTableInserter | |
| | | | + 12.50% rocksdb::DBImpl::WriteToWAL | |
| | | | | + 12.30% rocksdb::DBImpl::WriteToWAL | |
| | | | | | + 12.30% rocksdb::log::Writer::AddRecord | |
| | | | | | + 11.90% rocksdb::log::Writer::EmitPhysicalRecord | |
| | | | | | + 7.40% rocksdb::WritableFileWriter::Append | |
| | | | | | + 2.50% rocksdb::crc32c::crc32c_3way | |
| | | | | | + 1.70% rocksdb::WritableFileWriter::Flush | |
| | | | | | + 0.10% rocksdb::Status::operator= | |
| | | | | + 0.10% rocksdb::DBImpl::MergeBatch | |
| | | | + 2.40% rocksdb::InstrumentedMutex::Lock | |
| | | | + 0.40% rocksdb::WriteThread::EnterAsBatchGroupLeader | |
| | | | + 0.40% rocksdb::InstrumentedMutex::Unlock | |
| | | | + 0.20% rocksdb::WriteBatchInternal::Count | |
| | | | + 0.20% rocksdb::DBImpl::WriteStatusCheck | |
| | | | + 0.10% rocksdb::WriteThread::Writer::Writer | |
| | | | + 0.10% rocksdb::WriteThread::Writer::ShouldWriteToMemtable | |
| | | | + 0.10% rocksdb::WriteThread::Writer::FinalStatus | |
| | | | + 0.10% rocksdb::WriteThread::JoinBatchGroup | |
| | | | + 0.10% rocksdb::WriteThread::ExitAsBatchGroupLeader | |
| | | | + 0.10% rocksdb::DBImpl::WriteContext::~WriteContext | |
| | | | + 0.10% rocksdb::DBImpl::PreprocessWrite | |
| | | + 0.30% ceph_clock_now | |
| | | + 0.10% PerfCounters::inc | |
| | + 0.60% std::shared_ptr<KeyValueDB::TransactionImpl>::shared_ptr | |
| | + 0.50% ceph::time_detail::mono_clock::now | |
| | + 0.20% std::_Rb_tree_const_iterator<boost::intrusive_ptr<BlueStore::Onode> >::operator++ | |
| + 20.00% RocksDBStore::submit_transaction_sync | |
| | + 19.90% RocksDBStore::submit_common | |
| | | + 19.90% rocksdb::DBImpl::Write | |
| | | + 19.90% rocksdb::DBImpl::WriteImpl | |
| | | + 19.50% rocksdb::DBImpl::WriteToWAL | |
| | | | + 19.40% rocksdb::WritableFileWriter::Sync | |
| | | | | + 19.40% rocksdb::WritableFileWriter::SyncInternal | |
| | | | | + 19.40% BlueRocksWritableFile::Sync | |
| | | | | + 19.30% BlueFS::fsync | |
| | | | | + 19.30% BlueFS::_fsync | |
| | | | | + 18.00% BlueFS::_flush | |
| | | | | | + 18.00% BlueFS::_flush_range | |
| | | | | | + 17.60% KernelDevice::aio_write | |
| | | | | | | + 17.60% KernelDevice::_sync_write | |
| | | | | | | + 12.90% sync_file_range | |
| | | | | | | + 4.60% pwritev64 | |
| | | | | | | + 0.10% ceph::buffer::v14_2_0::list::prepare_iov<std::vector<iovec, std::allocator<iovec> > > | |
| | | | | | + 0.20% __memset_avx2_erms | |
| | | | | | + 0.10% PerfCounters::inc | |
| | | | | | + 0.10% IOContext::aio_wait | |
| | | | | + 1.20% BlueFS::_flush_bdev_safely | |
| | | | | + 0.10% BlueFS::_flush_and_sync_log | |
| | | | + 0.10% rocksdb::DBImpl::WriteToWAL | |
| | | + 0.30% rocksdb::InstrumentedMutex::Unlock | |
| | | + 0.10% rocksdb::InstrumentedMutex::Lock | |
| | + 0.10% PerfCounters::tinc | |
| + 10.60% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 10.60% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 0.20% __pthread_mutex_cond_lock | |
| + 1.00% std::condition_variable::notify_one() | |
| + 0.80% BlueStore::BlueStoreThrottle::log_state_latency | |
| + 0.40% KernelDevice::flush | |
| + 0.20% std::unique_lock<std::mutex>::unique_lock | |
| + 0.20% std::unique_lock<std::mutex>::lock | |
| + 0.20% std::__atomic_base<int>::operator-- | |
| + 0.10% std::deque<BlueStore::TransContext*, std::allocator<BlueStore::TransContext*> >::~deque | |
| + 0.10% std::deque<BlueStore::TransContext*, std::allocator<BlueStore::TransContext*> >::size | |
| + 0.10% BlueStore::BlueStoreThrottle::release_kv_throttle | |
| Thread: 30 (bstore_kv_final) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% BlueStore::KVFinalizeThread::entry | |
| + 100.00% BlueStore::_kv_finalize_thread | |
| + 57.60% BlueStore::_txc_state_proc | |
| | + 42.10% BlueStore::_txc_finish | |
| | | + 30.50% BlueStore::SharedBlob::finish_write | |
| | | | + 27.50% BlueStore::BufferSpace::_finish_write | |
| | | | | + 25.30% BlueStore::CacheShard::_trim | |
| | | | | | + 25.20% TwoQBufferCacheShard::_trim_to | |
| | | | | | + 11.90% ceph::buffer::v14_2_0::list::clear | |
| | | | | | | + 11.60% ceph::buffer::v14_2_0::list::buffers_t::clear_and_dispose | |
| | | | | | | + 11.20% ceph::buffer::v14_2_0::ptr_node::disposer::operator() | |
| | | | | | | + 10.50% ceph::buffer::v14_2_0::ptr_node::~ptr_node | |
| | | | | | | | + 10.50% ceph::buffer::v14_2_0::ptr::~ptr | |
| | | | | | | | + 8.60% ceph::buffer::v14_2_0::raw_posix_aligned::~raw_posix_aligned | |
| | | | | | | | + 1.30% ceph::buffer::v14_2_0::ptr::release | |
| | | | | | | | + 0.20% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned int) | |
| | | | | | | | + 0.20% tc_free | |
| | | | | | | | + 0.20% ceph::buffer::v14_2_0::raw_posix_aligned::operator delete | |
| | | | | | | + 0.30% tc_free | |
| | | | | | | + 0.10% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned int) | |
| | | | | | + 9.90% BlueStore::BufferSpace::_rm_buffer | |
| | | | | | + 2.40% boost::intrusive::list_impl<boost::intrusive::mhtraits<BlueStore::Buffer, boost::intrusive::list_member_hook<void, void, void>, &BlueStore::Buffer::lru_item>, unsigned long, true, void>::erase | |
| | | | | | + 0.50% boost::intrusive::reverse_iterator<boost::intrusive::list_iterator<boost::intrusive::mhtraits<BlueStore::Buffer, boost::intrusive::list_member_hook<void, void, void>, &BlueStore::Buffer::lru_item>, false> >::operator* | |
| | | | | | + 0.20% boost::intrusive::list_impl<boost::intrusive::mhtraits<BlueStore::Buffer, boost::intrusive::list_member_hook<void, void, void>, &BlueStore::Buffer::lru_item>, unsigned long, true, void>::push_front | |
| | | | | + 0.80% ceph::buffer::v14_2_0::list::reassign_to_mempool | |
| | | | | + 0.50% BlueStore::Buffer::maybe_rebuild | |
| | | | | + 0.30% TwoQBufferCacheShard::_add | |
| | | | + 2.20% std::lock_guard<std::recursive_mutex>::lock_guard | |
| | | | + 0.40% std::lock_guard<std::recursive_mutex>::~lock_guard | |
| | | + 5.30% BlueStore::TransContext::~TransContext | |
| | | + 2.90% BlueStore::_txc_release_alloc | |
| | | + 0.70% BlueStore::BlueStoreThrottle::log_state_latency | |
| | | + 0.40% std::_Rb_tree_const_iterator<boost::intrusive_ptr<BlueStore::SharedBlob> >::operator++ | |
| | | + 0.40% boost::intrusive_ptr<BlueStore::OpSequencer>::intrusive_ptr | |
| | | + 0.30% BlueStore::BlueStoreThrottle::complete | |
| | | + 0.20% std::set<boost::intrusive_ptr<BlueStore::SharedBlob>, std::less<boost::intrusive_ptr<BlueStore::SharedBlob> >, std::allocator<boost::intrusive_ptr<BlueStore::SharedBlob> > >::clear | |
| | | + 0.20% std::lock_guard<std::mutex>::~lock_guard | |
| | | + 0.20% std::condition_variable::notify_all() | |
| | | + 0.10% std::set<boost::intrusive_ptr<BlueStore::SharedBlob>, std::less<boost::intrusive_ptr<BlueStore::SharedBlob> >, std::allocator<boost::intrusive_ptr<BlueStore::SharedBlob> > >::end | |
| | | + 0.10% std::lock_guard<std::mutex>::lock_guard | |
| | + 14.30% BlueStore::_txc_committed_kv | |
| | | + 13.00% ContextQueue::queue | |
| | | | + 8.10% std::condition_variable::notify_all() | |
| | | | + 3.50% std::scoped_lock<std::mutex>::scoped_lock | |
| | | | + 1.10% std::scoped_lock<std::mutex>::~scoped_lock | |
| | | | + 0.20% std::__cxx11::list<Context*, std::allocator<Context*> >::clear | |
| | | | + 0.10% std::__cxx11::list<Context*, std::allocator<Context*> >::insert<std::_List_iterator<Context*>, void> | |
| | | + 0.50% BlueStore::BlueStoreThrottle::complete_kv | |
| | | + 0.30% std::lock_guard<std::mutex>::~lock_guard | |
| | | + 0.10% utime_t::operator double | |
| | | + 0.10% std::lock_guard<std::mutex>::lock_guard | |
| | | + 0.10% ceph_clock_now | |
| | | + 0.10% BlueStore::log_latency_fn(char const*, int, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > const&, double, std::function<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > (std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > const&)>) const | |
| | + 0.90% BlueStore::BlueStoreThrottle::log_state_latency | |
| | + 0.10% BlueStore::TransContext::get_state_name | |
| + 42.10% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 42.10% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 0.70% __pthread_mutex_cond_lock | |
| + 0.10% std::deque<BlueStore::TransContext*, std::allocator<BlueStore::TransContext*> >::pop_front | |
| + 0.10% BitmapAllocator::get_fragmentation | |
| Thread: 31 (bstore_mempool) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% BlueStore::MempoolThread::entry | |
| + 98.00% std::condition_variable::wait_for<unsigned long, std::ratio<1l, 1000000000l> > | |
| | + 98.00% std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > | |
| | + 98.00% std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > | |
| | + 98.00% __gthread_cond_timedwait | |
| | + 98.00% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| + 2.00% PriorityCache::Manager::tune_memory | |
| Thread: 32 (ms_dispatch) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::DispatchThread::entry | |
| + 100.00% DispatchQueue::entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 33 (ms_local) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::LocalDeliveryThread::entry | |
| + 100.00% DispatchQueue::run_local_delivery | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 34 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 100.00% std::condition_variable::wait_until<ceph::time_detail::real_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: 35 (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: 36 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 89.30% std::condition_variable::wait_until<ceph::time_detail::real_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 89.30% std::condition_variable::__wait_until_impl<std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 89.30% __gthread_cond_timedwait | |
| | + 89.30% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| + 10.70% Context::complete | |
| + 10.70% MgrClient::_send_stats | |
| + 9.70% MgrClient::_send_report | |
| + 1.00% MgrClient::_send_pgstats | |
| Thread: 37 (ms_dispatch) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::DispatchThread::entry | |
| + 100.00% DispatchQueue::entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 38 (ms_local) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::LocalDeliveryThread::entry | |
| + 100.00% DispatchQueue::run_local_delivery | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 39 (ms_dispatch) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::DispatchThread::entry | |
| + 100.00% DispatchQueue::entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 40 (ms_local) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::LocalDeliveryThread::entry | |
| + 100.00% DispatchQueue::run_local_delivery | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 41 (ms_dispatch) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::DispatchThread::entry | |
| + 100.00% DispatchQueue::entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 42 (ms_local) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::LocalDeliveryThread::entry | |
| + 100.00% DispatchQueue::run_local_delivery | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 43 (ms_dispatch) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::DispatchThread::entry | |
| + 100.00% DispatchQueue::entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 44 (ms_local) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::LocalDeliveryThread::entry | |
| + 100.00% DispatchQueue::run_local_delivery | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 45 (ms_dispatch) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::DispatchThread::entry | |
| + 100.00% DispatchQueue::entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 46 (ms_local) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::LocalDeliveryThread::entry | |
| + 100.00% DispatchQueue::run_local_delivery | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 47 (ms_dispatch) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::DispatchThread::entry | |
| + 100.00% DispatchQueue::entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 48 (ms_local) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% DispatchQueue::LocalDeliveryThread::entry | |
| + 100.00% DispatchQueue::run_local_delivery | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 49 (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: 50 (finisher) - 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: 51 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 97.80% std::condition_variable::wait_until<ceph::time_detail::real_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 97.80% std::condition_variable::__wait_until_impl<std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 97.80% __gthread_cond_timedwait | |
| | + 97.80% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| + 2.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 0.20% HandleWatchTimeout::complete | |
| Thread: 52 (safe_timer) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% SafeTimerThread::entry | |
| + 100.00% SafeTimer::timer_thread | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 53 (ceph-osd) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% execute_native_thread_routine | |
| + 100.00% ceph::timer_detail::timer<ceph::time_detail::mono_clock>::timer_thread | |
| + 99.40% std::condition_variable::wait_until<ceph::time_detail::mono_clock, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 99.40% std::condition_variable::__wait_until_impl<std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> > > | |
| | + 99.40% __gthread_cond_timedwait | |
| | + 99.40% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| + 0.50% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 0.10% std::unique_lock<std::mutex>::lock | |
| Thread: 54 (osd_srv_agent) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% OSDService::AgentThread::entry | |
| + 100.00% OSDService::agent_entry | |
| + 100.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| + 100.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| Thread: 55 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.90% OSD::ShardedOpWQ::_process | |
| | + 50.70% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 50.70% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 0.60% __pthread_mutex_cond_lock | |
| | + 38.10% OpQueueItem::run | |
| | | + 38.10% PGOpItem::run | |
| | | + 38.10% OSD::dequeue_op | |
| | | + 38.00% PrimaryLogPG::do_request | |
| | | | + 37.90% PrimaryLogPG::do_op | |
| | | | | + 32.20% PrimaryLogPG::execute_ctx | |
| | | | | | + 28.80% PrimaryLogPG::issue_repop | |
| | | | | | | + 28.80% ReplicatedBackend::submit_transaction | |
| | | | | | | + 22.20% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | + 22.20% BlueStore::queue_transactions | |
| | | | | | | | + 14.90% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 12.10% BlueStore::_write | |
| | | | | | | | | | + 12.00% BlueStore::_do_write | |
| | | | | | | | | | + 5.70% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | | + 4.40% BlueStore::_do_alloc_write | |
| | | | | | | | | | + 1.40% BlueStore::_do_write_data | |
| | | | | | | | | | + 0.30% BlueStore::ExtentMap::compress_extent_map | |
| | | | | | | | | | + 0.20% BlueStore::_wctx_finish | |
| | | | | | | | | + 1.20% BlueStore::_omap_setkeys | |
| | | | | | | | | + 0.60% BlueStore::_setattrs | |
| | | | | | | | | + 0.30% BlueStore::Collection::get_onode | |
| | | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | | + 0.10% BlueStore::_omap_rmkeys | |
| | | | | | | | | + 0.10% BlueStore::_get_collection | |
| | | | | | | | + 2.70% BlueStore::_txc_write_nodes | |
| | | | | | | | + 1.90% BlueStore::_txc_state_proc | |
| | | | | | | | + 1.50% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | + 0.60% BlueStore::_txc_create | |
| | | | | | | | + 0.30% BlueStore::_txc_finalize_kv | |
| | | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | | + 0.10% PerfCounters::inc | |
| | | | | | | + 5.10% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | + 0.50% generate_transaction | |
| | | | | | | + 0.30% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | + 0.30% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | + 0.20% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | + 0.10% std::set<pg_shard_t, std::less<pg_shard_t>, std::allocator<pg_shard_t> >::insert<std::_Rb_tree_const_iterator<pg_shard_t> > | |
| | | | | | | + 0.10% ceph::os::Transaction::register_on_commit | |
| | | | | | + 1.60% PrimaryLogPG::prepare_transaction | |
| | | | | | + 1.50% PeeringState::update_trim_to | |
| | | | | | + 0.10% tc_newarray | |
| | | | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | | | + 0.10% PrimaryLogPG::OpContext::reset_obs | |
| | | | | + 3.40% PrimaryLogPG::find_object_context | |
| | | | | + 0.50% MOSDOp::finish_decode | |
| | | | | + 0.40% PG::check_in_progress_op | |
| | | | | + 0.30% PGLog::IndexedLog::get_request | |
| | | | | + 0.20% PrimaryLogPG::OpContext::OpContext | |
| | | | | + 0.20% Message::clear_payload | |
| | | | | + 0.10% std::map<hobject_t, std::shared_ptr<ObjectContext>, std::less<hobject_t>, std::allocator<std::pair<hobject_t const, std::shared_ptr<ObjectContext> > > >::find | |
| | | | | + 0.10% ceph_clock_now | |
| | | | | + 0.10% PrimaryLogPG::maybe_handle_cache | |
| | | | | + 0.10% PrimaryLogPG::is_degraded_or_backfilling_object | |
| | | | | + 0.10% PerfCounters::tinc | |
| | | | | + 0.10% MOSDOp::get_snapid | |
| | | | | + 0.10% MOSDOp::get_map_epoch | |
| | | | + 0.10% PGBackend::handle_message | |
| | | + 0.10% ceph_clock_now | |
| | + 8.50% OSD::ShardedOpWQ::handle_oncommits | |
| | + 1.60% PG::lock | |
| | + 0.30% std::mutex::lock | |
| | + 0.20% std::unique_lock<std::mutex>::unique_lock | |
| | + 0.10% std::deque<OpQueueItem, std::allocator<OpQueueItem> >::push_back | |
| | + 0.10% std::__cxx11::list<Context*, std::allocator<Context*> >::~list | |
| | + 0.10% OpQueueItem::~OpQueueItem | |
| | + 0.10% OpQueueItem::is_peering | |
| | + 0.10% ContextQueue::move_to | |
| + 0.10% ceph::HeartbeatMap::reset_timeout | |
| Thread: 56 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 100.00% OSD::ShardedOpWQ::_process | |
| + 68.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 68.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 1.60% __pthread_mutex_cond_lock | |
| + 24.60% OpQueueItem::run | |
| | + 24.50% PGOpItem::run | |
| | | + 24.40% OSD::dequeue_op | |
| | | | + 24.40% PrimaryLogPG::do_request | |
| | | | + 24.30% PrimaryLogPG::do_op | |
| | | | | + 20.80% PrimaryLogPG::execute_ctx | |
| | | | | | + 17.40% PrimaryLogPG::issue_repop | |
| | | | | | | + 17.30% ReplicatedBackend::submit_transaction | |
| | | | | | | | + 13.20% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | | + 13.20% BlueStore::queue_transactions | |
| | | | | | | | | + 9.00% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 1.40% BlueStore::_txc_write_nodes | |
| | | | | | | | | + 1.40% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | | + 0.90% BlueStore::_txc_state_proc | |
| | | | | | | | | + 0.30% BlueStore::_txc_create | |
| | | | | | | | | + 0.20% BlueStore::_txc_finalize_kv | |
| | | | | | | | + 3.30% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | | + 0.30% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | | + 0.20% generate_transaction | |
| | | | | | | | + 0.20% PrimaryLogPG::apply_stats | |
| | | | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | + 0.10% PGLog::IndexedLog::add | |
| | | | | | + 1.50% PrimaryLogPG::prepare_transaction | |
| | | | | | + 1.40% PeeringState::update_trim_to | |
| | | | | | + 0.30% PrimaryLogPG::new_repop | |
| | | | | | + 0.10% pg_pool_t::is_pool_snaps_mode | |
| | | | | | + 0.10% MOSDOpReply::MOSDOpReply | |
| | | | | + 2.10% PrimaryLogPG::find_object_context | |
| | | | | + 0.40% PG::check_in_progress_op | |
| | | | | + 0.30% PrimaryLogPG::OpContext::OpContext | |
| | | | | + 0.20% Message::clear_payload | |
| | | | | + 0.10% PrimaryLogPG::maybe_await_blocked_head | |
| | | | | + 0.10% PrimaryLogPG::is_unreadable_object | |
| | | | | + 0.10% PG::op_has_sufficient_caps | |
| | | | | + 0.10% MOSDOp::finish_decode | |
| | | | + 0.10% PG::can_discard_request | |
| | | + 0.10% __pthread_mutex_unlock_usercnt | |
| | + 0.10% PGPeeringItem::run | |
| + 5.30% OSD::ShardedOpWQ::handle_oncommits | |
| + 1.20% PG::lock | |
| + 0.30% std::unique_lock<std::mutex>::unique_lock | |
| + 0.10% std::set<std::pair<spg_t, unsigned int>, std::less<std::pair<spg_t, unsigned int> >, std::allocator<std::pair<spg_t, unsigned int> > >::~set | |
| + 0.10% std::mutex::lock | |
| + 0.10% std::__cxx11::list<Context*, std::allocator<Context*> >::~list | |
| + 0.10% boost::intrusive_ptr<PG>::intrusive_ptr | |
| + 0.10% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| + 0.10% OpQueueItem::is_peering | |
| Thread: 57 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.90% OSD::ShardedOpWQ::_process | |
| | + 51.50% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 51.50% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 0.30% __pthread_mutex_cond_lock | |
| | + 37.30% OpQueueItem::run | |
| | | + 37.20% PGOpItem::run | |
| | | | + 37.10% OSD::dequeue_op | |
| | | | | + 36.90% PrimaryLogPG::do_request | |
| | | | | | + 36.60% PrimaryLogPG::do_op | |
| | | | | | | + 30.50% PrimaryLogPG::execute_ctx | |
| | | | | | | | + 26.60% PrimaryLogPG::issue_repop | |
| | | | | | | | | + 26.20% ReplicatedBackend::submit_transaction | |
| | | | | | | | | | + 21.10% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | | | | + 21.00% BlueStore::queue_transactions | |
| | | | | | | | | | | | + 14.20% BlueStore::_txc_add_transaction | |
| | | | | | | | | | | | | + 11.60% BlueStore::_write | |
| | | | | | | | | | | | | | + 11.60% BlueStore::_do_write | |
| | | | | | | | | | | | | | + 5.00% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | | | | | | + 4.70% BlueStore::_do_alloc_write | |
| | | | | | | | | | | | | | + 1.30% BlueStore::_do_write_data | |
| | | | | | | | | | | | | | + 0.20% BlueStore::ExtentMap::compress_extent_map | |
| | | | | | | | | | | | | | + 0.10% BlueStore::_wctx_finish | |
| | | | | | | | | | | | | | + 0.10% BlueStore::WriteContext::~WriteContext | |
| | | | | | | | | | | | | + 1.20% BlueStore::_omap_setkeys | |
| | | | | | | | | | | | | + 0.50% BlueStore::Collection::get_onode | |
| | | | | | | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_bl | |
| | | | | | | | | | | | | + 0.20% BlueStore::_setattrs | |
| | | | | | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | | | | | | + 0.10% _dump_transaction<30> | |
| | | | | | | | | | | | | + 0.10% BlueStore::_get_collection | |
| | | | | | | | | | | | + 2.40% BlueStore::_txc_write_nodes | |
| | | | | | | | | | | | + 2.10% BlueStore::_txc_state_proc | |
| | | | | | | | | | | | + 1.60% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | | | | | + 0.40% BlueStore::_txc_finalize_kv | |
| | | | | | | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | | | | | | + 0.10% BlueStore::log_latency | |
| | | | | | | | | | | | + 0.10% BlueStore::_txc_create | |
| | | | | | | | | | | + 0.10% TrackedOp::put | |
| | | | | | | | | | + 3.60% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | | | | + 0.30% generate_transaction | |
| | | | | | | | | | + 0.20% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | | | | | + 0.10% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | | | | + 0.10% std::set<pg_shard_t, std::less<pg_shard_t>, std::allocator<pg_shard_t> >::insert<std::_Rb_tree_const_iterator<pg_shard_t> > | |
| | | | | | | | | | + 0.10% std::set<hobject_t, std::less<hobject_t>, std::allocator<hobject_t> >::~set | |
| | | | | | | | | | + 0.10% boost::intrusive_ptr<ReplicatedBackend::InProgressOp>::intrusive_ptr | |
| | | | | | | | | | + 0.10% PrimaryLogPG::bless_context | |
| | | | | | | | | | + 0.10% PrimaryLogPG::apply_stats | |
| | | | | | | | | | + 0.10% PGBackend::get_osdmap | |
| | | | | | | | | + 0.20% PGTransaction::add_obc | |
| | | | | | | | | + 0.10% boost::intrusive_ptr<OpRequest>::~intrusive_ptr | |
| | | | | | | | + 1.90% PeeringState::update_trim_to | |
| | | | | | | | + 1.70% PrimaryLogPG::prepare_transaction | |
| | | | | | | | + 0.10% std::shared_ptr<ObjectContext>::shared_ptr | |
| | | | | | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | | | | | + 0.10% MOSDOpReply::MOSDOpReply | |
| | | | | | | + 4.40% PrimaryLogPG::find_object_context | |
| | | | | | | + 0.40% PGLog::IndexedLog::get_request | |
| | | | | | | + 0.30% OpRequest::mark_started | |
| | | | | | | + 0.30% Message::clear_payload | |
| | | | | | | + 0.30% MOSDOp::finish_decode | |
| | | | | | | + 0.10% boost::intrusive_ptr<Session>::~intrusive_ptr | |
| | | | | | | + 0.10% PrimaryLogPG::check_laggy_requeue | |
| | | | | | | + 0.10% PG::op_has_sufficient_caps | |
| | | | | | | + 0.10% PG::check_in_progress_op | |
| | | | | | + 0.10% PG::can_discard_request | |
| | | | | + 0.20% ceph_clock_now | |
| | | | + 0.10% pthread_mutex_unlock | |
| | | + 0.10% PGPeeringItem::run | |
| | + 7.50% OSD::ShardedOpWQ::handle_oncommits | |
| | + 2.70% PG::lock | |
| | + 0.30% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| | + 0.20% std::mutex::lock | |
| | + 0.20% ContextQueue::move_to | |
| | + 0.10% std::unique_lock<std::mutex>::unique_lock | |
| | + 0.10% std::__cxx11::list<Context*, std::allocator<Context*> >::~list | |
| + 0.10% ceph::HeartbeatMap::reset_timeout | |
| Thread: 58 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.90% OSD::ShardedOpWQ::_process | |
| | + 63.90% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 63.90% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 1.20% __pthread_mutex_cond_lock | |
| | + 27.30% OpQueueItem::run | |
| | | + 27.30% PGOpItem::run | |
| | | + 27.30% OSD::dequeue_op | |
| | | + 27.20% PrimaryLogPG::do_request | |
| | | + 27.00% PrimaryLogPG::do_op | |
| | | | + 23.70% PrimaryLogPG::execute_ctx | |
| | | | | + 21.40% PrimaryLogPG::issue_repop | |
| | | | | | + 21.10% ReplicatedBackend::submit_transaction | |
| | | | | | | + 16.90% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | + 16.90% BlueStore::queue_transactions | |
| | | | | | | | + 11.10% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 10.20% BlueStore::_write | |
| | | | | | | | | | + 10.20% BlueStore::_do_write | |
| | | | | | | | | | + 4.70% BlueStore::_do_alloc_write | |
| | | | | | | | | | + 3.80% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | | + 1.40% BlueStore::_do_write_data | |
| | | | | | | | | | + 0.10% BlueStore::_choose_write_options | |
| | | | | | | | | | + 0.10% BlueStore::WriteContext::~WriteContext | |
| | | | | | | | | | + 0.10% BlueStore::ExtentMap::dirty_range | |
| | | | | | | | | + 0.40% BlueStore::_omap_setkeys | |
| | | | | | | | | + 0.20% BlueStore::_setattrs | |
| | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_bl | |
| | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | + 1.70% BlueStore::_txc_write_nodes | |
| | | | | | | | + 1.70% BlueStore::_txc_state_proc | |
| | | | | | | | + 1.50% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | + 0.40% BlueStore::_txc_create | |
| | | | | | | | + 0.30% BlueStore::_txc_finalize_kv | |
| | | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | | + 0.10% BlueStore::log_latency | |
| | | | | | | + 2.80% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | + 0.50% generate_transaction | |
| | | | | | | + 0.30% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | + 0.20% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::~vector | |
| | | | | | | + 0.20% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | + 0.10% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | | + 0.10% non-virtual thunk to PrimaryLogPG::op_applied(eversion_t const&) | |
| | | | | | + 0.20% PGLog::IndexedLog::add | |
| | | | | | + 0.10% tc_newarray | |
| | | | | + 1.00% PeeringState::update_trim_to | |
| | | | | + 0.70% PrimaryLogPG::prepare_transaction | |
| | | | | + 0.20% MOSDOpReply::MOSDOpReply | |
| | | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | | + 0.10% PrimaryLogPG::OpContext::reset_obs | |
| | | | | + 0.10% PrimaryLogPG::OpContext::register_on_finish<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | | | + 0.10% PrimaryLogPG::OpContext::register_on_commit<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | | + 2.30% PrimaryLogPG::find_object_context | |
| | | | + 0.30% MOSDOp::finish_decode | |
| | | | + 0.10% boost::intrusive_ptr<OpRequest>::~intrusive_ptr | |
| | | | + 0.10% PrimaryLogPG::is_degraded_or_backfilling_object | |
| | | | + 0.10% PrimaryLogPG::OpContext::OpContext | |
| | | | + 0.10% PerfCounters::tinc | |
| | | | + 0.10% OpRequest::mark_started | |
| | | | + 0.10% Message::clear_payload | |
| | | + 0.10% PGBackend::handle_message | |
| | + 6.30% OSD::ShardedOpWQ::handle_oncommits | |
| | + 1.50% PG::lock | |
| | + 0.30% std::unique_lock<std::mutex>::unique_lock | |
| | + 0.20% std::mutex::lock | |
| | + 0.20% OpQueueItem::maybe_get_op | |
| | + 0.10% boost::intrusive_ptr<PG>::intrusive_ptr | |
| | + 0.10% ContextQueue::move_to | |
| + 0.10% ceph::HeartbeatMap::reset_timeout | |
| Thread: 59 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.80% OSD::ShardedOpWQ::_process | |
| | + 50.50% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 50.50% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 0.70% __pthread_mutex_cond_lock | |
| | + 39.40% OpQueueItem::run | |
| | | + 39.40% PGOpItem::run | |
| | | + 39.40% OSD::dequeue_op | |
| | | + 39.00% PrimaryLogPG::do_request | |
| | | | + 38.80% PrimaryLogPG::do_op | |
| | | | | + 32.30% PrimaryLogPG::execute_ctx | |
| | | | | | + 29.30% PrimaryLogPG::issue_repop | |
| | | | | | | + 29.30% ReplicatedBackend::submit_transaction | |
| | | | | | | + 24.50% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | + 24.50% BlueStore::queue_transactions | |
| | | | | | | | + 18.00% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 15.40% BlueStore::_write | |
| | | | | | | | | | + 15.40% BlueStore::_do_write | |
| | | | | | | | | | + 7.30% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | | + 6.40% BlueStore::_do_alloc_write | |
| | | | | | | | | | + 1.10% BlueStore::_do_write_data | |
| | | | | | | | | | + 0.20% BlueStore::_choose_write_options | |
| | | | | | | | | | + 0.10% interval_set<unsigned long, std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > > >::union_of | |
| | | | | | | | | | + 0.10% BlueStore::ExtentMap::dirty_range | |
| | | | | | | | | | + 0.10% BlueStore::ExtentMap::compress_extent_map | |
| | | | | | | | | + 0.90% BlueStore::_omap_setkeys | |
| | | | | | | | | + 0.80% BlueStore::Collection::get_onode | |
| | | | | | | | | + 0.30% BlueStore::_setattrs | |
| | | | | | | | | + 0.20% ceph::os::Transaction::begin | |
| | | | | | | | | + 0.10% std::vector<boost::intrusive_ptr<BlueStore::Collection>, std::allocator<boost::intrusive_ptr<BlueStore::Collection> > >::vector | |
| | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | + 2.50% BlueStore::_txc_write_nodes | |
| | | | | | | | + 1.50% BlueStore::_txc_state_proc | |
| | | | | | | | + 1.50% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | + 0.50% BlueStore::_txc_create | |
| | | | | | | | + 0.40% BlueStore::_txc_finalize_kv | |
| | | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | + 3.70% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | + 0.40% generate_transaction | |
| | | | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | + 0.20% PrimaryLogPG::apply_stats | |
| | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::~vector | |
| | | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | + 0.10% non-virtual thunk to PrimaryLogPG::op_applied(eversion_t const&) | |
| | | | | | + 1.80% PrimaryLogPG::prepare_transaction | |
| | | | | | + 0.60% PeeringState::update_trim_to | |
| | | | | | + 0.20% PrimaryLogPG::new_repop | |
| | | | | | + 0.10% std::shared_ptr<ObjectContext>::shared_ptr | |
| | | | | | + 0.10% PrimaryLogPG::eval_repop | |
| | | | | | + 0.10% PrimaryLogPG::complete_read_ctx | |
| | | | | | + 0.10% PrimaryLogPG::OpContext::reset_obs | |
| | | | | + 4.60% PrimaryLogPG::find_object_context | |
| | | | | + 0.60% PGLog::IndexedLog::get_request | |
| | | | | + 0.20% PG::op_has_sufficient_caps | |
| | | | | + 0.20% PG::check_in_progress_op | |
| | | | | + 0.10% pg_t::contains | |
| | | | | + 0.10% PrimaryLogPG::maybe_await_blocked_head | |
| | | | | + 0.10% PrimaryLogPG::get_rw_locks | |
| | | | | + 0.10% PrimaryLogPG::check_laggy | |
| | | | | + 0.10% PerfCounters::tinc | |
| | | | | + 0.10% OSD::init_op_flags | |
| | | | | + 0.10% Message::clear_payload | |
| | | | | + 0.10% MOSDOp::get_snapid | |
| | | | | + 0.10% MOSDOp::finish_decode | |
| | | | + 0.10% std::unordered_map<entity_name_t, std::__cxx11::list<boost::intrusive_ptr<OpRequest>, std::allocator<boost::intrusive_ptr<OpRequest> > >, std::hash<entity_name_t>, std::equal_to<entity_name_t>, std::allocator<std::pair<entity_name_t const, std::__cxx11::list<boost::intrusive_ptr<OpRequest>, std::allocator<boost::intrusive_ptr<OpRequest> > > > > >::find | |
| | | | + 0.10% PG::can_discard_request | |
| | | + 0.20% OpRequest::mark_reached_pg | |
| | | + 0.10% operator- | |
| | | + 0.10% OSDService::maybe_share_map | |
| | + 7.40% OSD::ShardedOpWQ::handle_oncommits | |
| | + 1.40% PG::lock | |
| | + 0.40% std::mutex::lock | |
| | + 0.20% std::unique_lock<std::mutex>::unique_lock | |
| | + 0.20% OpQueueItem::~OpQueueItem | |
| | + 0.10% std::unordered_map<spg_t, std::unique_ptr<OSDShardPGSlot, std::default_delete<OSDShardPGSlot> >, std::hash<spg_t>, std::equal_to<spg_t>, std::allocator<std::pair<spg_t const, std::unique_ptr<OSDShardPGSlot, std::default_delete<OSDShardPGSlot> > > > >::find | |
| | + 0.10% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| | + 0.10% ContextQueue::move_to | |
| + 0.10% std::atomic<bool>::operator bool | |
| Thread: 60 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.80% OSD::ShardedOpWQ::_process | |
| | + 64.30% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 64.30% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 1.80% __pthread_mutex_cond_lock | |
| | + 28.10% OpQueueItem::run | |
| | | + 28.10% PGOpItem::run | |
| | | + 28.10% OSD::dequeue_op | |
| | | + 27.90% PrimaryLogPG::do_request | |
| | | + 27.90% PrimaryLogPG::do_op | |
| | | + 23.60% PrimaryLogPG::execute_ctx | |
| | | | + 21.20% PrimaryLogPG::issue_repop | |
| | | | | + 21.10% ReplicatedBackend::submit_transaction | |
| | | | | | + 17.30% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | + 17.20% BlueStore::queue_transactions | |
| | | | | | | + 12.40% BlueStore::_txc_add_transaction | |
| | | | | | | | + 10.50% BlueStore::_write | |
| | | | | | | | | + 10.50% BlueStore::_do_write | |
| | | | | | | | | + 4.70% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | + 4.00% BlueStore::_do_alloc_write | |
| | | | | | | | | + 1.60% BlueStore::_do_write_data | |
| | | | | | | | | + 0.10% interval_set<unsigned long, std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > > >::union_of | |
| | | | | | | | | + 0.10% BlueStore::ExtentMap::compress_extent_map | |
| | | | | | | | + 0.40% BlueStore::_omap_setkeys | |
| | | | | | | | + 0.30% BlueStore::_setattrs | |
| | | | | | | | + 0.30% BlueStore::Collection::get_onode | |
| | | | | | | | + 0.10% std::vector<boost::intrusive_ptr<BlueStore::Onode>, std::allocator<boost::intrusive_ptr<BlueStore::Onode> > >::~vector | |
| | | | | | | | + 0.10% std::unique_lock<std::shared_mutex>::~unique_lock | |
| | | | | | | | + 0.10% std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v14_2_0::ptr, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v14_2_0::ptr> > >::~map | |
| | | | | | | | + 0.10% ghobject_t::ghobject_t | |
| | | | | | | | + 0.10% ceph::os::Transaction::begin | |
| | | | | | | | + 0.10% ceph::buffer::v14_2_0::list::~list | |
| | | | | | | | + 0.10% BlueStore::_omap_rmkeys | |
| | | | | | | | + 0.10% BlueStore::_get_collection | |
| | | | | | | + 1.70% BlueStore::_txc_state_proc | |
| | | | | | | + 1.60% BlueStore::_txc_write_nodes | |
| | | | | | | + 0.90% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | + 0.20% BlueStore::_txc_finalize_kv | |
| | | | | | | + 0.10% std::shared_ptr<KeyValueDB::TransactionImpl>::~shared_ptr | |
| | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | + 0.10% BlueStore::_txc_calc_cost | |
| | | | | | + 2.20% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | + 1.00% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | + 0.30% generate_transaction | |
| | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::~vector | |
| | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | + 0.10% PrimaryLogPG::op_applied | |
| | | | | + 0.10% PGTransaction::add_obc | |
| | | | + 1.50% PeeringState::update_trim_to | |
| | | | + 0.60% PrimaryLogPG::prepare_transaction | |
| | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | + 0.10% PrimaryLogPG::OpContext::reset_obs | |
| | | | + 0.10% MOSDOpReply::MOSDOpReply | |
| | | + 2.50% PrimaryLogPG::find_object_context | |
| | | + 0.30% PrimaryLogPG::OpContext::OpContext | |
| | | + 0.30% PGLog::IndexedLog::get_request | |
| | | + 0.30% MOSDOp::finish_decode | |
| | | + 0.20% PG::check_in_progress_op | |
| | | + 0.10% hobject_t::get_head | |
| | | + 0.10% PrimaryLogPG::maybe_await_blocked_head | |
| | | + 0.10% OpRequest::mark_started | |
| | | + 0.10% OpRequest::includes_pg_op | |
| | | + 0.10% OSDService::_check_full | |
| | | + 0.10% OSDMap::is_blacklisted | |
| | | + 0.10% Message::clear_payload | |
| | + 5.60% OSD::ShardedOpWQ::handle_oncommits | |
| | + 1.10% PG::lock | |
| | + 0.20% std::mutex::lock | |
| | + 0.20% OpQueueItem::maybe_get_op | |
| | + 0.10% std::deque<OpQueueItem, std::allocator<OpQueueItem> >::push_back | |
| | + 0.10% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| | + 0.10% OpQueueItem::~OpQueueItem | |
| + 0.20% ceph::HeartbeatMap::reset_timeout | |
| Thread: 61 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.90% OSD::ShardedOpWQ::_process | |
| | + 57.70% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 57.70% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 0.90% __pthread_mutex_cond_lock | |
| | + 32.30% OpQueueItem::run | |
| | | + 32.30% PGOpItem::run | |
| | | + 32.10% OSD::dequeue_op | |
| | | | + 31.90% PrimaryLogPG::do_request | |
| | | | | + 31.80% PrimaryLogPG::do_op | |
| | | | | | + 27.30% PrimaryLogPG::execute_ctx | |
| | | | | | | + 23.40% PrimaryLogPG::issue_repop | |
| | | | | | | | + 23.30% ReplicatedBackend::submit_transaction | |
| | | | | | | | | + 18.90% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | | | + 18.80% BlueStore::queue_transactions | |
| | | | | | | | | | | + 12.50% BlueStore::_txc_add_transaction | |
| | | | | | | | | | | | + 10.20% BlueStore::_write | |
| | | | | | | | | | | | | + 10.20% BlueStore::_do_write | |
| | | | | | | | | | | | | + 5.10% BlueStore::_do_alloc_write | |
| | | | | | | | | | | | | + 3.70% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | | | | | + 1.10% BlueStore::_do_write_data | |
| | | | | | | | | | | | | + 0.10% BlueStore::_wctx_finish | |
| | | | | | | | | | | | | + 0.10% BlueStore::WriteContext::~WriteContext | |
| | | | | | | | | | | | + 0.80% BlueStore::_omap_setkeys | |
| | | | | | | | | | | | + 0.40% BlueStore::Collection::get_onode | |
| | | | | | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | | | | | + 0.20% BlueStore::_setattrs | |
| | | | | | | | | | | | + 0.20% BlueStore::_get_collection | |
| | | | | | | | | | | | + 0.10% ceph::os::Transaction::iterator::~iterator | |
| | | | | | | | | | | | + 0.10% ceph::buffer::v14_2_0::list::~list | |
| | | | | | | | | | | | + 0.10% BlueStore::_omap_rmkeys | |
| | | | | | | | | | | + 1.90% BlueStore::_txc_state_proc | |
| | | | | | | | | | | + 1.90% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | | | | + 1.60% BlueStore::_txc_write_nodes | |
| | | | | | | | | | | + 0.50% BlueStore::_txc_create | |
| | | | | | | | | | | + 0.30% BlueStore::_txc_finalize_kv | |
| | | | | | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | | | | + 0.10% TrackedOp::put | |
| | | | | | | | | + 3.30% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | | | + 0.40% generate_transaction | |
| | | | | | | | | + 0.30% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | | | + 0.20% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | | | + 0.10% boost::intrusive_ptr<ReplicatedBackend::InProgressOp>::intrusive_ptr | |
| | | | | | | | + 0.10% PeeringState::pre_submit_op | |
| | | | | | | + 2.30% PeeringState::update_trim_to | |
| | | | | | | + 1.40% PrimaryLogPG::prepare_transaction | |
| | | | | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | | | | + 0.10% PG::get_next_version | |
| | | | | | + 2.70% PrimaryLogPG::find_object_context | |
| | | | | | + 0.40% PrimaryLogPG::maybe_await_blocked_head | |
| | | | | | + 0.30% PG::check_in_progress_op | |
| | | | | | + 0.30% Message::clear_payload | |
| | | | | | + 0.20% PG::op_has_sufficient_caps | |
| | | | | | + 0.10% ceph_clock_now | |
| | | | | | + 0.10% boost::intrusive_ptr<Session>::~intrusive_ptr | |
| | | | | | + 0.10% PrimaryLogPG::OpContext::OpContext | |
| | | | | | + 0.10% PGLog::IndexedLog::get_request | |
| | | | | | + 0.10% OSDService::_check_full | |
| | | | | | + 0.10% MOSDOp::finish_decode | |
| | | | | + 0.10% pg_t::get_hobj_start | |
| | | | + 0.10% operator- | |
| | | | + 0.10% OpRequest::mark_reached_pg | |
| | | + 0.20% __pthread_mutex_unlock_usercnt | |
| | + 7.80% OSD::ShardedOpWQ::handle_oncommits | |
| | + 1.30% PG::lock | |
| | + 0.30% std::unique_lock<std::mutex>::unique_lock | |
| | + 0.30% std::mutex::lock | |
| | + 0.10% std::deque<OpQueueItem, std::allocator<OpQueueItem> >::push_back | |
| | + 0.10% boost::intrusive_ptr<PG>::intrusive_ptr | |
| + 0.10% ceph::HeartbeatMap::reset_timeout | |
| Thread: 62 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 100.00% OSD::ShardedOpWQ::_process | |
| + 61.50% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 61.50% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 1.60% __pthread_mutex_cond_lock | |
| + 28.60% OpQueueItem::run | |
| | + 28.50% PGOpItem::run | |
| | | + 28.50% OSD::dequeue_op | |
| | | + 28.40% PrimaryLogPG::do_request | |
| | | | + 28.40% PrimaryLogPG::do_op | |
| | | | + 23.80% PrimaryLogPG::execute_ctx | |
| | | | | + 21.00% PrimaryLogPG::issue_repop | |
| | | | | | + 20.90% ReplicatedBackend::submit_transaction | |
| | | | | | | + 16.20% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | + 16.20% BlueStore::queue_transactions | |
| | | | | | | | + 12.10% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 9.60% BlueStore::_write | |
| | | | | | | | | + 0.90% BlueStore::_omap_setkeys | |
| | | | | | | | | + 0.60% BlueStore::Collection::get_onode | |
| | | | | | | | | + 0.20% std::vector<boost::intrusive_ptr<BlueStore::Onode>, std::allocator<boost::intrusive_ptr<BlueStore::Onode> > >::vector | |
| | | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | + 0.20% BlueStore::_setattrs | |
| | | | | | | | | + 0.10% std::unique_lock<std::shared_mutex>::unique_lock | |
| | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | | + 0.10% BlueStore::_omap_rmkeys | |
| | | | | | | | + 1.60% BlueStore::_txc_write_nodes | |
| | | | | | | | + 1.20% BlueStore::_txc_state_proc | |
| | | | | | | | + 0.90% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | + 0.20% BlueStore::_txc_create | |
| | | | | | | | + 0.10% PerfCounters::inc | |
| | | | | | | | + 0.10% BlueStore::_txc_finalize_kv | |
| | | | | | | + 3.40% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | + 0.70% generate_transaction | |
| | | | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | + 0.10% PrimaryLogPG::op_applied | |
| | | | | | + 0.10% PGTransaction::add_obc | |
| | | | | + 1.30% PeeringState::update_trim_to | |
| | | | | + 0.90% PrimaryLogPG::prepare_transaction | |
| | | | | + 0.30% MOSDOpReply::MOSDOpReply | |
| | | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | | + 0.10% PrimaryLogPG::eval_repop | |
| | | | + 2.80% PrimaryLogPG::find_object_context | |
| | | | + 0.30% PGLog::IndexedLog::get_request | |
| | | | + 0.30% Message::clear_payload | |
| | | | + 0.30% MOSDOp::finish_decode | |
| | | | + 0.20% PrimaryLogPG::maybe_await_blocked_head | |
| | | | + 0.20% PrimaryLogPG::OpContext::OpContext | |
| | | | + 0.10% PG::op_has_sufficient_caps | |
| | | | + 0.10% OpRequest::mark_started | |
| | | | + 0.10% OSDService::_check_full | |
| | | + 0.10% OpRequest::mark_reached_pg | |
| | + 0.10% PGPeeringItem::run | |
| + 6.40% OSD::ShardedOpWQ::handle_oncommits | |
| + 2.30% PG::lock | |
| + 0.60% std::unique_lock<std::mutex>::unique_lock | |
| + 0.20% OpQueueItem::~OpQueueItem | |
| + 0.10% std::vector<OSDShard*, std::allocator<OSDShard*> >::operator[] | |
| + 0.10% std::mutex::lock | |
| + 0.10% std::deque<OpQueueItem, std::allocator<OpQueueItem> >::push_back | |
| + 0.10% ContextQueue::move_to | |
| Thread: 63 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 100.00% OSD::ShardedOpWQ::_process | |
| + 58.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 58.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 0.70% __pthread_mutex_cond_lock | |
| + 39.30% OpQueueItem::run | |
| | + 39.30% PGOpItem::run | |
| | + 39.30% OSD::dequeue_op | |
| | + 38.90% PrimaryLogPG::do_request | |
| | | + 38.90% PrimaryLogPG::do_op | |
| | | + 31.20% PrimaryLogPG::execute_ctx | |
| | | | + 26.20% PrimaryLogPG::issue_repop | |
| | | | | + 25.90% ReplicatedBackend::submit_transaction | |
| | | | | | + 20.30% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | + 20.30% BlueStore::queue_transactions | |
| | | | | | | + 14.60% BlueStore::_txc_add_transaction | |
| | | | | | | | + 11.20% BlueStore::_write | |
| | | | | | | | | + 11.20% BlueStore::_do_write | |
| | | | | | | | | + 5.70% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | + 3.80% BlueStore::_do_alloc_write | |
| | | | | | | | | + 1.40% BlueStore::_do_write_data | |
| | | | | | | | | + 0.10% BlueStore::_wctx_finish | |
| | | | | | | | | + 0.10% BlueStore::ExtentMap::compress_extent_map | |
| | | | | | | | + 1.20% BlueStore::_omap_setkeys | |
| | | | | | | | + 0.70% BlueStore::Collection::get_onode | |
| | | | | | | | + 0.40% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | + 0.20% ghobject_t::ghobject_t | |
| | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | + 0.20% ceph::os::Transaction::begin | |
| | | | | | | | + 0.20% BlueStore::_setattrs | |
| | | | | | | | + 0.10% std::unique_lock<std::shared_mutex>::~unique_lock | |
| | | | | | | | + 0.10% ceph::buffer::v14_2_0::list::~list | |
| | | | | | | | + 0.10% BlueStore::_omap_rmkeys | |
| | | | | | | + 2.30% BlueStore::_txc_state_proc | |
| | | | | | | + 1.50% BlueStore::_txc_write_nodes | |
| | | | | | | + 1.20% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | + 0.40% BlueStore::_txc_create | |
| | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | + 0.10% BlueStore::log_latency | |
| | | | | | | + 0.10% BlueStore::_txc_finalize_kv | |
| | | | | | + 3.70% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | + 0.50% generate_transaction | |
| | | | | | + 0.40% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | + 0.30% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | + 0.10% ceph::make_ref<ReplicatedBackend::InProgressOp, unsigned long&, Context*&, boost::intrusive_ptr<OpRequest>&, eversion_t const&> | |
| | | | | | + 0.10% boost::intrusive_ptr<OpRequest>::~intrusive_ptr | |
| | | | | | + 0.10% PrimaryLogPG::op_applied | |
| | | | | | + 0.10% PGBackend::get_osdmap | |
| | | | | + 0.20% PGLog::IndexedLog::add | |
| | | | + 2.60% PeeringState::update_trim_to | |
| | | | + 1.70% PrimaryLogPG::prepare_transaction | |
| | | | + 0.30% PrimaryLogPG::new_repop | |
| | | | + 0.30% MOSDOpReply::MOSDOpReply | |
| | | | + 0.10% PrimaryLogPG::eval_repop | |
| | | + 4.20% PrimaryLogPG::find_object_context | |
| | | + 0.60% MOSDOp::finish_decode | |
| | | + 0.50% Message::clear_payload | |
| | | + 0.40% PrimaryLogPG::maybe_await_blocked_head | |
| | | + 0.40% PGLog::IndexedLog::get_request | |
| | | + 0.30% PrimaryLogPG::maybe_handle_cache | |
| | | + 0.30% PerfCounters::tinc | |
| | | + 0.20% PrimaryLogPG::OpContext::OpContext | |
| | | + 0.20% PG::check_in_progress_op | |
| | | + 0.10% std::shared_ptr<ObjectContext>::~shared_ptr | |
| | | + 0.10% PrimaryLogPG::is_unreadable_object | |
| | | + 0.10% PrimaryLogPG::is_degraded_or_backfilling_object | |
| | | + 0.10% PrimaryLogPG::<lambda(auto:173)>::operator()<CephContext*> | |
| | | + 0.10% MOSDOp::get_reqid | |
| | + 0.20% OpRequest::mark_reached_pg | |
| | + 0.20% OSDService::maybe_share_map | |
| + 1.80% PG::lock | |
| + 0.40% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| + 0.20% std::mutex::lock | |
| + 0.20% OpQueueItem::~OpQueueItem | |
| + 0.10% boost::intrusive_ptr<PG>::intrusive_ptr | |
| Thread: 64 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 100.00% OSD::ShardedOpWQ::_process | |
| + 70.60% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 70.60% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 1.90% __pthread_mutex_cond_lock | |
| + 26.60% OpQueueItem::run | |
| | + 26.60% PGOpItem::run | |
| | + 26.60% OSD::dequeue_op | |
| | + 26.30% PrimaryLogPG::do_request | |
| | | + 26.30% PrimaryLogPG::do_op | |
| | | + 22.50% PrimaryLogPG::execute_ctx | |
| | | | + 19.90% PrimaryLogPG::issue_repop | |
| | | | | + 19.70% ReplicatedBackend::submit_transaction | |
| | | | | | + 15.90% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | + 15.90% BlueStore::queue_transactions | |
| | | | | | | + 11.60% BlueStore::_txc_add_transaction | |
| | | | | | | | + 9.00% BlueStore::_write | |
| | | | | | | | + 0.80% BlueStore::_omap_setkeys | |
| | | | | | | | + 0.70% BlueStore::Collection::get_onode | |
| | | | | | | | + 0.30% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | + 0.20% BlueStore::_omap_rmkeys | |
| | | | | | | | + 0.10% std::vector<boost::intrusive_ptr<BlueStore::Collection>, std::allocator<boost::intrusive_ptr<BlueStore::Collection> > >::~vector | |
| | | | | | | | + 0.10% std::unique_lock<std::shared_mutex>::unique_lock | |
| | | | | | | | + 0.10% ghobject_t::ghobject_t | |
| | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_bl | |
| | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | + 0.10% BlueStore::_setattrs | |
| | | | | | | + 2.00% BlueStore::_txc_write_nodes | |
| | | | | | | + 1.10% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | + 0.90% BlueStore::_txc_state_proc | |
| | | | | | | + 0.20% BlueStore::_txc_finalize_kv | |
| | | | | | | + 0.10% BlueStore::_txc_create | |
| | | | | | + 3.00% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | + 0.30% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | + 0.20% generate_transaction | |
| | | | | | + 0.10% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | + 0.10% ceph::os::Transaction::Transaction | |
| | | | | + 0.10% PGLog::IndexedLog::add | |
| | | | + 1.50% PeeringState::update_trim_to | |
| | | | + 0.40% PrimaryLogPG::prepare_transaction | |
| | | | + 0.20% PrimaryLogPG::OpContext::register_on_commit<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | | + 0.20% MOSDOpReply::MOSDOpReply | |
| | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | + 0.10% PrimaryLogPG::OpContext::reset_obs | |
| | | | + 0.10% PrimaryLogPG::OpContext::register_on_finish<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | + 2.30% PrimaryLogPG::find_object_context | |
| | | + 0.40% Message::clear_payload | |
| | | + 0.30% MOSDOp::finish_decode | |
| | | + 0.20% boost::intrusive_ptr<Session>::~intrusive_ptr | |
| | | + 0.20% PrimaryLogPG::OpContext::OpContext | |
| | | + 0.10% PrimaryLogPG::is_unreadable_object | |
| | | + 0.10% PrimaryLogPG::check_laggy | |
| | | + 0.10% PG::check_in_progress_op | |
| | | + 0.10% OpRequest::mark_started | |
| | + 0.10% OpRequest::mark_reached_pg | |
| | + 0.10% OSDService::maybe_share_map | |
| + 2.00% PG::lock | |
| + 0.40% std::unique_lock<std::mutex>::unique_lock | |
| + 0.10% std::mutex::lock | |
| + 0.10% boost::intrusive_ptr<PG>::intrusive_ptr | |
| + 0.10% OpQueueItem::~OpQueueItem | |
| + 0.10% OpQueueItem::get_ordering_token | |
| Thread: 65 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.90% OSD::ShardedOpWQ::_process | |
| | + 56.00% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 56.00% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 0.50% __pthread_mutex_cond_lock | |
| | + 40.20% OpQueueItem::run | |
| | | + 40.00% PGOpItem::run | |
| | | | + 39.90% OSD::dequeue_op | |
| | | | | + 39.80% PrimaryLogPG::do_request | |
| | | | | | + 39.70% PrimaryLogPG::do_op | |
| | | | | | | + 32.30% PrimaryLogPG::execute_ctx | |
| | | | | | | | + 28.30% PrimaryLogPG::issue_repop | |
| | | | | | | | | + 27.70% ReplicatedBackend::submit_transaction | |
| | | | | | | | | | + 21.80% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | | | | + 21.80% BlueStore::queue_transactions | |
| | | | | | | | | | | + 14.90% BlueStore::_txc_add_transaction | |
| | | | | | | | | | | | + 11.80% BlueStore::_write | |
| | | | | | | | | | | | | + 11.80% BlueStore::_do_write | |
| | | | | | | | | | | | | + 5.00% BlueStore::_do_alloc_write | |
| | | | | | | | | | | | | + 4.90% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | | | | | + 1.50% BlueStore::_do_write_data | |
| | | | | | | | | | | | | + 0.30% BlueStore::ExtentMap::compress_extent_map | |
| | | | | | | | | | | | | + 0.10% boost::intrusive_ptr<BlueStore::Onode>::~intrusive_ptr | |
| | | | | | | | | | | | + 1.10% BlueStore::_omap_setkeys | |
| | | | | | | | | | | | + 0.80% BlueStore::Collection::get_onode | |
| | | | | | | | | | | | + 0.30% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | | | | | + 0.30% BlueStore::_setattrs | |
| | | | | | | | | | | | + 0.20% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | | | | + 0.20% ceph::buffer::v14_2_0::list::~list | |
| | | | | | | | | | | | + 0.10% ceph::os::Transaction::begin | |
| | | | | | | | | | | | + 0.10% BlueStore::_omap_rmkeys | |
| | | | | | | | | | | + 2.70% BlueStore::_txc_state_proc | |
| | | | | | | | | | | + 1.80% BlueStore::_txc_write_nodes | |
| | | | | | | | | | | + 1.70% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | | | | + 0.50% BlueStore::_txc_finalize_kv | |
| | | | | | | | | | | + 0.20% BlueStore::_txc_create | |
| | | | | | | | | | + 4.50% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | | | | + 0.60% generate_transaction | |
| | | | | | | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | | | | + 0.20% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | | | | + 0.10% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | | | | | + 0.10% operator!= | |
| | | | | | | | | | + 0.10% ceph::make_ref<ReplicatedBackend::InProgressOp, unsigned long&, Context*&, boost::intrusive_ptr<OpRequest>&, eversion_t const&> | |
| | | | | | | | | + 0.20% pthread_self@GLIBC_2.2.5 | |
| | | | | | | | | + 0.20% PGTransaction::add_obc | |
| | | | | | | | | + 0.10% PGLog::IndexedLog::add | |
| | | | | | | | | + 0.10% C_OSD_RepopCommit::C_OSD_RepopCommit | |
| | | | | | | | + 2.20% PeeringState::update_trim_to | |
| | | | | | | | + 1.30% PrimaryLogPG::prepare_transaction | |
| | | | | | | | + 0.20% PrimaryLogPG::OpContext::register_on_success<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | | | | | | + 0.10% PrimaryLogPG::new_repop | |
| | | | | | | | + 0.10% PrimaryLogPG::OpContext::register_on_finish<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | | | | | | + 0.10% PrimaryLogPG::OpContext::register_on_commit<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | | | | | + 4.40% PrimaryLogPG::find_object_context | |
| | | | | | | + 1.00% Message::clear_payload | |
| | | | | | | + 0.40% PGLog::IndexedLog::get_request | |
| | | | | | | + 0.40% MOSDOp::finish_decode | |
| | | | | | | + 0.20% PG::check_in_progress_op | |
| | | | | | | + 0.10% tcmalloc::ThreadCache::FetchFromCentralCache(unsigned int, int, void* (*)(unsigned long)) | |
| | | | | | | + 0.10% operator-= | |
| | | | | | | + 0.10% object_locator_t::~object_locator_t | |
| | | | | | | + 0.10% object_locator_t::object_locator_t | |
| | | | | | | + 0.10% boost::intrusive_ptr<OpRequest>::~intrusive_ptr | |
| | | | | | | + 0.10% PrimaryLogPG::maybe_await_blocked_head | |
| | | | | | | + 0.10% PrimaryLogPG::is_degraded_or_backfilling_object | |
| | | | | | | + 0.10% OpRequest::mark_started | |
| | | | | | | + 0.10% OSD::init_op_flags | |
| | | | | | + 0.10% PG::can_discard_request | |
| | | | | + 0.10% OpRequest::mark_reached_pg | |
| | | | + 0.10% __pthread_mutex_unlock_usercnt | |
| | | + 0.20% PGPeeringItem::run | |
| | + 3.00% PG::lock | |
| | + 0.20% std::mutex::lock | |
| | + 0.20% boost::intrusive_ptr<PG>::intrusive_ptr | |
| | + 0.10% std::unique_lock<std::mutex>::unique_lock | |
| | + 0.10% OpRequest::get_reqid | |
| | + 0.10% OpQueueItem::maybe_get_op | |
| + 0.10% ceph::HeartbeatMap::reset_timeout | |
| Thread: 66 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 100.00% OSD::ShardedOpWQ::_process | |
| + 70.40% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 70.40% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 1.00% __pthread_mutex_cond_lock | |
| + 26.90% OpQueueItem::run | |
| | + 26.90% PGOpItem::run | |
| | + 26.70% OSD::dequeue_op | |
| | | + 26.50% PrimaryLogPG::do_request | |
| | | | + 26.30% PrimaryLogPG::do_op | |
| | | | | + 22.00% PrimaryLogPG::execute_ctx | |
| | | | | | + 19.70% PrimaryLogPG::issue_repop | |
| | | | | | | + 19.30% ReplicatedBackend::submit_transaction | |
| | | | | | | | + 14.20% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | | + 14.20% BlueStore::queue_transactions | |
| | | | | | | | | + 9.40% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 2.00% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | | + 1.50% BlueStore::_txc_write_nodes | |
| | | | | | | | | + 1.20% BlueStore::_txc_state_proc | |
| | | | | | | | | + 0.10% BlueStore::_txc_create | |
| | | | | | | | + 3.90% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | | + 0.30% generate_transaction | |
| | | | | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::~vector | |
| | | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | | + 0.10% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | | | + 0.10% std::set<pg_shard_t, std::less<pg_shard_t>, std::allocator<pg_shard_t> >::insert<std::_Rb_tree_const_iterator<pg_shard_t> > | |
| | | | | | | | + 0.10% ceph::make_ref<ReplicatedBackend::InProgressOp, unsigned long&, Context*&, boost::intrusive_ptr<OpRequest>&, eversion_t const&> | |
| | | | | | | | + 0.10% PrimaryLogPG::op_applied | |
| | | | | | | + 0.30% PGLog::IndexedLog::add | |
| | | | | | | + 0.10% PGTransaction::add_obc | |
| | | | | | + 1.50% PeeringState::update_trim_to | |
| | | | | | + 0.60% PrimaryLogPG::prepare_transaction | |
| | | | | | + 0.10% PrimaryLogPG::OpContext::register_on_finish<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | | | | + 0.10% MOSDOpReply::MOSDOpReply | |
| | | | | + 2.90% PrimaryLogPG::find_object_context | |
| | | | | + 0.50% Message::clear_payload | |
| | | | | + 0.30% PG::check_in_progress_op | |
| | | | | + 0.10% boost::intrusive_ptr<Session>::~intrusive_ptr | |
| | | | | + 0.10% PrimaryLogPG::is_degraded_or_backfilling_object | |
| | | | | + 0.10% PGLog::IndexedLog::get_request | |
| | | | | + 0.10% OpRequest::mark_started | |
| | | | | + 0.10% OSDMap::is_blacklisted | |
| | | | | + 0.10% MOSDOp::finish_decode | |
| | | | + 0.10% PG::can_discard_request | |
| | | + 0.20% OpRequest::mark_reached_pg | |
| | + 0.20% __pthread_mutex_unlock_usercnt | |
| + 1.70% PG::lock | |
| + 0.40% std::mutex::lock | |
| + 0.30% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| + 0.20% std::unique_lock<std::mutex>::unique_lock | |
| + 0.10% OpQueueItem::get_ordering_token | |
| Thread: 67 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 100.00% OSD::ShardedOpWQ::_process | |
| + 54.80% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 54.80% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 1.00% __pthread_mutex_cond_lock | |
| + 42.50% OpQueueItem::run | |
| | + 42.50% PGOpItem::run | |
| | + 42.30% OSD::dequeue_op | |
| | | + 42.20% PrimaryLogPG::do_request | |
| | | | + 41.90% PrimaryLogPG::do_op | |
| | | | | + 36.10% PrimaryLogPG::execute_ctx | |
| | | | | | + 31.10% PrimaryLogPG::issue_repop | |
| | | | | | | + 31.00% ReplicatedBackend::submit_transaction | |
| | | | | | | + 24.30% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | + 24.30% BlueStore::queue_transactions | |
| | | | | | | | + 18.10% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 15.40% BlueStore::_write | |
| | | | | | | | | | + 15.40% BlueStore::_do_write | |
| | | | | | | | | | + 7.20% BlueStore::ExtentMap::fault_range | |
| | | | | | | | | | + 6.30% BlueStore::_do_alloc_write | |
| | | | | | | | | | + 1.40% BlueStore::_do_write_data | |
| | | | | | | | | | + 0.20% BlueStore::ExtentMap::compress_extent_map | |
| | | | | | | | | | + 0.10% BlueStore::WriteContext::~WriteContext | |
| | | | | | | | | | + 0.10% BlueStore::GarbageCollector::GarbageCollector | |
| | | | | | | | | | + 0.10% BlueStore::ExtentMap::dirty_range | |
| | | | | | | | | + 0.90% BlueStore::_omap_setkeys | |
| | | | | | | | | + 0.80% BlueStore::Collection::get_onode | |
| | | | | | | | | + 0.30% BlueStore::_setattrs | |
| | | | | | | | | + 0.20% BlueStore::_omap_rmkeys | |
| | | | | | | | | + 0.10% std::unique_lock<std::shared_mutex>::unique_lock | |
| | | | | | | | | + 0.10% ghobject_t::~ghobject_t | |
| | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | + 0.10% ceph::os::Transaction::begin | |
| | | | | | | | | + 0.10% ceph::buffer::v14_2_0::list::~list | |
| | | | | | | | + 2.00% BlueStore::_txc_write_nodes | |
| | | | | | | | + 1.70% BlueStore::_txc_state_proc | |
| | | | | | | | + 1.60% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | + 0.60% BlueStore::_txc_create | |
| | | | | | | | + 0.20% BlueStore::_txc_finalize_kv | |
| | | | | | | + 4.40% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | + 1.10% generate_transaction | |
| | | | | | | + 0.40% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | + 0.40% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::~vector | |
| | | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | + 0.10% PrimaryLogPG::get_acting_recovery_backfill_shards | |
| | | | | | | + 0.10% PrimaryLogPG::apply_stats | |
| | | | | | + 2.70% PeeringState::update_trim_to | |
| | | | | | + 1.80% PrimaryLogPG::prepare_transaction | |
| | | | | | + 0.30% PrimaryLogPG::new_repop | |
| | | | | | + 0.10% PG::filter_snapc | |
| | | | | | + 0.10% MOSDOpReply::MOSDOpReply | |
| | | | | + 2.90% PrimaryLogPG::find_object_context | |
| | | | | + 0.60% Message::clear_payload | |
| | | | | + 0.40% PGLog::IndexedLog::get_request | |
| | | | | + 0.40% MOSDOp::finish_decode | |
| | | | | + 0.30% PG::check_in_progress_op | |
| | | | | + 0.20% PrimaryLogPG::maybe_await_blocked_head | |
| | | | | + 0.20% PrimaryLogPG::OpContext::OpContext | |
| | | | | + 0.20% PerfCounters::tinc | |
| | | | | + 0.10% boost::intrusive_ptr<Session>::~intrusive_ptr | |
| | | | | + 0.10% PrimaryLogPG::maybe_handle_cache | |
| | | | | + 0.10% PrimaryLogPG::check_laggy | |
| | | | | + 0.10% PG::op_has_sufficient_caps | |
| | | | | + 0.10% PG::get_osdmap | |
| | | | | + 0.10% OpRequest::mark_started | |
| | | | + 0.10% std::unordered_map<entity_name_t, std::__cxx11::list<boost::intrusive_ptr<OpRequest>, std::allocator<boost::intrusive_ptr<OpRequest> > >, std::hash<entity_name_t>, std::equal_to<entity_name_t>, std::allocator<std::pair<entity_name_t const, std::__cxx11::list<boost::intrusive_ptr<OpRequest>, std::allocator<boost::intrusive_ptr<OpRequest> > > > > >::find | |
| | | | + 0.10% OpRequest::get_source | |
| | | + 0.10% OpRequest::mark_reached_pg | |
| | + 0.10% pthread_mutex_unlock | |
| | + 0.10% __pthread_mutex_unlock_usercnt | |
| + 1.60% PG::lock | |
| + 0.60% std::mutex::lock | |
| + 0.50% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| Thread: 68 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.90% OSD::ShardedOpWQ::_process | |
| | + 70.20% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 70.20% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 1.60% __pthread_mutex_cond_lock | |
| | + 27.00% OpQueueItem::run | |
| | | + 26.90% PGOpItem::run | |
| | | | + 26.90% OSD::dequeue_op | |
| | | | + 26.70% PrimaryLogPG::do_request | |
| | | | | + 26.70% PrimaryLogPG::do_op | |
| | | | | + 23.00% PrimaryLogPG::execute_ctx | |
| | | | | | + 20.00% PrimaryLogPG::issue_repop | |
| | | | | | | + 19.90% ReplicatedBackend::submit_transaction | |
| | | | | | | | + 14.70% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | | + 14.70% BlueStore::queue_transactions | |
| | | | | | | | | + 9.50% BlueStore::_txc_add_transaction | |
| | | | | | | | | + 1.70% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | | + 1.60% BlueStore::_txc_write_nodes | |
| | | | | | | | | + 1.60% BlueStore::_txc_state_proc | |
| | | | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | | | | + 0.10% BlueStore::_txc_finalize_kv | |
| | | | | | | | | + 0.10% BlueStore::_txc_create | |
| | | | | | | | + 3.50% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | | + 0.70% generate_transaction | |
| | | | | | | | + 0.40% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | | + 0.20% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::~vector | |
| | | | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | | + 0.10% ReplicatedBackend::issue_op | |
| | | | | | | | + 0.10% PrimaryLogPG::apply_stats | |
| | | | | | | + 0.10% PGLog::IndexedLog::add | |
| | | | | | + 1.50% PeeringState::update_trim_to | |
| | | | | | + 0.70% PrimaryLogPG::prepare_transaction | |
| | | | | | + 0.30% MOSDOpReply::MOSDOpReply | |
| | | | | | + 0.20% PrimaryLogPG::new_repop | |
| | | | | | + 0.10% std::shared_ptr<ObjectContext>::~shared_ptr | |
| | | | | | + 0.10% PrimaryLogPG::OpContext::reset_obs | |
| | | | | | + 0.10% PG::get_next_version | |
| | | | | + 2.40% PrimaryLogPG::find_object_context | |
| | | | | + 0.40% Message::clear_payload | |
| | | | | + 0.30% MOSDOp::finish_decode | |
| | | | | + 0.10% PrimaryLogPG::maybe_await_blocked_head | |
| | | | | + 0.10% PrimaryLogPG::check_laggy | |
| | | | | + 0.10% PrimaryLogPG::OpContext::OpContext | |
| | | | | + 0.10% PGLog::IndexedLog::get_request | |
| | | | | + 0.10% PG::check_in_progress_op | |
| | | | | + 0.10% ObjectContext::is_blocked | |
| | | | + 0.20% OpRequest::mark_reached_pg | |
| | | + 0.10% std::unique_ptr<OpQueueItem::OpQueueable, std::default_delete<OpQueueItem::OpQueueable> >::operator-> | |
| | + 2.00% PG::lock | |
| | + 0.20% std::unique_lock<std::mutex>::unique_lock | |
| | + 0.20% std::mutex::lock | |
| | + 0.20% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| + 0.10% ceph::HeartbeatMap::reset_timeout | |
| Thread: 69 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 100.00% OSD::ShardedOpWQ::_process | |
| + 65.30% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | + 65.30% pthread_cond_wait@@GLIBC_2.3.2 | |
| | + 1.10% __pthread_mutex_cond_lock | |
| | + 0.10% __pthread_enable_asynccancel | |
| + 32.60% OpQueueItem::run | |
| | + 32.60% PGOpItem::run | |
| | + 32.50% OSD::dequeue_op | |
| | + 32.20% PrimaryLogPG::do_request | |
| | | + 32.10% PrimaryLogPG::do_op | |
| | | + 26.40% PrimaryLogPG::execute_ctx | |
| | | | + 21.70% PrimaryLogPG::issue_repop | |
| | | | | + 21.60% ReplicatedBackend::submit_transaction | |
| | | | | + 16.80% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | + 16.70% BlueStore::queue_transactions | |
| | | | | | | + 10.70% BlueStore::_txc_add_transaction | |
| | | | | | | | + 8.70% BlueStore::_write | |
| | | | | | | | + 0.50% BlueStore::_omap_setkeys | |
| | | | | | | | + 0.50% BlueStore::Collection::get_onode | |
| | | | | | | | + 0.30% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | + 0.20% ghobject_t::ghobject_t | |
| | | | | | | | + 0.20% BlueStore::_setattrs | |
| | | | | | | | + 0.20% BlueStore::_get_collection | |
| | | | | | | | + 0.10% std::vector<boost::intrusive_ptr<BlueStore::Onode>, std::allocator<boost::intrusive_ptr<BlueStore::Onode> > >::~vector | |
| | | | | | | + 2.00% BlueStore::_txc_state_proc | |
| | | | | | | + 1.80% BlueStore::_txc_write_nodes | |
| | | | | | | + 1.70% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | + 0.30% BlueStore::_txc_finalize_kv | |
| | | | | | | + 0.10% ceph::time_detail::mono_clock::now | |
| | | | | | + 0.10% TrackedOp::put | |
| | | | | + 3.10% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | + 0.80% generate_transaction | |
| | | | | + 0.20% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | + 0.20% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::~vector | |
| | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | + 0.10% boost::intrusive_ptr<OpRequest>::~intrusive_ptr | |
| | | | | + 0.10% ReplicatedBackend::issue_op | |
| | | | | + 0.10% PGBackend::get_osdmap | |
| | | | + 1.90% PeeringState::update_trim_to | |
| | | | + 1.70% PrimaryLogPG::prepare_transaction | |
| | | | + 0.30% MOSDOpReply::MOSDOpReply | |
| | | | + 0.20% PrimaryLogPG::new_repop | |
| | | | + 0.20% PrimaryLogPG::OpContext::reset_obs | |
| | | | + 0.20% PG::filter_snapc | |
| | | | + 0.10% tc_newarray | |
| | | | + 0.10% PrimaryLogPG::OpContext::register_on_success<PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)::<lambda()> > | |
| | | + 3.90% PrimaryLogPG::find_object_context | |
| | | + 0.30% PrimaryLogPG::maybe_await_blocked_head | |
| | | + 0.30% Message::clear_payload | |
| | | + 0.20% PrimaryLogPG::OpContext::OpContext | |
| | | + 0.20% PG::check_in_progress_op | |
| | | + 0.20% MOSDOp::finish_decode | |
| | | + 0.10% tc_newarray | |
| | | + 0.10% PrimaryLogPG::check_laggy | |
| | | + 0.10% PGLog::IndexedLog::get_request | |
| | | + 0.10% PG::op_has_sufficient_caps | |
| | | + 0.10% PG::get_osdmap | |
| | | + 0.10% OSDService::_check_full | |
| | + 0.10% operator- | |
| | + 0.10% ceph_clock_now | |
| | + 0.10% OpRequest::mark_reached_pg | |
| + 1.40% PG::lock | |
| + 0.20% std::mutex::lock | |
| + 0.20% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| + 0.10% std::unique_lock<std::mutex>::unique_lock | |
| + 0.10% WeightedPriorityQueue<OpQueueItem, unsigned long>::empty | |
| + 0.10% OpQueueItem::~OpQueueItem | |
| Thread: 70 (tp_osd_tp) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ShardedThreadPool::WorkThreadSharded::entry | |
| + 100.00% ShardedThreadPool::shardedthreadpool_worker | |
| + 99.90% OSD::ShardedOpWQ::_process | |
| | + 66.60% std::condition_variable::wait(std::unique_lock<std::mutex>&) | |
| | | + 66.60% pthread_cond_wait@@GLIBC_2.3.2 | |
| | | + 1.50% __pthread_mutex_cond_lock | |
| | + 31.10% OpQueueItem::run | |
| | | + 31.00% PGOpItem::run | |
| | | | + 31.00% OSD::dequeue_op | |
| | | | + 31.00% PrimaryLogPG::do_request | |
| | | | + 30.70% PrimaryLogPG::do_op | |
| | | | | + 24.20% PrimaryLogPG::execute_ctx | |
| | | | | | + 21.90% PrimaryLogPG::issue_repop | |
| | | | | | | + 21.60% ReplicatedBackend::submit_transaction | |
| | | | | | | | + 17.20% non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<OpRequest>) | |
| | | | | | | | | + 17.20% BlueStore::queue_transactions | |
| | | | | | | | | + 11.80% BlueStore::_txc_add_transaction | |
| | | | | | | | | | + 9.20% BlueStore::_write | |
| | | | | | | | | | + 1.00% BlueStore::Collection::get_onode | |
| | | | | | | | | | + 0.40% BlueStore::_omap_setkeys | |
| | | | | | | | | | + 0.30% ceph::os::Transaction::iterator::decode_attrset_bl | |
| | | | | | | | | | + 0.20% ceph::os::Transaction::begin | |
| | | | | | | | | | + 0.10% std::vector<boost::intrusive_ptr<BlueStore::Onode>, std::allocator<boost::intrusive_ptr<BlueStore::Onode> > >::~vector | |
| | | | | | | | | | + 0.10% std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v14_2_0::ptr, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v14_2_0::ptr> > >::~map | |
| | | | | | | | | | + 0.10% ceph::os::Transaction::iterator::decode_attrset | |
| | | | | | | | | | + 0.10% ceph::buffer::v14_2_0::list::~list | |
| | | | | | | | | | + 0.10% BlueStore::_setattrs | |
| | | | | | | | | | + 0.10% BlueStore::_get_collection | |
| | | | | | | | | + 1.90% BlueStore::_txc_write_nodes | |
| | | | | | | | | + 1.80% BlueStore::BlueStoreThrottle::try_start_transaction | |
| | | | | | | | | + 1.20% BlueStore::_txc_state_proc | |
| | | | | | | | | + 0.30% BlueStore::_txc_create | |
| | | | | | | | | + 0.20% BlueStore::_txc_finalize_kv | |
| | | | | | | | + 3.20% non-virtual thunk to PrimaryLogPG::log_operation(std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> > const&, std::optional<pg_hit_set_history_t> const&, eversion_t const&, eversion_t const&, bool, ceph::os::Transaction&, bool) | |
| | | | | | | | + 0.40% generate_transaction | |
| | | | | | | | + 0.20% PrimaryLogPG::apply_stats | |
| | | | | | | | + 0.10% std::vector<pg_log_entry_t, std::allocator<pg_log_entry_t> >::vector | |
| | | | | | | | + 0.10% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::~vector | |
| | | | | | | | + 0.10% std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >::push_back | |
| | | | | | | | + 0.10% std::unique_ptr<PGTransaction, std::default_delete<PGTransaction> >::~unique_ptr | |
| | | | | | | | + 0.10% std::set<pg_shard_t, std::less<pg_shard_t>, std::allocator<pg_shard_t> >::insert<std::_Rb_tree_const_iterator<pg_shard_t> > | |
| | | | | | | | + 0.10% ceph::make_ref<ReplicatedBackend::InProgressOp, unsigned long&, Context*&, boost::intrusive_ptr<OpRequest>&, eversion_t const&> | |
| | | | | | | + 0.20% PGLog::IndexedLog::add | |
| | | | | | | + 0.10% PGTransaction::add_obc | |
| | | | | | + 1.40% PeeringState::update_trim_to | |
| | | | | | + 0.70% PrimaryLogPG::prepare_transaction | |
| | | | | | + 0.10% std::vector<snapid_t, std::allocator<snapid_t> >::operator= | |
| | | | | | + 0.10% boost::intrusive_ptr<OpRequest>::~intrusive_ptr | |
| | | | | + 4.10% PrimaryLogPG::find_object_context | |
| | | | | + 0.70% MOSDOp::finish_decode | |
| | | | | + 0.60% Message::clear_payload | |
| | | | | + 0.20% PGLog::IndexedLog::get_request | |
| | | | | + 0.10% boost::intrusive_ptr<OpRequest>::intrusive_ptr | |
| | | | | + 0.10% PrimaryLogPG::maybe_await_blocked_head | |
| | | | | + 0.10% PrimaryLogPG::check_laggy | |
| | | | | + 0.10% PG::op_has_sufficient_caps | |
| | | | | + 0.10% OSDService::check_failsafe_full | |
| | | | | + 0.10% OSDService::_check_full | |
| | | | | + 0.10% OSD::init_op_flags | |
| | | | | + 0.10% Message::get_source_addr | |
| | | | + 0.10% pg_t::get_hobj_start | |
| | | | + 0.10% PG::can_discard_request | |
| | | + 0.10% PGPeeringItem::run | |
| | + 1.60% PG::lock | |
| | + 0.20% boost::intrusive_ptr<PG>::intrusive_ptr | |
| | + 0.20% WeightedPriorityQueue<OpQueueItem, unsigned long>::dequeue | |
| + 0.10% ceph::HeartbeatMap::reset_timeout | |
| Thread: 71 (tp_osd_cmd) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% ThreadPool::WorkThread::entry | |
| + 100.00% ThreadPool::worker | |
| + 100.00% std::condition_variable::wait_for<long, std::ratio<1l, 1l> > | |
| + 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: 72 (osd_srv_heartbt) - 1000 samples | |
| + 100.00% clone | |
| + 100.00% start_thread | |
| + 100.00% OSD::T_Heartbeat::entry | |
| + 100.00% OSD::heartbeat_entry | |
| + 99.70% std::condition_variable::wait_for<unsigned long, std::ratio<1l, 1000000000l> > | |
| | + 99.70% std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > | |
| | + 99.70% std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > | |
| | + 99.70% __gthread_cond_timedwait | |
| | + 99.70% pthread_cond_timedwait@@GLIBC_2.3.2 | |
| + 0.30% OSD::heartbeat |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment