Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rzarzynski/351ac017d1d8b9cc5faf235a01864c1c to your computer and use it in GitHub Desktop.
Save rzarzynski/351ac017d1d8b9cc5faf235a01864c1c to your computer and use it in GitHub Desktop.
bstore_aio load during 4 MiB reads & randreads
Thread: 120 (bstore_aio) - 1000 samples
+ 100.00% clone
+ 100.00% start_thread
+ 100.00% KernelDevice::AioCompletionThread::entry
+ 100.00% KernelDevice::_aio_thread
+ 55.00% aio_queue_t::get_next_completed
| + 54.70% __io_getevents_0_4
| + 0.10% io_getevents
+ 44.70% BlueStore::AioReadBatch::aio_finish
| + 42.30% BlueStore::PlainRegionReader::postprocess
| | + 36.70% BlueStore::RegionReader::_verify_csum
| | | + 36.60% bluestore_blob_t::verify_csum
| | | | + 36.60% verify<Checksummer::crc32c>
| | | | + 35.90% calc
| | | | | + 35.90% ceph::buffer::list::iterator_impl<true>::crc32c
| | | | | + 35.00% ceph_crc32c
| | | | | | + 35.00% ceph_crc32c_intel_fast
| | | | | | + 34.80% ???
| | | | | | + 34.80% ???
| | | | | | + 34.80% crc32_iscsi_00
| | | | | + 0.70% ceph::buffer::list::iterator_impl<true>::get_ptr_and_advance
| | | | | + 0.60% ceph::buffer::ptr::c_str
| | | | + 0.60% ceph::buffer::ptr::c_str
| | | + 0.10% ~PerfGuard
| | | + 0.10% now
| | | + 0.10% clock_gettime
| | | + 0.10% clock_gettime
| | + 5.10% did_read
| | | + 4.20% lock_guard
| | | | + 4.20% lock
| | | | + 4.20% __gthread_recursive_mutex_lock
| | | | + 4.20% __gthread_mutex_lock
| | | | + 4.20% pthread_mutex_lock
| | | | + 4.20% _L_lock_870
| | | | + 4.20% __lll_lock_wait
| | | + 0.40% BlueStore::BufferSpace::_discard
| | | | + 0.30% std::_Rb_tree<unsigned int, std::pair<unsigned int const, std::unique_ptr<BlueStore::Buffer, std::default_delete<BlueStore::Buffer> > >, std::_Select1st<std::pair<unsigned int const, std::unique_ptr<BlueStore::Buffer, std::default_delete<BlueStore::Buffer> > > >, std::less<unsigned int>, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<unsigned int const, std::unique_ptr<BlueStore::Buffer, std::default_delete<BlueStore::Buffer> > > > >::_M_erase_aux
| | | | | + 0.30% _M_drop_node
| | | | | + 0.20% _M_destroy_node
| | | | | | + 0.20% destroy<std::pair<unsigned int const, std::unique_ptr<BlueStore::Buffer> > >
| | | | | | + 0.20% _S_destroy<mempool::pool_allocator<(mempool::pool_index_t)4, std::_Rb_tree_node<std::pair<unsigned int const, std::unique_ptr<BlueStore::Buffer> > > >, std::pair<unsigned int const, std::unique_ptr<BlueStore::Buffer> > >
| | | | | | + 0.20% destroy<std::pair<unsigned int const, std::unique_ptr<BlueStore::Buffer> > >
| | | | | | + 0.20% ~pair
| | | | | | + 0.20% ~unique_ptr
| | | | | | + 0.20% operator()
| | | | | | + 0.20% ~Buffer
| | | | | | + 0.20% ~list
| | | | | | + 0.20% ~list
| | | | | | + 0.20% ~_List_base
| | | | | | + 0.20% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | | | + 0.20% destroy<ceph::buffer::ptr>
| | | | | | + 0.20% destroy<ceph::buffer::ptr>
| | | | | | + 0.20% ~ptr
| | | | | | + 0.20% ceph::buffer::ptr::release
| | | | | | + 0.20% ceph::buffer::raw_posix_aligned::~raw_posix_aligned
| | | | | | + 0.20% ~raw_posix_aligned
| | | | | | + 0.20% tc_free
| | | | | | + 0.20% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | | | | | + 0.20% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | | | | | + 0.20% tcmalloc::CentralFreeList::InsertRange(void*, void*, int)
| | | | | | + 0.20% tcmalloc::CentralFreeList::ReleaseListToSpans(void*)
| | | | | | + 0.20% tcmalloc::CentralFreeList::ReleaseToSpans(void*)
| | | | | | + 0.20% tcmalloc::PageHeap::Delete(tcmalloc::Span*)
| | | | | | + 0.20% tcmalloc::PageHeap::MergeIntoFreeList(tcmalloc::Span*)
| | | | | | + 0.20% tcmalloc::PageHeap::DecommitSpan(tcmalloc::Span*)
| | | | | | + 0.20% TCMalloc_SystemRelease(void*, unsigned long)
| | | | | | + 0.20% madvise
| | | | | + 0.10% _M_put_node
| | | | | + 0.10% deallocate
| | | | | + 0.10% deallocate
| | | | | + 0.10% operator-=
| | | | + 0.10% _data_lower_bound
| | | | + 0.10% lower_bound
| | | | + 0.10% lower_bound
| | | | + 0.10% _M_end
| | | + 0.20% BlueStore::Buffer::operator new
| | | | + 0.20% allocate
| | | | + 0.20% tc_newarray
| | | + 0.10% ~lock_guard
| | | | + 0.10% unlock
| | | | + 0.10% __gthread_recursive_mutex_unlock
| | | | + 0.10% __gthread_mutex_unlock
| | | | + 0.10% pthread_mutex_unlock
| | | + 0.10% Buffer
| | | | + 0.10% list
| | | | + 0.10% list
| | | | + 0.10% _M_initialize_dispatch<std::_List_const_iterator<ceph::buffer::ptr> >
| | | | + 0.10% emplace_back<ceph::buffer::ptr const&>
| | | | + 0.10% _M_insert<ceph::buffer::ptr const&>
| | | + 0.10% BlueStore::BufferSpace::_add_buffer
| | | + 0.10% ceph::buffer::list::reassign_to_mempool
| | | + 0.10% reassign_to_mempool
| | | + 0.10% mempool::pool_t::adjust_count
| | + 0.30% operator[]
| | | + 0.30% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<unsigned long const, ceph::buffer::list> >, std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | + 0.20% _M_create_node<const std::piecewise_construct_t&, std::tuple<long unsigned int const&>, std::tuple<> >
| | | | + 0.20% _M_get_node
| | | | + 0.20% allocate
| | | | + 0.20% allocate
| | | | + 0.20% tc_new
| | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_insert_node
| | | + 0.10% std::_Rb_tree_insert_and_rebalance
| | | + 0.10% local_Rb_tree_rotate_left
| | + 0.10% ceph::buffer::list::substr_of
| | + 0.10% clear
| | + 0.10% begin
| | + 0.10% ceph::buffer::list::iterator::iterator
| + 1.20% BlueStore::AioReadBatch::~AioReadBatch
| | + 1.20% ~AioReadBatch
| | + 0.80% ~small_vector
| | | + 0.80% ~small_vector_base
| | | + 0.80% ~vector
| | | + 0.80% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::AioReadBatch::read_ctx_t> >, BlueStore::AioReadBatch::read_ctx_t*, unsigned long>
| | | + 0.80% destroy<BlueStore::AioReadBatch::read_ctx_t>
| | | + 0.80% priv_destroy<BlueStore::AioReadBatch::read_ctx_t>
| | | + 0.80% ~read_ctx_t
| | | + 0.80% ~cache_response_t
| | | + 0.80% ~map
| | | + 0.80% ~_Rb_tree
| | | + 0.80% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | + 0.60% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | + 0.30% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | + 0.20% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | + 0.10% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | | + 0.10% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | | + 0.10% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | | + 0.10% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | | + 0.10% _M_drop_node
| | | | | | | + 0.10% _M_put_node
| | | | | | | + 0.10% deallocate
| | | | | | | + 0.10% deallocate
| | | | | | | + 0.10% tc_delete
| | | | | | + 0.10% _M_drop_node
| | | | | | + 0.10% _M_destroy_node
| | | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | + 0.10% ~pair
| | | | | | + 0.10% ~unique_ptr
| | | | | | + 0.10% operator()
| | | | | | + 0.10% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | | | + 0.10% tc_delete
| | | | | | + 0.10% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | | | | | + 0.10% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | | | | + 0.10% _M_drop_node
| | | | | + 0.10% _M_destroy_node
| | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | + 0.10% ~pair
| | | | | + 0.10% ~unique_ptr
| | | | | + 0.10% operator()
| | | | | + 0.10% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | | + 0.10% ~PlainRegionReader
| | | | | + 0.10% ~small_vector
| | | | | + 0.10% ~small_vector_base
| | | | | + 0.10% ~vector
| | | | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | + 0.10% ~plain_region_t
| | | | | + 0.10% ~list
| | | | | + 0.10% ~list
| | | | | + 0.10% ~_List_base
| | | | | + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | | + 0.10% destroy<ceph::buffer::ptr>
| | | | | + 0.10% destroy<ceph::buffer::ptr>
| | | | | + 0.10% ~ptr
| | | | | + 0.10% ceph::buffer::ptr::release
| | | | + 0.30% _M_drop_node
| | | | + 0.30% _M_destroy_node
| | | | + 0.30% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | + 0.30% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | + 0.30% ~pair
| | | | + 0.30% ~unique_ptr
| | | | + 0.30% operator()
| | | | + 0.20% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | + 0.20% ~PlainRegionReader
| | | | + 0.10% ~small_vector
| | | | | + 0.10% ~small_vector_base
| | | | | + 0.10% ~vector
| | | | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | + 0.10% ~plain_region_t
| | | | | + 0.10% ~list
| | | | | + 0.10% ~list
| | | | | + 0.10% ~_List_base
| | | | | + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | | + 0.10% _M_valptr
| | | | | + 0.10% _M_ptr
| | | | | + 0.10% _M_addr
| | | | + 0.10% ~RegionReader
| | | | + 0.10% ~intrusive_ptr
| | | | + 0.10% intrusive_ptr_release
| | | | + 0.10% put
| | | + 0.10% _M_drop_node
| | | + 0.10% _M_destroy_node
| | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | + 0.10% ~pair
| | | + 0.10% ~unique_ptr
| | | + 0.10% operator()
| | | + 0.10% BlueStore::PlainRegionReader::~PlainRegionReader
| | | + 0.10% ~PlainRegionReader
| | | + 0.10% ~small_vector
| | | + 0.10% ~small_vector_base
| | | + 0.10% ~vector
| | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | + 0.10% ~plain_region_t
| | | + 0.10% ~list
| | | + 0.10% ~list
| | | + 0.10% ~_List_base
| | | + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | + 0.10% destroy<ceph::buffer::ptr>
| | | + 0.10% destroy<ceph::buffer::ptr>
| | | + 0.10% ~ptr
| | | + 0.10% ceph::buffer::ptr::release
| | + 0.40% ~IOContext
| | + 0.40% ~list
| | + 0.40% ~_List_base
| | + 0.40% std::_List_base<aio_t, std::allocator<aio_t> >::_M_clear
| | + 0.30% destroy<aio_t>
| | | + 0.30% destroy<aio_t>
| | | + 0.30% ~aio_t
| | | + 0.30% ~list
| | | + 0.30% ~list
| | | + 0.30% ~_List_base
| | | + 0.30% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | + 0.10% destroy<ceph::buffer::ptr>
| | | | + 0.10% destroy<ceph::buffer::ptr>
| | | | + 0.10% ~ptr
| | | | + 0.10% ceph::buffer::ptr::release
| | | + 0.10% _M_valptr
| | | | + 0.10% _M_ptr
| | | | + 0.10% _M_addr
| | | + 0.10% _M_put_node
| | | + 0.10% deallocate
| | | + 0.10% deallocate
| | | + 0.10% tc_delete
| | + 0.10% _M_put_node
| | + 0.10% deallocate
| | + 0.10% deallocate
| | + 0.10% tc_delete
| | + 0.10% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | + 0.10% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| + 0.30% operator++
| | + 0.30% std::_Rb_tree_increment
| | + 0.30% local_Rb_tree_increment
| + 0.20% OSDService::queue_recovery_context
| | + 0.20% OSD::ShardedOpWQ::_enqueue(OpQueueItem&&)
| | + 0.10% WeightedPriorityQueue<OpQueueItem, unsigned long>::Queue::insert(unsigned int, unsigned long, unsigned int, OpQueueItem&&, bool)
| | | + 0.10% insert
| | | + 0.10% tc_new
| | | + 0.10% tcmalloc::ThreadCache::FetchFromCentralCache(unsigned long, unsigned long)
| | | + 0.10% tcmalloc::CentralFreeList::RemoveRange(void**, void**, int)
| | | + 0.10% tcmalloc::CentralFreeList::FetchFromOneSpans(int, void**, void**)
| | + 0.10% SignalOne
| | + 0.10% pthread_cond_signal@@GLIBC_2.3.2
| + 0.20% BlueStore::_do_read_compose_result
| | + 0.20% ceph::buffer::list::claim_append
| | + 0.10% make_shareable
| | + 0.10% ceph::buffer::ptr::make_shareable
| + 0.10% PrimaryLogPG::schedule_recovery_work
+ 0.10% KernelDevice::_aio_log_finish
Thread: 120 (bstore_aio) - 1000 samples
+ 100.00% clone
+ 100.00% start_thread
+ 100.00% KernelDevice::AioCompletionThread::entry
+ 100.00% KernelDevice::_aio_thread
+ 51.90% BlueStore::AioReadBatch::aio_finish
| + 48.10% BlueStore::PlainRegionReader::postprocess
| | + 41.30% BlueStore::RegionReader::_verify_csum
| | | + 41.00% bluestore_blob_t::verify_csum
| | | | + 40.90% verify<Checksummer::crc32c>
| | | | + 40.40% calc
| | | | | + 40.40% ceph::buffer::list::iterator_impl<true>::crc32c
| | | | | + 39.60% ceph_crc32c
| | | | | | + 39.60% ceph_crc32c_intel_fast
| | | | | | + 39.50% ???
| | | | | | + 39.50% ???
| | | | | | + 39.50% crc32_iscsi_00
| | | | | + 0.80% ceph::buffer::list::iterator_impl<true>::get_ptr_and_advance
| | | | | + 0.70% ceph::buffer::ptr::c_str
| | | | | + 0.10% operator==
| | | | + 0.30% ceph::buffer::ptr::c_str
| | | + 0.20% ~PerfGuard
| | | | + 0.10% PerfCounters::tinc
| | | + 0.10% PerfGuard
| | | + 0.10% now
| | | + 0.10% clock_gettime
| | | + 0.10% clock_gettime
| | + 5.90% did_read
| | | + 5.30% lock_guard
| | | | + 5.30% lock
| | | | + 5.30% __gthread_recursive_mutex_lock
| | | | + 5.30% __gthread_mutex_lock
| | | | + 5.30% pthread_mutex_lock
| | | | + 5.20% _L_lock_870
| | | | + 5.20% __lll_lock_wait
| | | + 0.30% BlueStore::BufferSpace::_add_buffer
| | | | + 0.20% operator[]
| | | | | + 0.20% _M_emplace_hint_unique<const std::piecewise_construct_t&, std::tuple<unsigned int const&>, std::tuple<> >
| | | | | + 0.20% _M_insert_node
| | | | | + 0.10% std::_Rb_tree_insert_and_rebalance
| | | | + 0.10% ceph::buffer::list::reassign_to_mempool
| | | | + 0.10% reassign_to_mempool
| | | | + 0.10% mempool::pool_t::adjust_count
| | | + 0.20% Buffer
| | | | + 0.20% list
| | | | + 0.10% list
| | | | | + 0.10% _M_initialize_dispatch<std::_List_const_iterator<ceph::buffer::ptr> >
| | | | | + 0.10% emplace_back<ceph::buffer::ptr const&>
| | | | | + 0.10% _M_insert<ceph::buffer::ptr const&>
| | | | | + 0.10% _M_create_node<ceph::buffer::ptr const&>
| | | | | + 0.10% _M_get_node
| | | | | + 0.10% allocate
| | | | | + 0.10% allocate
| | | | | + 0.10% tc_new
| | | | + 0.10% ceph::buffer::list::iterator::iterator
| | | + 0.10% BlueStore::Buffer::operator new
| | | + 0.10% allocate
| | | + 0.10% tc_newarray
| | | + 0.10% tcmalloc::ThreadCache::FetchFromCentralCache(unsigned long, unsigned long)
| | | + 0.10% tcmalloc::CentralFreeList::RemoveRange(void**, void**, int)
| | | + 0.10% tcmalloc::CentralFreeList::FetchFromOneSpans(int, void**, void**)
| | + 0.40% operator[]
| | | + 0.20% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<unsigned long const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<unsigned long const, ceph::buffer::list> >, std::piecewise_construct_t const&, std::tuple<unsigned long const&>&&, std::tuple<>&&)
| | | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_get_insert_hint_unique_pos
| | | + 0.20% lower_bound
| | | + 0.20% lower_bound
| | | + 0.20% _M_lower_bound
| | + 0.30% ceph::buffer::list::substr_of
| | | + 0.10% operator*
| | | | + 0.10% _M_valptr
| | | | + 0.10% _M_ptr
| | | | + 0.10% _M_addr
| | | + 0.10% ceph::buffer::ptr::ptr
| | + 0.10% operator->
| | + 0.10% get_cache
| + 2.30% BlueStore::AioReadBatch::~AioReadBatch
| | + 2.30% ~AioReadBatch
| | + 1.30% ~small_vector
| | | + 1.30% ~small_vector_base
| | | + 1.30% ~vector
| | | + 1.30% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::AioReadBatch::read_ctx_t> >, BlueStore::AioReadBatch::read_ctx_t*, unsigned long>
| | | + 1.30% destroy<BlueStore::AioReadBatch::read_ctx_t>
| | | + 1.30% priv_destroy<BlueStore::AioReadBatch::read_ctx_t>
| | | + 1.30% ~read_ctx_t
| | | + 1.30% ~cache_response_t
| | | + 1.30% ~map
| | | + 1.30% ~_Rb_tree
| | | + 1.20% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | + 1.20% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | + 1.10% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | + 1.10% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | + 0.80% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | + 0.50% _M_drop_node
| | | | | | | + 0.50% _M_destroy_node
| | | | | | | + 0.50% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | | + 0.50% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | | + 0.50% ~pair
| | | | | | | + 0.40% ~unique_ptr
| | | | | | | | + 0.40% operator()
| | | | | | | | + 0.40% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | | | | | + 0.30% tc_delete
| | | | | | | | | + 0.30% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | | | | | | | | + 0.30% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | | | | | | | + 0.10% ~PlainRegionReader
| | | | | | | | + 0.10% ~small_vector
| | | | | | | | + 0.10% ~small_vector_base
| | | | | | | | + 0.10% ~vector
| | | | | | | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | | | | | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | | | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | | | | + 0.10% ~plain_region_t
| | | | | | | | + 0.10% ~list
| | | | | | | | + 0.10% ~list
| | | | | | | | + 0.10% ~_List_base
| | | | | | | | + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | | | | | + 0.10% _M_put_node
| | | | | | | | + 0.10% deallocate
| | | | | | | | + 0.10% deallocate
| | | | | | | | + 0.10% tc_delete
| | | | | | | | + 0.10% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | | | | | | | + 0.10% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | | | | | | + 0.10% ~intrusive_ptr
| | | | | | | + 0.10% intrusive_ptr_release
| | | | | | | + 0.10% put
| | | | | | + 0.30% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | + 0.20% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | | + 0.10% std::_Rb_tree<boost::intrusive_ptr<BlueStore::Blob>, std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > >, std::_Select1st<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > >, std::less<boost::intrusive_ptr<BlueStore::Blob> >, std::allocator<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader, std::default_delete<BlueStore::RegionReader> > > > >::_M_erase
| | | | | | | | + 0.10% _M_drop_node
| | | | | | | | + 0.10% _M_put_node
| | | | | | | | + 0.10% deallocate
| | | | | | | | + 0.10% deallocate
| | | | | | | | + 0.10% tc_delete
| | | | | | | + 0.10% _M_drop_node
| | | | | | | + 0.10% _M_destroy_node
| | | | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | | + 0.10% ~pair
| | | | | | | + 0.10% ~unique_ptr
| | | | | | | + 0.10% operator()
| | | | | | | + 0.10% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | | | | + 0.10% ~PlainRegionReader
| | | | | | | + 0.10% ~small_vector
| | | | | | | + 0.10% ~small_vector_base
| | | | | | | + 0.10% ~vector
| | | | | | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | | | | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | | | + 0.10% ~plain_region_t
| | | | | | | + 0.10% ~list
| | | | | | | + 0.10% ~list
| | | | | | | + 0.10% ~_List_base
| | | | | | | + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | | | | + 0.10% _M_put_node
| | | | | | | + 0.10% deallocate
| | | | | | | + 0.10% deallocate
| | | | | | | + 0.10% tc_delete
| | | | | | | + 0.10% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | | | | | | + 0.10% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | | | | | | + 0.10% tcmalloc::CentralFreeList::InsertRange(void*, void*, int)
| | | | | | | + 0.10% tcmalloc::CentralFreeList::ReleaseListToSpans(void*)
| | | | | | + 0.10% _M_drop_node
| | | | | | + 0.10% _M_destroy_node
| | | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | | + 0.10% ~pair
| | | | | | + 0.10% ~unique_ptr
| | | | | | + 0.10% operator()
| | | | | | + 0.10% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | | | + 0.10% ~PlainRegionReader
| | | | | | + 0.10% ~small_vector
| | | | | | + 0.10% ~small_vector_base
| | | | | | + 0.10% ~vector
| | | | | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | | | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | | + 0.10% ~plain_region_t
| | | | | | + 0.10% ~list
| | | | | | + 0.10% ~list
| | | | | | + 0.10% ~_List_base
| | | | | | + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | | | + 0.10% destroy<ceph::buffer::ptr>
| | | | | | + 0.10% destroy<ceph::buffer::ptr>
| | | | | | + 0.10% ~ptr
| | | | | | + 0.10% ceph::buffer::ptr::release
| | | | | + 0.30% _M_drop_node
| | | | | + 0.30% _M_destroy_node
| | | | | + 0.30% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | + 0.30% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | | + 0.30% ~pair
| | | | | + 0.30% ~unique_ptr
| | | | | + 0.30% operator()
| | | | | + 0.30% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | | + 0.20% tc_delete
| | | | | | + 0.20% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | | | | | + 0.20% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | | | | | + 0.10% tcmalloc::CentralFreeList::InsertRange(void*, void*, int)
| | | | | | + 0.10% tcmalloc::CentralFreeList::ReleaseListToSpans(void*)
| | | | | | + 0.10% tcmalloc::CentralFreeList::ReleaseToSpans(void*)
| | | | | | + 0.10% SpinLock::SlowLock()
| | | | | | + 0.10% base::internal::SpinLockDelay(int volatile*, int, int)
| | | | | + 0.10% ~PlainRegionReader
| | | | | + 0.10% ~small_vector
| | | | | + 0.10% ~small_vector_base
| | | | | + 0.10% ~vector
| | | | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | | + 0.10% ~plain_region_t
| | | | | + 0.10% ~list
| | | | | + 0.10% ~ptr
| | | | | + 0.10% ceph::buffer::ptr::release
| | | | + 0.10% _M_drop_node
| | | | + 0.10% _M_destroy_node
| | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | + 0.10% destroy<std::pair<boost::intrusive_ptr<BlueStore::Blob> const, std::unique_ptr<BlueStore::RegionReader> > >
| | | | + 0.10% ~pair
| | | | + 0.10% ~unique_ptr
| | | | + 0.10% operator()
| | | | + 0.10% BlueStore::PlainRegionReader::~PlainRegionReader
| | | | + 0.10% ~PlainRegionReader
| | | | + 0.10% ~small_vector
| | | | + 0.10% ~small_vector_base
| | | | + 0.10% ~vector
| | | | + 0.10% destroy_alloc_n<boost::container::small_vector_allocator<boost::container::new_allocator<BlueStore::PlainRegionReader::plain_region_t> >, BlueStore::PlainRegionReader::plain_region_t*, unsigned long>
| | | | + 0.10% destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | + 0.10% priv_destroy<BlueStore::PlainRegionReader::plain_region_t>
| | | | + 0.10% ~plain_region_t
| | | | + 0.10% ~list
| | | | + 0.10% ~list
| | | | + 0.10% ~_List_base
| | | | + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | + 0.10% _M_valptr
| | | | + 0.10% _M_ptr
| | | | + 0.10% _M_addr
| | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_erase
| | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_erase
| | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_erase
| | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_erase
| | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_erase
| | | + 0.10% std::_Rb_tree<unsigned long, std::pair<unsigned long const, ceph::buffer::list>, std::_Select1st<std::pair<unsigned long const, ceph::buffer::list> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >::_M_erase
| | + 1.00% ~IOContext
| | + 1.00% ~list
| | + 1.00% ~_List_base
| | + 1.00% std::_List_base<aio_t, std::allocator<aio_t> >::_M_clear
| | + 0.50% destroy<aio_t>
| | | + 0.50% destroy<aio_t>
| | | + 0.50% ~aio_t
| | | + 0.30% ~list
| | | | + 0.30% ~list
| | | | + 0.30% ~_List_base
| | | | + 0.30% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
| | | | + 0.10% destroy<ceph::buffer::ptr>
| | | | | + 0.10% destroy<ceph::buffer::ptr>
| | | | | + 0.10% ~ptr
| | | | | + 0.10% ceph::buffer::ptr::release
| | | | + 0.10% _M_valptr
| | | | | + 0.10% _M_ptr
| | | | | + 0.10% _M_addr
| | | | + 0.10% _M_put_node
| | | | + 0.10% deallocate
| | | | + 0.10% deallocate
| | | | + 0.10% tc_delete
| | | | + 0.10% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | | | + 0.10% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | | + 0.20% ~small_vector
| | | + 0.20% ~small_vector_base
| | | + 0.20% ~vector
| | | + 0.20% ~vector_alloc_holder
| | + 0.50% _M_put_node
| | + 0.50% deallocate
| | + 0.50% deallocate
| | + 0.50% tc_delete
| | + 0.50% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | + 0.50% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| | + 0.50% tcmalloc::CentralFreeList::InsertRange(void*, void*, int)
| | + 0.50% tcmalloc::CentralFreeList::ReleaseListToSpans(void*)
| | + 0.40% tcmalloc::CentralFreeList::ReleaseToSpans(void*)
| | + 0.30% SpinLock::SlowLock()
| | + 0.30% base::internal::SpinLockDelay(int volatile*, int, int)
| + 0.50% operator++
| | + 0.50% std::_Rb_tree_increment
| | + 0.40% local_Rb_tree_increment
| + 0.30% BlueStore::_do_read_compose_result
| | + 0.30% ceph::buffer::list::claim_append
| | + 0.10% make_shareable
| | + 0.10% ceph::buffer::ptr::make_shareable
| + 0.20% OSDService::queue_recovery_context
| | + 0.10% OpQueueItem::OpQueueItem(std::unique_ptr<OpQueueItem::OpQueueable, std::default_delete<OpQueueItem::OpQueueable> >&&, int, unsigned int, utime_t, unsigned long, unsigned int)
| | + 0.10% OSD::ShardedOpWQ::_enqueue(OpQueueItem&&)
| | + 0.10% SignalOne
| | + 0.10% pthread_cond_signal@@GLIBC_2.3.2
| + 0.10% tc_delete
| | + 0.10% tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned long)
| | + 0.10% tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)
| + 0.10% operator=
| + 0.10% operator=
| + 0.10% _M_move_assign
| + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear
+ 47.20% aio_queue_t::get_next_completed
| + 47.20% __io_getevents_0_4
+ 0.30% is_linked
+ 0.20% this_ptr
+ 0.10% unique
+ 0.10% get_next
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment