Project

General

Profile

Bug #21844

Objecter::C_ObjectOperation_sparse_read throws/catches exceptions on -ENOENT

Added by Jason Dillaman almost 2 years ago. Updated over 1 year ago.

Status:
Resolved
Priority:
High
Category:
Performance/Resource Usage
Target version:
-
Start date:
10/18/2017
Due date:
% Done:

0%

Source:
Tags:
Backport:
luminous,jewel
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(RADOS):
Pull request ID:

Description

Running RBD small IO performance tests against a mostly sparse image shows that the Objecter is throwing/catching a buffer decode error. The object doesn't exist so the op failed with -ENOENT, but the sparse_read finisher is still run and attempts to decode an empty bufferlist. This results in a non-negligible amount of CPU being wasted on throwing and immediately catching an exception when instead the decode should never have been attempted since the object didn't exist.

                  - 14.21% Objecter::handle_osd_op_reply                                                                                                                                
                     - 7.64% Context::complete                                                                                                                                          
                        - 6.83% ObjectOperation::C_ObjectOperation_sparse_read::finish                                                                                                  
                           - 6.15% ceph::buffer::list::iterator_impl<false>::copy                                                                                                       
                              - 5.94% __cxa_throw                                                                                                                                       
                                 - 5.75% _Unwind_RaiseException                                                                                                                         

Related issues

Copied to RADOS - Backport #21922: luminous: Objecter::C_ObjectOperation_sparse_read throws/catches exceptions on -ENOENT Resolved
Copied to RADOS - Backport #21923: jewel: Objecter::C_ObjectOperation_sparse_read throws/catches exceptions on -ENOENT Resolved

History

#1 Updated by Jason Dillaman almost 2 years ago

  • Status changed from New to In Progress
  • Assignee set to Jason Dillaman

#2 Updated by Jason Dillaman almost 2 years ago

  • Status changed from In Progress to Need Review
  • Backport set to luminous,jewel

#3 Updated by Sage Weil almost 2 years ago

  • Status changed from Need Review to Pending Backport

#4 Updated by Nathan Cutler almost 2 years ago

  • Copied to Backport #21922: luminous: Objecter::C_ObjectOperation_sparse_read throws/catches exceptions on -ENOENT added

#5 Updated by Nathan Cutler almost 2 years ago

  • Copied to Backport #21923: jewel: Objecter::C_ObjectOperation_sparse_read throws/catches exceptions on -ENOENT added

#6 Updated by Nathan Cutler over 1 year ago

  • Status changed from Pending Backport to Resolved

Also available in: Atom PDF