Re: A question about performance profiling with rand read in rados

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thank you~ No problem!

Mark Nelson <mnelson@xxxxxxxxxx> 于2019年3月6日周三 下午8:38写道:
>
> On 3/6/19 2:41 AM, 韦皓诚 wrote:
>
> > Hi~
> >      We use gdbpmp to profile wall time in osd and find that
> > pthread_cond_timedwait cost most of the real time(65.8%) in tp_osd_tp.
> > This means that the queue is empty in most of the time. But when we
> > use perfcount to analysis data reading, we find that the latency
> > between enqueue and dequeue is not negligible( about 40% in
> > op_r_latency). That may mean the queue is busy. So what cause the
> > contradiction between them?
> >       Thank you~
>
>
> Hi,
>
>
> Can you post the gdbpmp trace and perfcount data?  (feel free to send to
> me if you don't want to post publicly).  I'm not sure I have an answer
> for you, but I'd start out by looking at what's happening the other 36%
> of the time in tp_osd_tp.
>
>
> Mark
>
  + 100.00% start_thread
    + 100.00% ShardedThreadPool::WorkThreadSharded::entry()
      + 100.00% ShardedThreadPool::shardedthreadpool_worker(unsigned int)
        + 100.00% OSD::ShardedOpWQ::_process(unsigned int, ceph::heartbeat_handle_d*)
          + 65.80% pthread_cond_timedwait@@GLIBC_2.3.2
          | + 0.10% __pthread_mutex_cond_lock
          |   + 0.10% _L_cond_lock_789
          |     + 0.10% __lll_lock_wait
          + 28.80% PGQueueable::RunVis::operator()(boost::intrusive_ptr<OpRequest> const&)
          | + 28.80% OSD::dequeue_op(boost::intrusive_ptr<PG>, boost::intrusive_ptr<OpRequest>, ThreadPool::TPHandle&)
          |   + 28.80% PrimaryLogPG::do_request(boost::intrusive_ptr<OpRequest>&, ThreadPool::TPHandle&)
          |     + 28.80% PrimaryLogPG::do_op(boost::intrusive_ptr<OpRequest>&)
          |       + 18.80% PrimaryLogPG::execute_ctx(PrimaryLogPG::OpContext*)
          |       | + 14.80% PrimaryLogPG::prepare_transaction(PrimaryLogPG::OpContext*)
          |       | | + 14.80% PrimaryLogPG::do_osd_ops(PrimaryLogPG::OpContext*, std::vector<OSDOp, std::allocator<OSDOp> >&)
          |       | |   + 14.80% PrimaryLogPG::do_read(PrimaryLogPG::OpContext*, OSDOp&)
          |       | |     + 14.80% ReplicatedBackend::objects_read_sync(hobject_t const&, unsigned long, unsigned long, unsigned int, ceph::buffer::list*)
          |       | |       + 14.80% BlueStore::read(boost::intrusive_ptr<ObjectStore::CollectionImpl>&, ghobject_t const&, unsigned long, unsigned long, ceph::buffer::list&, unsigned int)
          |       | |         + 14.60% BlueStore::_do_read(BlueStore::Collection*, boost::intrusive_ptr<BlueStore::Onode>, unsigned long, unsigned long, ceph::buffer::list&, unsigned int)
          |       | |         | + 13.60% std::_Function_handler<int (unsigned long, unsigned long), BlueStore::_do_read(BlueStore::Collection*, boost::intrusive_ptr<BlueStore::Onode>, unsigned long, unsigned long, ceph::buffer::list&, unsigned int)::{lambda(unsigned long, unsigned long)#2}>::_M_invoke(std::_Any_data const&, unsigned long, unsigned long)
          |       | |         | | + 13.60% KernelDevice::read(unsigned long, unsigned long, ceph::buffer::list*, IOContext*, bool)
          |       | |         | |   + 13.40% pread64
          |       | |         | |   + 0.10% tc_newarray
          |       | |         | |   + 0.10% ceph::buffer::create_aligned_in_mempool(unsigned int, unsigned int, int)
          |       | |         | |     + 0.10% tc_posix_memalign
          |       | |         | |       + 0.10% (anonymous namespace)::do_memalign(unsigned long, unsigned long)
          |       | |         | + 0.40% BlueStore::BufferSpace::did_read(BlueStore::Cache*, unsigned int, ceph::buffer::list&)
          |       | |         | | + 0.40% pthread_mutex_lock
          |       | |         | |   + 0.30% _L_lock_870
          |       | |         | |     + 0.30% __lll_lock_wait
          |       | |         | + 0.20% BlueStore::BufferSpace::read(BlueStore::Cache*, unsigned int, unsigned int, std::map<unsigned long, ceph::buffer::list, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ceph::buffer::list> > >&, interval_set<unsigned int>&)
          |       | |         | | + 0.10% pthread_mutex_lock
          |       | |         | |   + 0.10% _L_lock_870
          |       | |         | |     + 0.10% __lll_lock_wait
          |       | |         | + 0.10% ceph::logging::SubsystemMap::should_gather(unsigned int, int)
          |       | |         | + 0.10% PerfCounters::tinc(int, utime_t, unsigned int)
          |       | |         | + 0.10% BlueStore::_verify_csum(boost::intrusive_ptr<BlueStore::Onode>&, bluestore_blob_t const*, unsigned long, ceph::buffer::list const&, unsigned long) const
          |       | |         |   + 0.10% PerfCounters::tinc(int, utime_t, unsigned int)
          |       | |         + 0.20% PerfCounters::tinc(int, utime_t, unsigned int)
          |       | + 3.60% PrimaryLogPG::complete_read_ctx(int, PrimaryLogPG::OpContext*)
          |       | | + 3.20% AsyncConnection::send_message(Message*)
          |       | | | + 1.60% ceph::logging::Log::submit_entry(ceph::logging::Entry*)
          |       | | | | + 1.50% pthread_mutex_lock
          |       | | | | | + 1.50% _L_lock_812
          |       | | | | |   + 1.50% __lll_lock_wait
          |       | | | | + 0.10% pthread_cond_signal@@GLIBC_2.3.2
          |       | | | + 0.70% operator<<(std::ostream&, entity_addr_t const&)
          |       | | | | + 0.70% operator<<(std::ostream&, sockaddr const*)
          |       | | | |   + 0.50% getnameinfo
          |       | | | |   | + 0.30% inet_ntop
          |       | | | |   | | + 0.30% sprintf
          |       | | | |   | |   + 0.30% vsprintf
          |       | | | |   | |     + 0.20% vfprintf
          |       | | | |   | |     | + 0.10% tc_free
          |       | | | |   | |     | + 0.10% (anonymous namespace)::free_null_or_invalid(void*, void (*)(void*)) [clone .constprop.41]
          |       | | | |   | |     + 0.10% _IO_no_init
          |       | | | |   | |       + 0.10% _IO_old_init
          |       | | | |   | + 0.10% snprintf
          |       | | | |   |   + 0.10% vsnprintf
          |       | | | |   |     + 0.10% vfprintf
          |       | | | |   |       + 0.10% _itoa_word
          |       | | | |   + 0.10% std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
          |       | | | |     + 0.10% std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long)
          |       | | | |       + 0.10% __memcpy_ssse3_back
          |       | | | + 0.60% MOSDOpReply::print(std::ostream&) const
          |       | | | | + 0.30% std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
          |       | | | | | + 0.10% std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
          |       | | | | | | + 0.10% std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long)
          |       | | | | | |   + 0.10% __memcpy_ssse3_back
          |       | | | | | + 0.10% __strlen_sse2_pminub
          |       | | | | + 0.20% operator<<(std::ostream&, OSDOp const&)
          |       | | | | | + 0.10% std::ostream& std::ostream::_M_insert<unsigned long long>(unsigned long long)
          |       | | | | | | + 0.10% std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long long) const
