Re: Significant slowdown of osds since v0.67 Dumpling

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

 



I just pushed a patch to wip-dumpling-log-assert (based on current
dumpling head).  I had disabled most of the code in PGLog::check() but
left an (I thought) innocuous assert.  It seems that with (at least)
g++ 4.6.3, stl list::size() is linear in the size of the list, so that
assert actually traverses the pg log on each operation.  The patch in
wip-dumpling-log-assert should disable that assert as well by default.
 Let me know if it helps.

It should be built within an hour of this email.
-Sam

On Mon, Aug 26, 2013 at 10:46 PM, Matthew Anderson
<manderson8787@xxxxxxxxx> wrote:
> Hi Guys,
>
> I'm having the same problem as Oliver with 0.67.2. CPU usage is around
> double that of the 0.61.8 OSD's in the same cluster which appears to
> be causing the performance decrease.
>
> I did a perf comparison (not sure if I did it right but it seems ok).
> Both hosts are the same spec running Ubuntu 12.04.1 (3.2 kernel),
> journal and osd data is on an SSD, OSD's are in the same pool with the
> same weight and the perf tests were run at the same time on a
> realworld load consisting of RBD traffic only.
>
> Dumpling -
>
> Events: 332K cycles
>  17.93%  ceph-osd  libc-2.15.so           [.] 0x15d523
>  17.03%  ceph-osd  ceph-osd               [.] 0x5c2897
>   4.66%  ceph-osd  ceph-osd               [.]
> leveldb::InternalKeyComparator::Compare(leveldb::Slice const&, level
>   3.46%  ceph-osd  ceph-osd               [.] leveldb::Block::Iter::Next()
>   2.70%  ceph-osd  libstdc++.so.6.0.16    [.]
> std::string::_M_mutate(unsigned long, unsigned long, unsigned long)
>   2.60%  ceph-osd  ceph-osd               [.] PGLog::check()
>   2.57%  ceph-osd  [kernel.kallsyms]      [k] __ticket_spin_lock
>   2.49%  ceph-osd  ceph-osd               [.] ceph_crc32c_le_intel
>   1.93%  ceph-osd  libsnappy.so.1.1.2     [.]
> snappy::RawUncompress(snappy::Source*, char*)
>   1.53%  ceph-osd  libstdc++.so.6.0.16    [.] std::string::append(char
> const*, unsigned long)
>   1.47%  ceph-osd  libtcmalloc.so.0.1.0   [.] operator new(unsigned long)
>   1.33%  ceph-osd  [kernel.kallsyms]      [k] copy_user_generic_string
>   0.98%  ceph-osd  libtcmalloc.so.0.1.0   [.] operator delete(void*)
>   0.90%  ceph-osd  libstdc++.so.6.0.16    [.] std::string::assign(char
> const*, unsigned long)
>   0.75%  ceph-osd  libstdc++.so.6.0.16    [.]
> std::string::_M_replace_safe(unsigned long, unsigned long, char cons
>   0.58%  ceph-osd  [kernel.kallsyms]      [k] wait_sb_inodes
>   0.55%  ceph-osd  ceph-osd               [.]
> leveldb::Block::Iter::Valid() const
>   0.51%  ceph-osd  libtcmalloc.so.0.1.0   [.]
> tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::
>   0.50%  ceph-osd  libtcmalloc.so.0.1.0   [.]
> tcmalloc::CentralFreeList::FetchFromSpans()
>   0.47%  ceph-osd  libstdc++.so.6.0.16    [.] 0x9ebc8
>   0.46%  ceph-osd  libc-2.15.so           [.] vfprintf
>   0.45%  ceph-osd  [kernel.kallsyms]      [k] find_busiest_group
>   0.45%  ceph-osd  libstdc++.so.6.0.16    [.]
> std::string::resize(unsigned long, char)
>   0.43%  ceph-osd  libpthread-2.15.so     [.] pthread_mutex_unlock
>   0.41%  ceph-osd  [kernel.kallsyms]      [k] iput_final
>   0.40%  ceph-osd  ceph-osd               [.]
> leveldb::Block::Iter::Seek(leveldb::Slice const&)
>   0.39%  ceph-osd  libc-2.15.so           [.] _IO_vfscanf
>   0.39%  ceph-osd  ceph-osd               [.] leveldb::Block::Iter::key() const
>   0.39%  ceph-osd  libtcmalloc.so.0.1.0   [.]
> tcmalloc::CentralFreeList::ReleaseToSpans(void*)
>   0.37%  ceph-osd  libstdc++.so.6.0.16    [.] std::basic_ostream<char,
> std::char_traits<char> >& std::__ostream_in
>
>
> Cuttlefish -
>
> Events: 160K cycles
>   7.53%  ceph-osd  [kernel.kallsyms]      [k] __ticket_spin_lock
>   6.26%  ceph-osd  libc-2.15.so           [.] 0x89115
>   3.06%  ceph-osd  ceph-osd               [.] ceph_crc32c_le
>   2.66%  ceph-osd  libtcmalloc.so.0.1.0   [.] operator new(unsigned long)
>   2.46%  ceph-osd  [kernel.kallsyms]      [k] find_busiest_group
>   1.80%  ceph-osd  libtcmalloc.so.0.1.0   [.] operator delete(void*)
>   1.42%  ceph-osd  [kernel.kallsyms]      [k] try_to_wake_up
>   1.27%  ceph-osd  ceph-osd               [.] 0x531fb6
>   1.21%  ceph-osd  libstdc++.so.6.0.16    [.] 0x9ebc8
>   1.14%  ceph-osd  [kernel.kallsyms]      [k] wait_sb_inodes
>   1.02%  ceph-osd  libc-2.15.so           [.] _IO_vfscanf
>   1.01%  ceph-osd  [kernel.kallsyms]      [k] update_shares
>   0.98%  ceph-osd  [kernel.kallsyms]      [k] filemap_fdatawait_range
>   0.90%  ceph-osd  libstdc++.so.6.0.16    [.] std::basic_ostream<char,
> std::char_traits<char> >& std
>   0.89%  ceph-osd  [kernel.kallsyms]      [k] iput_final
>   0.79%  ceph-osd  libstdc++.so.6.0.16    [.] std::basic_string<char,
> std::char_traits<char>, std::a
>   0.79%  ceph-osd  [kernel.kallsyms]      [k] copy_user_generic_string
>   0.78%  ceph-osd  libc-2.15.so           [.] vfprintf
>   0.70%  ceph-osd  libtcmalloc.so.0.1.0   [.]
> tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc:
>   0.69%  ceph-osd  [kernel.kallsyms]      [k] __d_lookup_rcu
>   0.69%  ceph-osd  libtcmalloc.so.0.1.0   [.]
> tcmalloc::CentralFreeList::FetchFromSpans()
>   0.66%  ceph-osd  [kernel.kallsyms]      [k] igrab
>   0.63%  ceph-osd  [kernel.kallsyms]      [k] update_cfs_load
>   0.63%  ceph-osd  [kernel.kallsyms]      [k] link_path_walk
>
> If you'd like some more tests run just let me know, more than happy to help
>
> Thanks
> -Matt
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com




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


  Powered by Linux