Request For Comment: Asynchronous Logging
Liu, Xin
xxinliu at amazon.com
Thu Apr 29 06:19:35 UTC 2021
hi, Yasumsa,
I have updated the CSR to reflect the latest discussion. To simplify
implementation and user interface, we decide to have only one global
option. A global flag -Xlog:async set the asynclogging mode for all log
outputs, before and after -Xlog:async.
According to my test, with default size of buffer, All log tagsets can
write asynchronously and I hardly observe the buffer overflows. Another
argument is that we don't think it's a very common the end-users need to
define different outputs with different async properties.
Please note that it is supposed to include stdout/stderr streams if
-Xlog:async is set. pull/3135 only supports LogFileOutput. I will create
a JBS issue and hoist the current logics to LogFileStreamOutput, which
includes stdout/stderr as well.
thanks,
--lx
On 4/27/21 4:35 PM, Yasumasa Suenaga wrote:
> CAUTION: This email originated from outside of the organization. Do not
click links or open attachments unless you can confirm the sender and know the content is safe.
>
>
>
> Hi Xin,
>
> On 2021/04/28 2:17, Liu, Xin wrote:
>> Hi,
>>
>> I would like to report my current progress. I have finished all pending
>> tasks except "hoist async_mode to base class for stdout/err". May I ask
>> to defer it after this PR? I will create an issue and work on it
>> immediately after this PR. It's not difficult but I need to modify the
>> existing interfaces. I would like to keep this PR almost "added" to ease
>> reviewers.
>>
>> If Yasumasa allows me to do so, now the only blocker is CSR. it seems
>> that Iom and Thomas agree with a global option. Shall we go that way?
>
> I agree with you, but I'm not clear a bit between "async=" in -Xlog and -XX:+AsyncLogging.
>
> CSR says about them in below, but I think they are not same because -XX:AsyncLogging affects global, on the other hand "async=" affects in each log output. Is it right?
>
> -----
> Unified Logging framework can define a global option -Xlog:async[=true|false]. The effect is same as -XX:+/-AsyncLogging
> -----
>
>
> Thanks,
>
> Yasumasa
>
>
>> Meanwhile, I have pushed all my code to github:
>> https://github.com/openjdk/jdk/pull/3135
>>
>> Could you take a look it?
>>
>> -------------------------------------------------------------
>> | request | Status |
>> -------------------------------------------------------------
>> | independent NonJavaThread | done |
>> |-----------------------------------------------------------|
>> | pass tier1-test with +AsyncLogging | [1] |
>> |-----------------------------------------------------------|
>> | inject meta-info to display no. of dropping msg. | done |
>> |-----------------------------------------------------------|
>> | support jcmd VM.log | done |
>> |-----------------------------------------------------------|
>> | preserve accurate decorations | |
>> |-----------------------------------------------------------<- progress
>> | hoist async_mode to base class for stdout/err| |
>> |-----------------------------------------------------------|
>> | CSR |JDK-8264323 |
>> |-----------------------------------------------------------<- consensus
>> |use string table over malloc | |
>> ------------------------------------------------------------|
>> |use lock-free data structure. | |
>> -------------------------------------------------------------
>>
>>
>> [1] the only exception is serviceability/dcmd/gc/RunGCTest.java. it
>> emits gclog and checks result right away without any synchronization. if
>> we do run jtreg test with async logging, I need to add an flushing api
>> in whitebox.
>>
>>
>> thanks,
>> --lx
>>
More information about the hotspot-dev
mailing list