Thanks Jay, will fix the motivation. We have a microbenchmark and perf graph in 
the PR:
https://github.com/apache/kafka/pull/1446#issuecomment-268106260 
<https://github.com/apache/kafka/pull/1446#issuecomment-268106260>

I'll need to think some more about point 3.

Thanks
Eno

> On 5 Jan 2017, at 19:18, Jay Kreps <j...@confluent.io> wrote:
> 
> This is great! A couple of quick comments:
> 
>   1. It'd be good to make the motivation a bit more clear. I think the
>   motivation is "We want to have lots of partition/task/etc metrics but we're
>   concerned about the performance impact so we want to disable them by
>   default." Currently the motivation section is more about the proposed
>   change and doesn't really make clear why.
>   2. Do we have a microbenchmark that shows that the performance of (1)
>   enabled metrics, (2) disabled metrics, (3) no metrics? This would help
>   build the case for needing this extra knob. Obviously if metrics are cheap
>   you would always just leave them enabled and not worry about it. I think
>   there should be some cost because we are at least taking a lock during the
>   recording but I'm not sure how material that is.
>   3. One consideration in how this exposed: we always found the ability to
>   dynamically change the logging level in JMX for log4j pretty useful. I
>   think if we want to leave the door open to add this ability to enable
>   metrics at runtime it may have some impact on the decision around how
>   metrics are registered/reported.
> 
> -Jay
> 
> On Thu, Jan 5, 2017 at 9:59 AM, Guozhang Wang <wangg...@gmail.com> wrote:
> 
>> I thought about "not registering at all" and left a comment on the PR as
>> well regarding this idea. My concern is that it may be not very
>> straight-forward to implement though via the MetricsReporter interface, if
>> Eno and Aarti has a good approach to tackle it I would love it.
>> 
>> 
>> Guozhang
>> 
>> On Thu, Jan 5, 2017 at 5:34 AM, Eno Thereska <eno.there...@gmail.com>
>> wrote:
>> 
>>> Updated KIP for 1. Waiting to hear from Guozhang on 2 and then we can
>>> proceed.
>>> 
>>> Thanks
>>> Eno
>>>> On 5 Jan 2017, at 12:27, Ismael Juma <ism...@juma.me.uk> wrote:
>>>> 
>>>> Thanks Eno. It would be good to update the KIP as well with regards to
>> 1.
>>>> 
>>>> About 2, I am not sure how adding a field could break existing tools.
>>>> Having said that, your suggestion not to register sensors at all if
>> their
>>>> record level is below what is configured works for me.
>>>> 
>>>> Ismael
>>>> 
>>>> On Thu, Jan 5, 2017 at 12:07 PM, Eno Thereska <eno.there...@gmail.com>
>>>> wrote:
>>>> 
>>>>> Thanks Ismael. Already addressed 1. in the PR.
>>>>> 
>>>>> As for 2. I'd prefer not adding extra info to the metrics reporters at
>>>>> this point, since it might break existing tools out there (e.g., if we
>>> add
>>>>> things like configured level). Existing tools might be expecting the
>>> info
>>>>> to be reported in a particular format.
>>>>> 
>>>>> If the current way is confusing, I think the next best alternative is
>> to
>>>>> not register sensors at all if their record level is below what is
>>>>> configured. That way they don't show up at all. This will require some
>>> more
>>>>> code in Sensors.java to check at every step, but I think it's clean
>> from
>>>>> the user's point of view.
>>>>> 
>>>>> Eno
>>>>> 
>>>>> 
>>>>>> On 5 Jan 2017, at 11:23, Ismael Juma <ism...@juma.me.uk> wrote:
>>>>>> 
>>>>>> Thanks for the KIP, it seems like a good improvement. A couple of
>>>>> comments:
>>>>>> 
>>>>>> 1. As Jun asked in the PR, do we need a broker config as well? The
>>> broker
>>>>>> uses Kafka Metrics for some metrics, but we probably don't have any
>>> debug
>>>>>> sensors at the broker yet. Either way, it would be good to describe
>> the
>>>>>> thinking around this.
>>>>>> 
>>>>>> 2. The behaviour with regards to the metrics reporter could be
>>>>> surprising.
>>>>>> It would be good to elaborate a little more on this aspect. For
>>> example,
>>>>>> maybe we want to expose the sensor level and the current configured
>>> level
>>>>>> to metric reporters. That could then be used to build the debug/info
>>>>>> dashboard that Eno mentioned (while making it clear that some metrics
>>>>>> exist, but are not currently being recorded).
>>>>>> 
>>>>>> Ismael
>>>>>> 
>>>>>> On Thu, Jan 5, 2017 at 10:37 AM, Eno Thereska <
>> eno.there...@gmail.com>
>>>>>> wrote:
>>>>>> 
>>>>>>> Correct on 2. Guozhang: the sensor will be registered and polled by
>> a
>>>>>>> reporter, but the metrics associated with it will not be updated.
>>>>>>> 
>>>>>>> That would allow a user to have, for example, a debug dashboard and
>> an
>>>>>>> info dashboard.
>>>>>>> 
>>>>>>> Updated KIP to make this clear.
>>>>>>> 
>>>>>>> Thanks
>>>>>>> Eno
>>>>>>> 
>>>>>>> 
>>>>>>>> On 4 Jan 2017, at 18:00, Aarti Gupta <aartigup...@gmail.com>
>> wrote:
>>>>>>>> 
>>>>>>>> Thanks for the review, Guozhang,
>>>>>>>> 
>>>>>>>> Addressed 2 out of the three comments,
>>>>>>>> 
>>>>>>>> 1. Fixed and updated KIP (swapped code variable name
>>>>>>>> METRICS_RECORD_LEVEL_CONFIG with config name metrics.record.level)
>>>>>>>> 
>>>>>>>> 3. >>Could you elaborate on the "shouldRecord()" function, e.g.
>> which
>>>>>>> class
>>>>>>>> it will be added to? Does it contain any parameters?
>>>>>>>> 
>>>>>>>> Added more details on shouldRecord()  on the KIP
>>>>>>>> 
>>>>>>>> In Sensor.java the shouldRecord() method is used to compare the
>> value
>>>>> of
>>>>>>>> metric record level in the consumer config and the RecordLevel
>>>>> associated
>>>>>>>> with the sensor, to determine if metrics should recorded.
>>>>>>>> 
>>>>>>>> From Sensor.java
>>>>>>>> 
>>>>>>>> /**
>>>>>>>> * @return true if the sensor's record level indicates that the
>> metric
>>>>>>>> will be recorded, false otherwise
>>>>>>>> */
>>>>>>>> public boolean shouldRecord() {
>>>>>>>> return this.recordLevel.shouldRecord(config.recordLevel());
>>>>>>>> }
>>>>>>>> 
>>>>>>>> From nested enum, Sensor.RecordLevel
>>>>>>>> 
>>>>>>>> public boolean shouldRecord(final RecordLevel configLevel) {
>>>>>>>> if (configLevel.equals(DEBUG)) {
>>>>>>>>     return true;
>>>>>>>> } else {
>>>>>>>>     return configLevel.equals(this);
>>>>>>>> }
>>>>>>>> }
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 2. Need to discuss with Eno.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Thanks!
>>>>>>>> 
>>>>>>>> aarti
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Tue, Jan 3, 2017 at 2:27 PM, Guozhang Wang <wangg...@gmail.com>
>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> LGTM overall. A few comments below:
>>>>>>>>> 
>>>>>>>>> 1. "METRICS_RECORD_LEVEL_CONFIG" is the internal code's variable
>>> name,
>>>>>>> but
>>>>>>>>> not the real config string, I think it is `metrics.record.level`
>>>>>>> instead?
>>>>>>>>> 
>>>>>>>>> 2. In the Motivation section, as in "This associates each sensor
>>> with
>>>>> a
>>>>>>>>> record level ... only if the metric config of the client requires
>>>>> these
>>>>>>>>> metrics to be recorded."
>>>>>>>>> 
>>>>>>>>> Could you elaborate this a bit more, for example, will the sensor
>>> ever
>>>>>>> be
>>>>>>>>> registered in the reporter if its level is not allowed in the
>> client
>>>>>>>>> config? Or it will be registered but never polled? Or it will be
>>>>>>> registered
>>>>>>>>> and polled, but recorded?
>>>>>>>>> 
>>>>>>>>> From PR 1446 it seems to be the last case, i.e. the sensor will
>> have
>>>>> the
>>>>>>>>> default value based on its type, and it will still be polled by
>> the
>>>>>>>>> reporter but not recorded. To an end-user's experience it will
>> mean
>>>>> that
>>>>>>>>> for example the monitoring UI that displays all polled metrics
>> will
>>>>>>> still
>>>>>>>>> show the metrics graph, with the value consistently shown as the
>>>>> default
>>>>>>>>> value, instead of not showing the graphs at all.
>>>>>>>>> 
>>>>>>>>> 3. Could you elaborate on the "shouldRecord()" function, e.g.
>> which
>>>>>>> class
>>>>>>>>> it will be added to? Does it contain any parameters?
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Guozhang
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Sun, Jan 1, 2017 at 5:31 AM, Eno Thereska <
>>> eno.there...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Thanks for starting the discussion on these KIPs Aarti.
>>>>>>>>>> 
>>>>>>>>>> Eno
>>>>>>>>>> 
>>>>>>>>>> On Sunday, January 1, 2017, Aarti Gupta <aartigup...@gmail.com>
>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Thanks Radai,
>>>>>>>>>>> 
>>>>>>>>>>> Yes that is the correct link, my bad
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>>>>>>>>>>> 105%3A+Addition+of+Record+Level+for+Sensors
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Aarti
>>>>>>>>>>> 
>>>>>>>>>>> On Sat, Dec 31, 2016 at 9:32 PM radai <
>> radai.rosenbl...@gmail.com
>>>>>>>>>>> <javascript:;>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> link leads to 104. i think this is the correct one -
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>>>>>>>>>>> 105%3A+Addition+of+Record+Level+for+Sensors
>>>>>>>>>>>> 
>>>>>>>>>>>> ?
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On Fri, Dec 30, 2016 at 8:31 PM, Aarti Gupta <
>>>>> aartigup...@gmail.com
>>>>>>>>>>> <javascript:;>>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> I would like to start the discussion on KIP-105: Addition of
>>>>> Record
>>>>>>>>>>> Level
>>>>>>>>>>>> 
>>>>>>>>>>>>> for Sensors
>>>>>>>>>>>> 
>>>>>>>>>>>>> *https://cwiki.apache.org/confluence/pages/viewpage.action?
>>>>>>>>>>>> 
>>>>>>>>>>>>> <
>>>>>>>>>>>> https://cwiki.apache.org/confluence/pages/viewpage.
>>>>>>>>>>> action?pageId=67636480
>>>>>>>>>>>> 
>>>>>>>>>>>>>> *
>>>>>>>>>>>> 
>>>>>>>>>>>>> *pageId=67636483*
>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> Looking forward to your feedback.
>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> 
>>>>>>>>>>>>> Aarti and Eno
>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> -- Guozhang
>>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 
>> 
>> 
>> --
>> -- Guozhang
>> 

Reply via email to