Re: Significant slowdown of osds since v0.67 Dumpling

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

 



Hi Sam,

It looks like that has dropped the CPU usage a fair bit. CPU usage
still seems a bit higher than Cuttlefish but that might just be due to
the levelDB changes.

Here's the updated perf report -

Events: 80K cycles
 17.25%  ceph-osd  libc-2.15.so           [.] 0x15d534
 14.63%  ceph-osd  ceph-osd               [.] 0x5c801b
  3.87%  ceph-osd  ceph-osd               [.]
leveldb::InternalKeyComparator::Compare(leveldb::Slice const&,
leveldb::Slice const&) const
  2.91%  ceph-osd  ceph-osd               [.] leveldb::Block::Iter::Next()
  2.58%  ceph-osd  [kernel.kallsyms]      [k] __ticket_spin_lock
  2.45%  ceph-osd  libstdc++.so.6.0.16    [.]
std::string::_M_mutate(unsigned long, unsigned long, unsigned long)
  2.02%  ceph-osd  ceph-osd               [.] ceph_crc32c_le_intel
  1.80%  ceph-osd  libtcmalloc.so.0.1.0   [.] operator new(unsigned long)
  1.38%  ceph-osd  libstdc++.so.6.0.16    [.] std::string::append(char
const*, unsigned long)
  1.15%  ceph-osd  libsnappy.so.1.1.2     [.]
snappy::RawUncompress(snappy::Source*, char*)
  1.04%  ceph-osd  libtcmalloc.so.0.1.0   [.] operator delete(void*)
  1.03%  ceph-osd  [kernel.kallsyms]      [k] copy_user_generic_string
  0.77%  ceph-osd  libstdc++.so.6.0.16    [.]
std::string::_M_replace_safe(unsigned long, unsigned long, char
const*, unsigned long)
  0.72%  ceph-osd  libstdc++.so.6.0.16    [.] 0x9ebc8
  0.68%  ceph-osd  libstdc++.so.6.0.16    [.] std::basic_string<char,
std::char_traits<char>, std::allocator<char>
>::basic_string(std::string const&)
  0.67%  ceph-osd  [kernel.kallsyms]      [k] find_busiest_group
  0.61%  ceph-osd  [kernel.kallsyms]      [k] tg_load_down
  0.57%  ceph-osd  libc-2.15.so           [.] vfprintf
  0.54%  ceph-osd  libc-2.15.so           [.] _IO_vfscanf
  0.53%  ceph-osd  libtcmalloc.so.0.1.0   [.]
tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*,
unsigned long, int)
  0.51%  ceph-osd  [kernel.kallsyms]      [k] wait_sb_inodes
  0.47%  ceph-osd  libpthread-2.15.so     [.] pthread_mutex_unlock
  0.47%  ceph-osd  libstdc++.so.6.0.16    [.] std::string::assign(char
const*, unsigned long)
  0.47%  ceph-osd  ceph-osd               [.]
leveldb::Block::Iter::Valid() const

On Tue, Aug 27, 2013 at 2:33 PM, Samuel Just <sam.just@xxxxxxxxxxx> wrote:
> 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