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