[wildfly-dev] Configuration of statistics gathering

Sanne Grinovero sanne at hibernate.org
Thu Dec 12 20:20:44 EST 2013


On 12 December 2013 18:03, Jesper Pedersen <jesper.pedersen at jboss.org> wrote:
> On 12/12/2013 12:38 PM, Brian Stansberry wrote:
>> 1) For all resources that currently expose an attribute to
>> enable/disable statistics, I'll add an attribute that will be named
>> "statistics-enabled". Why that?
>>
>> a) it's an attribute, so it's name should reflect a state, not an action
>> like, for example, "enable-statistics"
>
> Ok with that.
>
>> b) simply using "statistics" is shorter, but in some places that key is
>> used as a child type (e.g. statistics=pool) and a resource can't have a
>> child type and an attribute with the same name.
>>
>
> Yeah, lets not change this.
>
>> 2) For compatibility, the existing attribute will be retained as an
>> alias to the new one. I'll add deprecation metadata. I'll also set up
>> the appropriate transformation stuff for mixed domain usage.
>>
>
> Ok.
>
>> 3) Any new stuff people do (e.g. [1], [2]), please use "statistics-enabled".
>>
>
> Agreed.
>
>> 4) My intent is to make the default values for these attributes be
>> "false". I won't change any default though unless the relative compoent
>> lead has indicated agreement in this thread or elsewhere.
>>
>> But, if you disagree with "false" as the default, please let's use this
>> thread to sort that out, get input from the performance team, etc, so we
>> can have at least a clear understanding of why some uses have 'true'.
>>
>
> IronJacamar uses statistics internally in order to display run-time
> information of the pools.
>
> IronJacamar 1.1.2+ has a change which will allow to turn-off statistics,
> but that results in nothing is displayed to the users in that case.
>
> If we turn-off statistics by default we will have to be careful on what
> to communicate to the users, since they will expect see basic
> information out of the box. Maybe IronJacamar can display more
> information than the core pool settings, but requires further investigation.
>
> I think in order to turn it off we need proof that there is a huge
> benefit for standard work loads. In the end we are talking about an
> extra section in the guide that explains turning off statistics will
> increase performance. Nothing new there. Or ship a "performance" profile.
>
> Just so we are on the same page, the IronJacamar statistics is done by 2
> x System.currentTimeMillis() + a call to Atomic(Long|Integer|...) - let
> the flame war begin :) As always, patches welcome.

The following blog post highly recommends using nanoTime() rather than
currentTimeMillis() when it comes to measuring time intervals:

   https://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks

In the case of Infinispan, the contention on the AtomicLong(s) was
actually significant, we resorted using a LongAdder, backported from
Java8.

Still I doubt the contention was being caused by an insanely high
throughput: Infinispan might be fast but isn't that fast, so we
suspect the fix is being effective not because of the lower contention
on the CAS operation but more likely it has helped preventing false
sharing, as several statistics where being recorded as different
Atomic fields in the same class.

Best Regards,
Sanne


>
>> Jesper, ^^^. ;-)
>>
>
> Why do you single me out, dude ;)
>
>>
>> That's for WF 8. For the next release I recommend that we also create
>> subsystem-level attributes to hold the default value for the several
>> cases where this setting is only configurable on a per-deployment level.
>> An example would be the jpa subsystem could have a statistics-enabled
>> attribute that drives the setting for all persistence units unless the
>> PU descriptor overrides or the admin overrides using the existing
>> per-deployment attribute. Besides being an aid to usability, having an
>> attribute that ends up in the persistent configuration will also help
>> deal with issues where, for example, the desired default for WildFly is
>> different than the desired default for some future EAP release. The
>> standard configs for the EAP release can just use a different value.
>>
>>
>
> Sounds good, although having it as an option in each deployment
> descriptor for each component type maybe overkill. I think an option in
> wildfly.xml would be enough, and then override through
> statistics-enabled via CLI.
>
> Best regards,
>   Jesper
>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev


More information about the wildfly-dev mailing list