|       | | | | | |   + 0.10% std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<unsigned long long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long long) const
          |       | | | | | |     + 0.10% ???
          |       | | | | | + 0.10% __strlen_sse2_pminub
          |       | | | | + 0.10% std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)
          |       | | | |   + 0.10% std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long) const
          |       | | | |     + 0.10% std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<unsigned long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long) const
          |       | | | |       + 0.10% std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long)
          |       | | | + 0.10% std::basic_ostream<char, std::char_traits<char> >::basic_ostream(std::basic_streambuf<char, std::char_traits<char> >*)
          |       | | | | + 0.10% std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)
          |       | | | |   + 0.10% std::ios_base::_M_init()
          |       | | | |     + 0.10% std::locale::~locale()
          |       | | | + 0.10% pthread_mutex_lock
          |       | | |   + 0.10% _L_lock_812
          |       | | |     + 0.10% __lll_lock_wait
          |       | | + 0.30% PrimaryLogPG::log_op_stats(PrimaryLogPG::OpContext*)
          |       | | | + 0.10% PerfCounters::hinc(int, long, long)
          |       | | |   + 0.10% PerfHistogramCommon::get_bucket_for_axis(long, PerfHistogramCommon::axis_config_d const&)
          |       | | + 0.10% PG::publish_stats_to_osd()
          |       | |   + 0.10% PG::_update_calc_stats()
          |       | |     + 0.10% PG::get_osdmap() const
          |       | + 0.20% PrimaryLogPG::close_op_ctx(PrimaryLogPG::OpContext*)
          |       | | + 0.10% PrimaryLogPG::release_object_locks(ObcLockManager&)
          |       | | + 0.10% PrimaryLogPG::OpContext::~OpContext()
          |       | |   + 0.10% std::_Rb_tree<hobject_t, std::pair<hobject_t const, ObcLockManager::ObjectLockState>, std::_Select1st<std::pair<hobject_t const, ObcLockManager::ObjectLockState> >, std::less<hobject_t>, std::allocator<std::pair<hobject_t const, ObcLockManager::ObjectLockState> > >::_M_erase(std::_Rb_tree_node<std::pair<hobject_t const, ObcLockManager::ObjectLockState> >*)
          |       | + 0.10% std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy()
          |       | + 0.10% ObjectContext::ondisk_read_unlock()
          |       |   + 0.10% Mutex::Lock(bool)
          |       + 9.70% PrimaryLogPG::find_object_context(hobject_t const&, std::shared_ptr<ObjectContext>*, bool, bool, hobject_t*)
          |       | + 9.70% PrimaryLogPG::get_object_context(hobject_t const&, bool, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string const, ceph::buffer::list> > > const*)
          |       |   + 8.90% PGBackend::objects_get_attr(hobject_t const&, std::string const&, ceph::buffer::list*)
          |       |   | + 8.80% BlueStore::getattr(boost::intrusive_ptr<ObjectStore::CollectionImpl>&, ghobject_t const&, char const*, ceph::buffer::ptr&)
          |       |   | | + 8.80% BlueStore::Collection::get_onode(ghobject_t const&, bool)
|       |   | |   + 6.40% RocksDBStore::get(std::string const&, char const*, unsigned long, ceph::buffer::list*)
          |       |   | |   | + 6.30% rocksdb::DB::Get(rocksdb::ReadOptions const&, rocksdb::Slice const&, std::string*)
          |       |   | |   | | + 6.30% rocksdb::DB::Get(rocksdb::ReadOptions const&, rocksdb::ColumnFamilyHandle*, rocksdb::Slice const&, std::string*)
          |       |   | |   | |   + 6.30% rocksdb::DBImpl::Get(rocksdb::ReadOptions const&, rocksdb::ColumnFamilyHandle*, rocksdb::Slice const&, rocksdb::PinnableSlice*)
          |       |   | |   | |     + 6.30% rocksdb::DBImpl::GetImpl(rocksdb::ReadOptions const&, rocksdb::ColumnFamilyHandle*, rocksdb::Slice const&, rocksdb::PinnableSlice*, bool*)
          |       |   | |   | |       + 6.20% rocksdb::Version::Get(rocksdb::ReadOptions const&, rocksdb::LookupKey const&, rocksdb::PinnableSlice*, rocksdb::Status*, rocksdb::MergeContext*, rocksdb::RangeDelAggregator*, bool*, bool*, unsigned long*)
          |       |   | |   | |       | + 6.20% rocksdb::TableCache::Get(rocksdb::ReadOptions const&, rocksdb::InternalKeyComparator const&, rocksdb::FileDescriptor const&, rocksdb::Slice const&, rocksdb::GetContext*, rocksdb::HistogramImpl*, bool, int)
          |       |   | |   | |       |   + 6.10% rocksdb::BlockBasedTable::Get(rocksdb::ReadOptions const&, rocksdb::Slice const&, rocksdb::GetContext*, bool)
          |       |   | |   | |       |     + 5.70% rocksdb::BlockBasedTable::NewDataBlockIterator(rocksdb::BlockBasedTable::Rep*, rocksdb::ReadOptions const&, rocksdb::Slice const&, rocksdb::BlockIter*, bool)
          |       |   | |   | |       |     | + 5.70% rocksdb::BlockBasedTable::NewDataBlockIterator(rocksdb::BlockBasedTable::Rep*, rocksdb::ReadOptions const&, rocksdb::BlockHandle const&, rocksdb::BlockIter*, bool, rocksdb::Status)
          |       |   | |   | |       |     |   + 5.70% rocksdb::BlockBasedTable::MaybeLoadDataBlockToCache(rocksdb::BlockBasedTable::Rep*, rocksdb::ReadOptions const&, rocksdb::BlockHandle const&, rocksdb::Slice, rocksdb::BlockBasedTable::CachableEntry<rocksdb::Block>*, bool)
          |       |   | |   | |       |     |     + 5.20% rocksdb::(anonymous namespace)::ReadBlockFromFile(rocksdb::RandomAccessFileReader*, rocksdb::Footer const&, rocksdb::ReadOptions const&, rocksdb::BlockHandle const&, std::unique_ptr<rocksdb::Block, std::default_delete<rocksdb::Block> >*, rocksdb::ImmutableCFOptions const&, bool, rocksdb::Slice const&, rocksdb::PersistentCacheOptions const&, unsigned long, unsigned long)
          |       |   | |   | |       |     |     | + 5.20% rocksdb::ReadBlockContents(rocksdb::RandomAccessFileReader*, rocksdb::Footer const&, rocksdb::ReadOptions const&, rocksdb::BlockHandle const&, rocksdb::BlockContents*, rocksdb::ImmutableCFOptions const&, bool, rocksdb::Slice const&, rocksdb::PersistentCacheOptions const&)
          |       |   | |   | |       |     |     |   + 4.90% rocksdb::RandomAccessFileReader::Read(unsigned long, unsigned long, rocksdb::Slice*, char*) const
          |       |   | |   | |       |     |     |   | + 4.90% BlueRocksRandomAccessFile::Read(unsigned long, unsigned long, rocksdb::Slice*, char*) const
          |       |   | |   | |       |     |     |   |   + 4.90% BlueFS::_read_random(BlueFS::FileReader*, unsigned long, unsigned long, char*)
          |       |   | |   | |       |     |     |   |     + 4.90% KernelDevice::read_random(unsigned long, unsigned long, char*, bool)
          |       |   | |   | |       |     |     |   |       + 4.90% KernelDevice::direct_read_unaligned(unsigned long, unsigned long, char*)
          |       |   | |   | |       |     |     |   |         + 4.70% pread64
          |       |   | |   | |       |     |     |   |         + 0.10% ceph::buffer::ptr::release()
          |       |   | |   | |       |     |     |   |         | + 0.10% ceph::buffer::raw_posix_aligned::~raw_posix_aligned()
          |       |   | |   | |       |     |     |   |         |   + 0.10% tc_free
          |       |   | |   | |       |     |     |   |         + 0.10% __memcpy_ssse3_back
          |       |   | |   | |       |     |     |   + 0.20% unsigned int rocksdb::crc32c::ExtendImpl<&rocksdb::crc32c::Fast_CRC32>(unsigned int, char const*, unsigned long)
          |       |   | |   | |       |     |     |   + 0.10% __memcpy_ssse3_back
          |       |   | |   | |       |     |     + 0.40% rocksdb::BlockBasedTable::PutDataBlockToCache(rocksdb::Slice const&, rocksdb::Slice const&, rocksdb::Cache*, rocksdb::Cache*, rocksdb::ReadOptions const&, rocksdb::ImmutableCFOptions const&, rocksdb::BlockBasedTable::CachableEntry<rocksdb::Block>*, rocksdb::Block*, unsigned int, rocksdb::Slice const&, unsigned long, bool, rocksdb::Cache::Priority)
          |       |   | |   | |       |     |     | + 0.40% rocksdb::ShardedCache::Insert(rocksdb::Slice const&, void*, unsigned long, void (*)(rocksdb::Slice const&, void*), rocksdb::Cache::Handle**, rocksdb::Cache::Priority)
