[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR: 8293170: Improve encoding of the debuginfo nmethod section [v4]
From:       Boris Ulasevich <bulasevich () openjdk ! org>
Date:       2023-07-31 6:05:07
Message-ID: VfsqQ_ukhve000WhxmFiBHrjyg-5iS9w41kqisEI69E=.f316da0f-3bea-4ba2-b700-d8b87afa239c () github ! com
[Download RAW message or body]

> This is another pull request to replace https://github.com/openjdk/jdk/pull/10025 \
> change which was blocked as not acceptable (see \
> https://github.com/openjdk/jdk/pull/10025#pullrequestreview-1228216330) 
> The objections to change #10025 were:
> - specialized algorithm for given data complicates things, makes it hard to learn, \
>                 test and support
> - algorithm is changed for DebugInfo, and the benefit is only for one type of data
> - statistics of the debug info data can (will) change, breaking the optimization
> 
> The suggestion was:
> - don't change the core algorithm, but add one on top or underneath the existing \
> one, or reuse off-the-shelf zero-reduction schemes such as Cap'n Proto 
> With this change I propose a different approach. Instead of bit coding, the \
> sequence of zeros in a data stream is encoded with a special character that \
> normally never appears in Unsinged5 encoding, followed by a byte containing a \
> number of zeros. In this way the updated algorithm is a pure extension of the \
> existing encoding algorithm: data encoded without the zero-reduction trick is \
> unpacked in the same way as before. 
> Currently there are several datasets affected by this change: Dependencies info, \
> OopMap info, LineNumber info, Debug info. Only Debug info has a large number of \
> zeros and gets a significant benefit. I experimented with the Cap'n Proto and lz4 \
> algorithms on DebugInfo. The Unsinged5 algorithm has a better compression rate than \
> these. 
> DebugInfo data size is reduced by ~20% (actually, 10-30%, depending on the \
> application). Total nmethod size reduction is ~3%. 
> Performance impact: Renaisance and DaCapo benchmarks do not show any difference.

Boris Ulasevich has updated the pull request with a new target base due to a merge or \
a rebase. The pull request now contains three commits:

 - whitespace error
 - addressing review comments: super call, clarifying, and adding tests
 - 8293170: Improve encoding of the debuginfo nmethod section

-------------

Changes: https://git.openjdk.org/jdk/pull/12387/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12387&range=03
  Stats: 341 lines in 5 files changed: 337 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/12387.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/12387/head:pull/12387

PR: https://git.openjdk.org/jdk/pull/12387


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic