[RFR]8215623: Add incremental dump for jmap histo

Jean Christophe Beyler jcbeyler at google.com
Wed Apr 10 20:40:18 UTC 2019


Hi Lin,

What I meant about the helper method was to not do this:


+    private static String add_option(String cmd, String opt) {
+      if (opt.equals("")) {
+        return cmd;
+      }
+      return cmd + opt + ",";
+    }
+

but to do this:

+    private static String add_option(String cmd, String opt) {
+      if (cmd.isEmpty()) {
+        return opt;
+      }
+      return cmd + "," + opt;
+    }
+

That way you only put the ',' when needed,
Jc



On Wed, Apr 10, 2019 at 5:33 AM 臧琳 <zanglin5 at jd.com> wrote:

> Dear Jc,
>      Thanks a lot for your comments, here is the refined webrev. May I ask
> your help to review again?
> http://cr.openjdk.java.net/~lzang/jmap-8214535/8215623/webrev.05/
>
> BRs,
> Lin
>
> 在 2019年4月4日,上午4:57,Jean Christophe Beyler <jcbeyler at google.com> 写道:
>
> Hi Lin,
>
> Just a few nits to be honest:
>
> -
> http://cr.openjdk.java.net/~lzang/jmap-8214535/8215623/webrev.04/src/hotspot/share/utilities/ostream.cpp.udiff.html
>
>   -> I don't think it's a good idea to just pass a char* and implicitly
> imagine it is 256 in length
>   -> Should we not add that length as a parameter? btw, the test you have
> len > 255 is a bit too restrictive no? Technically you should wait until
> you find the last '/' and then test there no?
>        (technically we could use strrchr, no?)
>
>
> http://cr.openjdk.java.net/~lzang/jmap-8214535/8215623/webrev.04/src/jdk.jcmd/share/classes/sun/tools/jmap/JMap.java.udiff.html
>   -> the adding of the "," seems a bit off; I think it would be smarter to
> just have a helper add_option to cmdline that checks if it is not empty,
> then add "," and the new option
>      -> otherwise you always end the "," if there are more options even if
> you are ignoring them, no?
>
> Finally:
> } else if (subopt.equals("live")) {
> -                liveopt = "-live";
> +                // Add '-' for compatibility.
> +                cmdline += "-" + subopt;
>
> for consistency with how you do it for "all", should this not be:
> } else if (subopt.equals("live")) {
> -                liveopt = "-live";
> +                // Add '-' for compatibility.
> +                cmdline += "-live";
>
> Thanks,
> Jc
>
> On Mon, Apr 1, 2019 at 5:18 AM 臧琳 <zanglin5 at jd.com> wrote:
>
>> Dear All,
>>       Here I updated the latest changeset which did the following refine:
>>       * fixed the compatibility issues so that old version of jmap can
>> work normally with latest changeset.
>>       * revised the code for parsing the jmap histo arguments.
>>       * revised the logic for incremental dumping of jmap histo.
>>       The main change of this webrev is making all arguments passed to
>> virtual machine as one line. So there is no need to care about the max
>> argument count limitation. And hence resolved the compatibility issues as
>> discussed in
>> http://mail.openjdk.java.net/pipermail/serviceability-dev/2019-March/027338.html
>>
>>       May I  ask your help to review?
>>       http://cr.openjdk.java.net/~lzang/jmap-8214535/8215623/webrev.04/
>>
>>
>> BRs,
>> Lin
>>
>> 在 2019年2月26日,上午10:50,臧琳 <zanglin5 at jd.com> 写道:
>>
>> Dear All,
>>         I have revised the webrev at
>> http://cr.openjdk.java.net/~xiaofeya/8215623/webrev.02/.
>>         May I ask your help for reviewing? Thanks
>>
>>
>> BRs,
>> Lin
>>
>> -----Original Message-----
>> From: 臧琳
>> Sent: Friday, January 25, 2019 9:01 AM
>> To: Hohensee, Paul <hohensee at amazon.com>; serviceability-
>> dev at openjdk.java.net
>> Subject: Re: [RFR]8215623: Add incremental dump for jmap histo
>>
>> Dear All,
>>         May I get more review about this webrev?
>>         Webrev: http://cr.openjdk.java.net/~xiaofeya/8215623/webrev.01/
>>         Bug: https://bugs.openjdk.java.net/browse/JDK-8215623
>>
>>
>> Thanks!
>> Lin
>> ________________________________________
>> From: 臧琳
>> Sent: Wednesday, January 9, 2019 9:46:55 AM
>> To: Hohensee, Paul; serviceability-dev at openjdk.java.net
>> Subject: RE: [RFR]8215623: Add incremental dump for jmap histo
>>
>> Hi Paul and All,
>>     Thanks a lot for your review and comments, I have updated the webrev
>> to
>>
>> Webrev: http://cr.openjdk.java.net/~xiaofeya/8215623/webrev.01/
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8215623
>>     Would you like to help review it. Thanks.
>>
>> BRs
>> Lin
>>
>> From: 臧琳
>> Sent: Monday, January 7, 2019 7:14 PM
>> To: Hohensee, Paul <hohensee at amazon.com>; serviceability-
>> dev at openjdk.java.net; 臧琳 <zanglin5 at jd.com>
>> Subject: RE: [RFR]8215623: Add incremental dump for jmap histo
>>
>> And another way is to add a argument “IncrementalFile=<path>”,which
>> specifies the location for saving the intermediate data file. And if it
>> is not
>> specified, incremental data will dump to “out”.
>>
>> What do you think?
>>
>> Thanks,
>> Lin
>> From: 臧琳
>> Sent: Monday, January 7, 2019 7:02 PM
>> To: Hohensee, Paul
>> <hohensee at amazon.com<mailto:hohensee at amazon.com>>; serviceability-
>> dev at openjdk.java.net<mailto:serviceability-dev at openjdk.java.net>
>> Subject: 答复: [RFR]8215623: Add incremental dump for jmap histo
>>
>>
>> Dear Paul,
>>
>>        Thanks for your review, I agree your suggestion to make incremental
>> general. and
>>
>>        I think the incremental file is better to be different with the
>> file or the
>> "out", because
>>
>> in future the parallel histo will have each thread individually dump
>> their data,
>> and I want
>>
>> it to be lock-free, so each thread need to dump to their own file. The
>> final
>> data
>>
>> will be sum up and dump to the file that "filename=<file>" specified.
>> Moreover, the incremental
>>
>> file contains intermediate data, if it is dumped to "<file>", it more or
>> less
>> "pollute" the final file (final file that contains lots intermediate
>> data).
>>
>>       so the logic is that incremental data will be dumped to a file named
>> "Histo_Dump_Temp.dump",
>>
>> if the "filename" is assigned, the "Histo_Dump_Temp.dump" will be
>> generated under the same folder,
>>
>> if "filename" not specified, it will dump to current dir. And if
>> "chunkcount" is 0
>> or max_int, or "maxfilesize" is 0, the incremental dump will be disabled.
>>
>> ________________________________
>> 发件人: Hohensee, Paul
>> <hohensee at amazon.com<mailto:hohensee at amazon.com>>
>> 发送时间: 2019年1月1日 4:56
>> 收件人: 臧琳; serviceability-dev at openjdk.java.net<mailto:serviceability-
>> dev at openjdk.java.net>
>> 主题: Re: [RFR]8215623: Add incremental dump for jmap histo
>>
>>
>> As for 8215622, update the copyright dates to 2019 please, since this
>> won’t
>> get pushed until then.
>>
>>
>>
>> You might generalize the implementation so that all inspections are done
>> incrementally, and parameterize RecordInstanceClosure with the incremental
>> threshold. “incremental” could become “chunkcount=<n>”, where <n>
>> defaults to infinity (max value of size_t).
>>
>>
>>
>> I’d not use a default file name when “chunkcount” is specified, I’d just
>> write to
>> whatever the output stream is. “chunkcount” is then independent of “file”.
>>
>>
>>
>> I’d add another histo argument for the maximum file size, call it
>> “maxfilesize”,
>> and parameterize RecordInstanceClosure with it. Default would be infinity
>> (max value of size_t).
>>
>>
>>
>> If you want to make it easy to use your 8k and 5mb chunkcount and
>> maxfilesize combination, you could redefine your original “incremental”
>> argument as syntactic sugar for “chunkcount=8k,maxfilesize=5m”.
>>
>>
>>
>> INCREMENTAL_THRESHOLD and MAX_INCREMENTAL_FILESIZE become
>> DEFAULT_CHUNKSIZE and MAX_FILE_SIZE, are both set to max size_t, and
>> should be defined as “const int” within RecordInstanceClosure.
>>
>>
>>
>> Thanks,
>>
>>
>>
>> Paul
>>
>>
>>
>> From: serviceability-dev <serviceability-dev-
>> bounces at openjdk.java.net<mailto:serviceability-dev-
>> bounces at openjdk.java.net>> on behalf of 臧琳
>> <zanglin5 at jd.com<mailto:zanglin5 at jd.com>>
>> Date: Thursday, December 20, 2018 at 11:13 PM
>> To: "serviceability-dev at openjdk.java.net<mailto:serviceability-
>> dev at openjdk.java.net>" <serviceability-
>> dev at openjdk.java.net<mailto:serviceability-dev at openjdk.java.net>>
>> Subject: [RFR]8215623: Add incremental dump for jmap histo
>>
>>
>>
>> Hi All,
>>
>>       May I ask your help to review this patch for enhance jmap –histo.
>>
>> It adds the “incremental” arguments that allow jmap –histo to
>> incrementally
>> save the intermediate data into a temp file.
>>
>> The intermediate data is dumped incrementally and write to a rolling file,
>> which limit the size of the temp file to be small.
>>
>> This is useful for user to get intermediate results when jmap/jvm process
>> is
>> killed accidentally. Especially when the heap is large.
>>
>>
>>
>> This patch is also part of the enhancement described in
>> https://bugs.openjdk.java.net/browse/JDK-8214535.
>>
>>
>>
>> Webrev: http://cr.openjdk.java.net/~xiaofeya/8215623/webrev.00/
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8215623
>>
>>
>>
>> Thanks.
>>
>>
>>
>> BRs,
>>
>> Lin
>>
>>
>>
>>
>>
>>
>>
>
> --
>
> Thanks,
> Jc
>
>
>

-- 

Thanks,
Jc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20190410/03accd55/attachment-0001.html>


More information about the serviceability-dev mailing list