All of lore.kernel.org
 help / color / mirror / Atom feed
* "debug ms = 0/5" logging ...
@ 2017-10-19 11:47 Jason Dillaman
  2017-10-19 12:06 ` John Spray
  0 siblings, 1 reply; 4+ messages in thread
From: Jason Dillaman @ 2017-10-19 11:47 UTC (permalink / raw)
  To: ceph-devel

While the default messenger logging setting has always been an
impediment to high queue-depth, high IOPS workloads, in Luminous it
appears to have slowed down librbd small block IOPS by an additional 10-
15%. When compared against cases where the messenger logs are disabled,
it's more than a 40% IOPS degradation to have the messenger logs
enabled.

From some quick "perf" runs, the Luminous delta seems to be from from a
few places: (1) hobject_t is now used in the OSD messages, and it's more
expensive to construct[2] and print; (2) log messages are longer in
length; and (3) async messenger is more verbose per message at log level
1 compared to simple messenger.

I'd hate to advocate the sledge-hammer approach to say everyone should
deploy librbd with "debug ms = 0" -- especially since I've relied on
decoding the in-memory log messages from core dumps as a pseudo-librbd
flight recorder in the past.

This seems like an area that could use some team discussion and thought.
Perhaps it would be possible to re-use tracepoint hooks where we keep
the last X traces in-memory so that they can be dumped and/or are
available in the core file. In theory that would at least reduce the
expense of converting these trace-like log messages to expensive human
readable strings.

Thoughts?

[1] http://tracker.ceph.com/issues/21846
[2] http://tracker.ceph.com/issues/21845

--
Jason

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: "debug ms = 0/5" logging ...
  2017-10-19 11:47 "debug ms = 0/5" logging Jason Dillaman
@ 2017-10-19 12:06 ` John Spray
  2017-10-19 13:24   ` Haomai Wang
  0 siblings, 1 reply; 4+ messages in thread
From: John Spray @ 2017-10-19 12:06 UTC (permalink / raw)
  To: Dillaman, Jason; +Cc: ceph-devel

On Thu, Oct 19, 2017 at 12:47 PM, Jason Dillaman <jdillama@redhat.com> wrote:
> While the default messenger logging setting has always been an
> impediment to high queue-depth, high IOPS workloads, in Luminous it
> appears to have slowed down librbd small block IOPS by an additional 10-
> 15%. When compared against cases where the messenger logs are disabled,
> it's more than a 40% IOPS degradation to have the messenger logs
> enabled.
>
> From some quick "perf" runs, the Luminous delta seems to be from from a
> few places: (1) hobject_t is now used in the OSD messages, and it's more
> expensive to construct[2] and print; (2) log messages are longer in
> length; and (3) async messenger is more verbose per message at log level
> 1 compared to simple messenger.
>
> I'd hate to advocate the sledge-hammer approach to say everyone should
> deploy librbd with "debug ms = 0" -- especially since I've relied on
> decoding the in-memory log messages from core dumps as a pseudo-librbd
> flight recorder in the past.
>
> This seems like an area that could use some team discussion and thought.
> Perhaps it would be possible to re-use tracepoint hooks where we keep
> the last X traces in-memory so that they can be dumped and/or are
> available in the core file. In theory that would at least reduce the
> expense of converting these trace-like log messages to expensive human
> readable strings.

What you suggest with tracepoints seems very sensible to me.

The extreme policy would be to say that all debug logging is really
just tracepoints done inefficiently -- in the case of Ceph we probably
only really care on that OSD IO path though.

John

>
> Thoughts?
>
> [1] http://tracker.ceph.com/issues/21846
> [2] http://tracker.ceph.com/issues/21845
>
> --
> Jason
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: "debug ms = 0/5" logging ...
  2017-10-19 12:06 ` John Spray
@ 2017-10-19 13:24   ` Haomai Wang
  2017-10-20  0:08     ` Gregory Farnum
  0 siblings, 1 reply; 4+ messages in thread
From: Haomai Wang @ 2017-10-19 13:24 UTC (permalink / raw)
  To: John Spray; +Cc: Dillaman, Jason, ceph-devel

