Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8316922

Add file name parameter to Compiler.perfmap

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Withdrawn
    • Icon: P5 P5
    • tbd
    • hotspot
    • None
    • svc
    • behavioral
    • minimal
    • The compatibility risk is low to zero. There is no behavior change where `jcmd Compiler.perfmap` is used without the new optional argument `filename`.
    • add/remove/modify command line option
    • JDK

      Summary

      Extend jcmd Compiler.perfmap with an optional option filename to create a symbol mappings file for the linux perf different from the default /tmp/perf-%d.map.

      Problem

      The current implementation of jcmd Compiler.perfmap writes the perf map to a hard-coded file name: /tmp/perf-%d.map where %d is a java process ID. The hard-coded file name is inconvenient for long running applications where symbol mappings change because of code changes in CodeCache. These changes must be reflected in the perf map file before any run of perf record. If we run perf record multiple times, we must preserve the previously created perf map file before each of the runs. Otherwise the perf map file will be overwritten and perf report will be incorrect. A workaround is to rename the previously created map file before running perf record. With an ability to specify a filename, we would not need the workaround.

      Solution

      PerfMapDCmd will inherit from DCmdWithParser to accept an additional argument filename which is optional. If it is provided, the perf map will be written to the specified filename. Otherwise, the perf map file will be written to /tmp/perf-%d.map where %d is a java process ID.

      Specification

      • jcmd Compiler.perfmap is unchanged and creates /tmp/perf-%d.map.
      • jcmd Compiler.perfmap <file> creates the map file at the specified <file>.
      • jcmd PID help Compiler.perfmap provides the following usage.
      Compiler.perfmap [arguments] (Linux only)
             Write map file for Linux perf tool.
      
      Impact: Low
      
             arguments:
      
             • filename: (Optional) Name of the map file (STRING, no default value)
      
             If filename is not specified, a default file name is chosen using the pid of the tar 
             get JVM process.  For example, if the pid is 12345, then the default filename will be
             /tmp/perf-12345.map.

            yftsai Yi-Fan Tsai
            eastigeevich Evgeny Astigeevich
            Chris Plummer
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: