IBM Support

IV02776: POOR PERFORMANCE DUE TO MANY FAILED JIT COMPILATIONS

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Error Message: As this is a silent performance issue, by default
    no messages will be generated. The issue can be diagnosed by
    using the following JIT command line option to generate a
    verbose log:
    -Xjit:verbose={compile*},vlog=vlog.txt
    The verbose log will show that many methods fail compilations
    repeatedly with an error code of compilationInterrupted.
    Example:
     (warm) Compiling
    java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V  t=30
    ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V
    code=0xFFFFFFFFFFFFFFFF compilationInterrupted
     (warm) Compiling
    java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V  t=30
    ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V
    code=0xFFFFFFFFFFFFFFFF compilationInterrupted
     (warm) Compiling
    java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V  t=30
    ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V
    code=0xFFFFFFFFFFFFFFFF compilationInterrupted
     (warm) Compiling
    java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V  t=30
    ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V
    code=0xFFFFFFFFFFFFFFFF compilationInterrupted.
    .
    Stack Trace: N/A
    .
    

Local fix

  • A possible workaround is to reduce the optimization level of
    affected methods to 'cold' or even noOpt. Example:
    -Xjit:{myMethod}(optLevel=cold)
    This approach my not be feasible if very many methods are
    affected. Also, please note that this approach is likely to
    decrease performance as well, although to a lesser degree.
    

Problem summary

  • The problem is caused by the JIT which uses an incorrect error
    code. When GC unloads classes the compilation in progress is
    aborted, but it will be retried. The error seen in the verbose
    log is 'compilationInterrupted'. Class unloading being a rather
    rare event the compilation retrial is expected to succeed. This
    is normal operation and isolated compilation failures with an
    error code of 'compilationInterrupted' are benign.
    In the problematic case the method was too complex for the JIT
    to compile at the desired optimization level. In such cases an
    appropriate error code is used and the JIT will retry the
    compilation at a lower optimization level. Due to a bug, an
    incorrect error code was used and the JIT was retrying the
    compilation at the same optimization level causing the
    compilation of the method to fail repeatedly.
    

Problem conclusion

  • This defect will be fixed in:
    6.0.0 SR10
    .
    The JIT was changed to use the appropriate error code when a JIT
    compilation cannot be performed due to high complexity
    .
    To obtain the fix:
    Install build 20110523 or later
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV02776

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    600

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2011-07-05

  • Closed date

    2011-07-11

  • Last modified date

    2011-07-11

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    JIT

  • Fixed component ID

    620700124

Applicable component levels

  • R600 PSY

       UP

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSC9HBA","label":"Just In Time (JIT) Compiler"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.0","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
11 July 2011