On Thu, Oct 19, 2017 at 8:06 PM, John Spray <jspray@redhat.com> wrote:
> On Thu, Oct 19, 2017 at 12:47 PM, Jason Dillaman <jdillama@redhat.com> wrote:
>> While the default messenger logging setting has always been an
>> impediment to high queue-depth, high IOPS workloads, in Luminous it
>> appears to have slowed down librbd small block IOPS by an additional 10-
>> 15%. When compared against cases where the messenger logs are disabled,
>> it's more than a 40% IOPS degradation to have the messenger logs
>> enabled.

As I remembered, luminous will add extra line for each message
compared to jewel.

>>
>> From some quick "perf" runs, the Luminous delta seems to be from from a
>> few places: (1) hobject_t is now used in the OSD messages, and it's more
>> expensive to construct[2] and print; (2) log messages are longer in
>> length; and (3) async messenger is more verbose per message at log level
>> 1 compared to simple messenger.

it's new added.

>>
>> I'd hate to advocate the sledge-hammer approach to say everyone should
>> deploy librbd with "debug ms = 0" -- especially since I've relied on
>> decoding the in-memory log messages from core dumps as a pseudo-librbd
>> flight recorder in the past.
>>
>> This seems like an area that could use some team discussion and thought.
>> Perhaps it would be possible to re-use tracepoint hooks where we keep
>> the last X traces in-memory so that they can be dumped and/or are
>> available in the core file. In theory that would at least reduce the
>> expense of converting these trace-like log messages to expensive human
>> readable strings.
>
> What you suggest with tracepoints seems very sensible to me.
>
> The extreme policy would be to say that all debug logging is really
> just tracepoints done inefficiently -- in the case of Ceph we probably
> only really care on that OSD IO path though.
>
> John
>
>>
>> Thoughts?
>>
>> [1] http://tracker.ceph.com/issues/21846
>> [2] http://tracker.ceph.com/issues/21845
>>
>> --
>> Jason
>> --
>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: "debug ms = 0/5" logging ...
  2017-10-19 13:24   ` Haomai Wang
@ 2017-10-20  0:08     ` Gregory Farnum
  0 siblings, 0 replies; 4+ messages in thread
From: Gregory Farnum @ 2017-10-20  0:08 UTC (permalink / raw)
  To: Haomai Wang, Dillaman, Jason; +Cc: ceph-devel

On Thu, Oct 19, 2017 at 6:24 AM, Haomai Wang <haomai@xsky.com> wrote:
> On Thu, Oct 19, 2017 at 8:06 PM, John Spray <jspray@redhat.com> wrote:
>> On Thu, Oct 19, 2017 at 12:47 PM, Jason Dillaman <jdillama@redhat.com> wrote:
>>> While the default messenger logging setting has always been an
>>> impediment to high queue-depth, high IOPS workloads, in Luminous it
>>> appears to have slowed down librbd small block IOPS by an additional 10-
>>> 15%. When compared against cases where the messenger logs are disabled,
>>> it's more than a 40% IOPS degradation to have the messenger logs
>>> enabled.
>
> As I remembered, luminous will add extra line for each message
> compared to jewel.
>
>>>
>>> From some quick "perf" runs, the Luminous delta seems to be from from a
>>> few places: (1) hobject_t is now used in the OSD messages, and it's more
>>> expensive to construct[2] and print; (2) log messages are longer in
>>> length; and (3) async messenger is more verbose per message at log level
>>> 1 compared to simple messenger.
>
> it's new added.

Which extra log messages are we printing out in AsyncMessenger that
aren't in SimpleMessenger? Is it just the log line printing out the
message on _send_message? Is there any reason we can't turn that down
to a lower level like in SimpleMessenger?
-Greg

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-10-20  0:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-19 11:47 "debug ms = 0/5" logging Jason Dillaman
2017-10-19 12:06 ` John Spray
2017-10-19 13:24   ` Haomai Wang
2017-10-20  0:08     ` Gregory Farnum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.