RFR: 8168722: Unified Logging configuration output needs simplifying
Lois Foltan
lois.foltan at oracle.com
Wed Feb 28 14:26:18 UTC 2018
On 2/28/2018 5:04 AM, Marcus Larsson wrote:
> Hi Lois,
>
> Thanks for reviewing, replies inline.
>
>
> On 2018-02-27 20:55, Lois Foltan wrote:
>> On 2/20/2018 3:51 AM, Marcus Larsson wrote:
>>
>>> Hi,
>>>
>>> Please review the following patch to make UL configuration
>>> descriptions more readable/usable. Instead of explicitly listing all
>>> tag sets with their corresponding levels (a=info,b=info, ...,
>>> x=debug, etc), a significantly shorter aggregate is now generated
>>> and printed instead (all=info,x=debug).
>>>
>>> Summary:
>>> Initially, the configured level for the majority of the log tag sets
>>> is found and used for the "all=<level>" part of the config string.
>>> Then, using a greedy iterative algorithm, selections are generated
>>> and added to the configuration string to cover the descriptions for
>>> tag sets with levels deviating from the current description. In each
>>> step, the selection which covers the most deviating tag sets is
>>> chosen. This is repeated until there are no deviating tag sets
>>> remaining. For the curious, the problem can be thought of as a
>>> variation of the set cover problem [0].
>>>
>>> Issue:
>>> https://bugs.openjdk.java.net/browse/JDK-8168722
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~mlarsson/8168722/webrev.00
>>>
>>> Tested with hs-tier 1-2, and locally with
>>> jtreg/{serviceability,runtime,gc}/logging.
>>>
>>> Thanks,
>>> Marcus
>>>
>>> [0]: https://en.wikipedia.org/wiki/Set_cover_problem
>>
>> Hi Marcus,
>> Overall this looks good. Just a couple of minor comments:
>>
>> - hotspot/share/logging/logOutput.cpp
>> line #43 - please consider making delimiter a char
>> line #102 - can subset_size and depth be const parameters?
>> line #139 - consider not post incrementing subset_size (make a const
>> parameter), since subset_size is passed by value parameter, the
>> incrementation won't make a difference after a return from the
>> current call to generate_all_subsets_of. I would rather see line
>> #140 explicitly use "subset_size + 1". That then it makes it obvious
>> that on the 2nd call to generate_all_subsets_of, subset_size has been
>> incremented.
>> line #155 - is the variable "before" ever used? I think it can be
>> removed.
>
> All great suggestions. Fixed!
>
>> line #201 & 202, why the bump by 2?
>
> The check ensures there's enough room for both the exact and wildcard
> selections, instead of doing two separate checks in a row. I added a
> comment to clarify.
>
>> line #214 - can on_level be const? It doesn't seem to be assigned
>> into within update_config_string().
>
> Indeed, fixed.
>
>> line #239 - why is selections_cap set to 64?
>
> It's just a guesstimate on how many selections will be generated. I
> made it depend on the MaxSubsets constant and increased it a bit. Also
> added a comment to clarify that it's the initial cap.
Thanks for the above fixes and additional comments.
>
>> line#259 - best_selection is defined to be a constant array but at
>> line #286 you basically reassign the whole array, that looks fishy.
>
> It's not an array, it's a pointer to the currently best selection found.
Oops, I read that wrong. Thanks for clarifying.
>
> Updated Webrev:
> http://cr.openjdk.java.net/~mlarsson/8168722/webrev.01
>
> Incremental:
> http://cr.openjdk.java.net/~mlarsson/8168722/webrev.00-01
Looks good!
Lois
>
> Thanks,
> Marcus
More information about the hotspot-runtime-dev
mailing list