|       |   | |   | |       |     |     |   + 0.40% rocksdb::LRUCacheShard::Insert(rocksdb::Slice const&, unsigned int, void*, unsigned long, void (*)(rocksdb::Slice const&, void*), rocksdb::Cache::Handle**, rocksdb::Cache::Priority)
          |       |   | |   | |       |     |     |     + 0.20% rocksdb::port::Mutex::Lock()
          |       |   | |   | |       |     |     |     | + 0.20% pthread_mutex_lock
          |       |   | |   | |       |     |     |     |   + 0.20% _L_lock_812
          |       |   | |   | |       |     |     |     |     + 0.20% __lll_lock_wait
          |       |   | |   | |       |     |     |     + 0.10% tc_free
          |       |   | |   | |       |     |     |     + 0.10% rocksdb::LRUCacheShard::EvictFromLRU(unsigned long, rocksdb::autovector<rocksdb::LRUHandle*, 8ul>*)
          |       |   | |   | |       |     |     |       + 0.10% rocksdb::LRUCacheShard::LRU_Remove(rocksdb::LRUHandle*)
          |       |   | |   | |       |     |     + 0.10% rocksdb::BlockBasedTable::GetDataBlockFromCache(rocksdb::Slice const&, rocksdb::Slice const&, rocksdb::Cache*, rocksdb::Cache*, rocksdb::ImmutableCFOptions const&, rocksdb::ReadOptions const&, rocksdb::BlockBasedTable::CachableEntry<rocksdb::Block>*, unsigned int, rocksdb::Slice const&, unsigned long, bool)
          |       |   | |   | |       |     |       + 0.10% rocksdb::(anonymous namespace)::GetEntryFromCache(rocksdb::Cache*, rocksdb::Slice const&, rocksdb::Tickers, rocksdb::Tickers, rocksdb::Statistics*)
          |       |   | |   | |       |     |         + 0.10% rocksdb::LRUCacheShard::Lookup(rocksdb::Slice const&, unsigned int)
          |       |   | |   | |       |     |           + 0.10% rocksdb::port::Mutex::Lock()
          |       |   | |   | |       |     |             + 0.10% pthread_mutex_lock
          |       |   | |   | |       |     + 0.30% rocksdb::BlockIter::Seek(rocksdb::Slice const&)
          |       |   | |   | |       |     | + 0.20% rocksdb::BlockIter::ParseNextKey()
          |       |   | |   | |       |     | | + 0.10% tc_newarray
          |       |   | |   | |       |     | + 0.10% rocksdb::BlockIter::BinarySeek(rocksdb::Slice const&, unsigned int, unsigned int, unsigned int*)
          |       |   | |   | |       |     + 0.10% rocksdb::BlockIter::~BlockIter()
          |       |   | |   | |       |       + 0.10% rocksdb::Cleanable::~Cleanable()
          |       |   | |   | |       |         + 0.10% rocksdb::ShardedCache::Release(rocksdb::Cache::Handle*, bool)
          |       |   | |   | |       |           + 0.10% rocksdb::LRUCache::GetHash(rocksdb::Cache::Handle*) const
          |       |   | |   | |       + 0.10% rocksdb::DBImpl::ReturnAndCleanupSuperVersion(rocksdb::ColumnFamilyData*, rocksdb::SuperVersion*)
          |       |   | |   | |         + 0.10% rocksdb::ColumnFamilyData::ReturnThreadLocalSuperVersion(rocksdb::SuperVersion*)
          |       |   | |   | + 0.10% ceph::buffer::list::append(char const*, unsigned int)
          |       |   | |   |   + 0.10% mempool::pool_t::adjust_count(long, long)
          |       |   | |   + 1.50% BlueStore::OnodeSpace::lookup(ghobject_t const&)
          |       |   | |   | + 1.50% pthread_mutex_lock
          |       |   | |   |   + 1.50% _L_lock_870
          |       |   | |   |     + 1.50% __lll_lock_wait
          |       |   | |   + 0.40% BlueStore::OnodeSpace::add(ghobject_t const&, boost::intrusive_ptr<BlueStore::Onode>)
          |       |   | |   | + 0.30% pthread_mutex_lock
          |       |   | |   | | + 0.30% _L_lock_870
          |       |   | |   | |   + 0.30% __lll_lock_wait
          |       |   | |   | + 0.10% pthread_mutex_unlock
          |       |   | |   + 0.10% std::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >::basic_string(std::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const&)
 |       |   | |   + 0.10% std::_List_base<ceph::buffer::ptr, std::allocator<ceph::buffer::ptr> >::_M_clear()
          |       |   | |   | + 0.10% ceph::buffer::ptr::release()
          |       |   | |   |   + 0.10% ceph::buffer::raw_combined::~raw_combined()
          |       |   | |   |     + 0.10% mempool::pool_t::adjust_count(long, long)
          |       |   | |   + 0.10% ceph::buffer::list::reassign_to_mempool(int)
          |       |   | |   | + 0.10% mempool::pool_t::adjust_count(long, long)
          |       |   | |   + 0.10% ceph::buffer::copy(char const*, unsigned int)
          |       |   | |   | + 0.10% ceph::buffer::create_aligned_in_mempool(unsigned int, unsigned int, int)
          |       |   | |   |   + 0.10% mempool::pool_t::adjust_count(long, long)
          |       |   | |   + 0.10% BlueStore::ExtentMap::decode_some(ceph::buffer::list&)
          |       |   | |     + 0.10% BlueStore::Blob::decode(BlueStore::Collection*, ceph::buffer::ptr::iterator&, unsigned long, unsigned long*, bool)
          |       |   | + 0.10% hobject_t::~hobject_t()
          |       |   |   + 0.10% std::string::_Rep::_M_dispose(std::allocator<char> const&)
          |       |   + 0.60% SharedLRU<hobject_t, ObjectContext, std::less<hobject_t>, std::hash<hobject_t> >::lookup_or_create(hobject_t const&)
          |       |   | + 0.40% std::_List_base<std::shared_ptr<ObjectContext>, std::allocator<std::shared_ptr<ObjectContext> > >::_M_clear()
          |       |   | | + 0.40% std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()
          |       |   | |   + 0.40% std::_Sp_counted_deleter<ObjectContext*, SharedLRU<hobject_t, ObjectContext, std::less<hobject_t>, std::hash<hobject_t> >::Cleanup, std::allocator<int>, (__gnu_cxx::_Lock_policy)2>::_M_dispose()
          |       |   | |     + 0.10% std::_Rb_tree<hobject_t, std::pair<hobject_t const, std::pair<std::weak_ptr<ObjectContext>, ObjectContext*> >, std::_Select1st<std::pair<hobject_t const, std::pair<std::weak_ptr<ObjectContext>, ObjectContext*> > >, std::less<hobject_t>, std::allocator<std::pair<hobject_t const, std::pair<std::weak_ptr<ObjectContext>, ObjectContext*> > > >::find(hobject_t const&)
          |       |   | |     | + 0.10% cmp(hobject_t const&, hobject_t const&)
          |       |   | |     + 0.10% PrimaryLogPG::C_PG_ObjectContext::~C_PG_ObjectContext()
          |       |   | |     | + 0.10% PG::put(char const*)
          |       |   | |     + 0.10% Mutex::Lock(bool)
          |       |   | |     | + 0.10% pthread_mutex_lock@plt
          |       |   | |     + 0.10% Context::complete(int)
          |       |   | |       + 0.10% PrimaryLogPG::put_snapset_context(SnapSetContext*)
          |       |   | |         + 0.10% std::_Rb_tree<hobject_t, std::pair<hobject_t const, SnapSetContext*>, std::_Select1st<std::pair<hobject_t const, SnapSetContext*> >, std::less<hobject_t>, std::allocator<std::pair<hobject_t const, SnapSetContext*> > >::equal_range(hobject_t const&)
          |       |   | |           + 0.10% cmp(hobject_t const&, hobject_t const&)
          |       |   | |             + 0.10% __memcmp_sse4_1
          |       |   | + 0.10% std::_Rb_tree<hobject_t, std::pair<hobject_t const, std::pair<std::weak_ptr<ObjectContext>, ObjectContext*> >, std::_Select1st<std::pair<hobject_t const, std::pair<std::weak_ptr<ObjectContext>, ObjectContext*> > >, std::less<hobject_t>, std::allocator<std::pair<hobject_t const, std::pair<std::weak_ptr<ObjectContext>, ObjectContext*> > > >::find(hobject_t const&)
          |       |   | | + 0.10% cmp(hobject_t const&, hobject_t const&)
          |       |   | + 0.10% SharedLRU<hobject_t, ObjectContext, std::less<hobject_t>, std::hash<hobject_t> >::lru_add(hobject_t const&, std::shared_ptr<ObjectContext> const&, std::list<std::shared_ptr<ObjectContext>, std::allocator<std::shared_ptr<ObjectContext> > >*)
 |       |   + 0.10% object_info_t::decode(ceph::buffer::list::iterator&)
          |       |   + 0.10% PerfCounters::inc(int, unsigned long)
          |       + 0.10% std::enable_if<denc_traits<std::vector<snapid_t, std::allocator<snapid_t> >, void>::supported&&denc_traits<std::vector<snapid_t, std::allocator<snapid_t> >, void>::need_contiguous, void>::type decode<std::vector<snapid_t, std::allocator<snapid_t> >, denc_traits<std::vector<snapid_t, std::allocator<snapid_t> >, void> >(std::vector<snapid_t, std::allocator<snapid_t> >&, ceph::buffer::list::iterator&)
          |       | + 0.10% ceph::buffer::list::iterator_impl<false>::copy_shallow(unsigned int, ceph::buffer::ptr&)
          |       + 0.10% PG::op_has_sufficient_caps(boost::intrusive_ptr<OpRequest>&)
          |         + 0.10% OSDCap::is_capable(std::string const&, std::string const&, long, std::string const&, bool, bool, std::vector<OpRequest::ClassInfo, std::allocator<OpRequest::ClassInfo> > const&) const
          |           + 0.10% OSDCapGrant::is_capable(std::string const&, std::string const&, long, std::string const&, bool, bool, std::vector<OpRequest::ClassInfo, std::allocator<OpRequest::ClassInfo> > const&, std::vector<bool, std::allocator<bool> >*) const
          + 3.40% PG::lock(bool) const
          | + 3.40% Mutex::Lock(bool)
          |   + 3.40% pthread_mutex_lock
          |     + 3.40% _L_lock_812
          |       + 3.40% __lll_lock_wait
          + 2.00% OpTracker::unregister_inflight_op(TrackedOp*)
            + 1.00% OpRequest::_unregistered()
            | + 1.00% Throttle::put(long)
            |   + 1.00% Mutex::Lock(bool)
            |     + 1.00% pthread_mutex_lock
            |       + 1.00% _L_lock_812
            |         + 1.00% __lll_lock_wait
            + 0.60% OpHistory::insert(utime_t, boost::intrusive_ptr<TrackedOp>)
            | + 0.20% OpHistory::cleanup(utime_t)
            | | + 0.20% std::_Rb_tree<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> >, std::pair<utime_t, boost::intrusive_ptr<TrackedOp> >, std::_Identity<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > >, std::less<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > >, std::allocator<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > > >::erase(std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > const&)
            | |   + 0.10% std::_Rb_tree<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> >, std::pair<utime_t, boost::intrusive_ptr<TrackedOp> >, std::_Identity<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > >, std::less<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > >, std::allocator<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > > >::equal_range(std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > const&)
            | |   + 0.10% std::_Rb_tree<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> >, std::pair<utime_t, boost::intrusive_ptr<TrackedOp> >, std::_Identity<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > >, std::less<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > >, std::allocator<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<utime_t, boost::intrusive_ptr<TrackedOp> > >)
            | |     + 0.10% tc_free
            | + 0.20% Mutex::Lock(bool)
            |   + 0.10% pthread_mutex_lock
            |     + 0.10% _L_lock_812
            |       + 0.10% __lll_lock_wait
 + 0.20% pthread_rwlock_unlock
            | + 0.10% __lll_lock_wait
            + 0.10% OpRequest::~OpRequest()
              + 0.10% RefCountedObject::put() const
"osd": {
        "op_wip": 0,
        "op": 62988300,
        "op_in_bytes": 0,
        "op_out_bytes": 258000076800,
        "op_latency": {
            "avgcount": 62988300,
            "sum": 46114.642157627,
            "avgtime": 0.000732114
        },
        "op_process_latency": {
            "avgcount": 62988300,
            "sum": 18061.208171711,
            "avgtime": 0.000286739
        },
        "op_prepare_latency": {
            "avgcount": 62988300,
            "sum": 18906.612868378,
            "avgtime": 0.000300160
        },
        "op_r": 62988300,
        "op_r_out_bytes": 258000076800,
        "op_r_latency": {
            "avgcount": 62988300,
            "sum": 46114.642157627,
            "avgtime": 0.000732114
        },
        "op_r_process_latency": {
            "avgcount": 62988300,
            "sum": 18061.208171711,
            "avgtime": 0.000286739
        },
        "op_r_prepare_latency": {
            "avgcount": 62988300,
            "sum": 18906.612868378,
            "avgtime": 0.000300160
        },
        "op_w": 0,
        "op_w_in_bytes": 0,
        "op_w_latency": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "op_w_process_latency": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "op_w_prepare_latency": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "op_rw": 0,
        "op_rw_in_bytes": 0,
        "op_rw_out_bytes": 0,
        "op_rw_latency": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "op_rw_process_latency": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "op_rw_prepare_latency": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "op_before_queue_op_lat": {
            "avgcount": 62988300,
            "sum": 1630.075769596,
            "avgtime": 0.000025879
        },
        "op_before_dequeue_op_lat": {
            "avgcount": 62988300,
            "sum": 28053.433985916,
            "avgtime": 0.000445375
        },
"bluestore": {
        "kv_flush_lat": {
            "avgcount": 300,
            "sum": 0.000217029,
            "avgtime": 0.000000723
        },
        "kv_commit_lat": {
            "avgcount": 300,
            "sum": 0.026300187,
            "avgtime": 0.000087667
        },
        "kv_lat": {
            "avgcount": 300,
            "sum": 0.026517216,
            "avgtime": 0.000088390
        },
        "state_prepare_lat": {
            "avgcount": 370,
            "sum": 0.003378570,
            "avgtime": 0.000009131
        },
        "state_aio_wait_lat": {
            "avgcount": 370,
            "sum": 0.000389429,
            "avgtime": 0.000001052
        },
        "state_io_done_lat": {
            "avgcount": 370,
            "sum": 0.000079477,
            "avgtime": 0.000000214
        },
        "state_kv_queued_lat": {
            "avgcount": 370,
            "sum": 0.011344039,
            "avgtime": 0.000030659
        },
"state_kv_commiting_lat": {
            "avgcount": 370,
            "sum": 0.036446180,
            "avgtime": 0.000098503
        },
        "state_kv_done_lat": {
            "avgcount": 372,
            "sum": 0.002063029,
            "avgtime": 0.000005545
        },
        "state_deferred_queued_lat": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "state_deferred_aio_wait_lat": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "state_deferred_cleanup_lat": {
            "avgcount": 2,
            "sum": 0.106589400,
            "avgtime": 0.053294700
        },
        "state_finishing_lat": {
            "avgcount": 370,
            "sum": 0.000123650,
            "avgtime": 0.000000334
        },
        "state_done_lat": {
            "avgcount": 370,
            "sum": 0.000382582,
            "avgtime": 0.000001034
        },
        "throttle_lat": {
            "avgcount": 370,
            "sum": 0.000185439,
            "avgtime": 0.000000501
        },
"submit_lat": {
            "avgcount": 370,
            "sum": 0.004485503,
            "avgtime": 0.000012122
        },
        "commit_lat": {
            "avgcount": 278,
            "sum": 0.030121421,
            "avgtime": 0.000108350
        },
        "read_lat": {
            "avgcount": 62988302,
            "sum": 7628.491449967,
            "avgtime": 0.000121109
        },
        "read_onode_meta_lat": {
            "avgcount": 125976604,
            "sum": 42.228642303,
            "avgtime": 0.000000335
        },
        "read_wait_aio_lat": {
            "avgcount": 62988302,
            "sum": 7019.704845417,
            "avgtime": 0.000111444
        },
        "compress_lat": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "decompress_lat": {
            "avgcount": 0,
            "sum": 0.000000000,
            "avgtime": 0.000000000
        },
        "csum_lat": {
            "avgcount": 62380313,
            "sum": 54.955587344,
            "avgtime": 0.000000880
        },

[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux