Skip to content

Generational plans are slower than their non-generational counterparts #594

Open
@k-sareen

Description

@k-sareen

During some performance evaluation, I have noticed that our generational GC plans (GenCopy and GenImmix) are slower than their non-generational counterparts (SemiSpace and Immix). Immix has the best GC time as well as overall benchmark execution time. This is quite alarming as generational garbage collection should improve the STW time instead of increase it.

Results

Table 1: STW time for different MMTk GC plans

-- GenCopy (core_3dbdd7ae-jdk_3cc0d71) GenImmix (core_3dbdd7ae-jdk_3cc0d71) Immix (core_3dbdd7ae-jdk_3cc0d71) MarkCompact (core_3dbdd7ae-jdk_3cc0d71) NoGC (core_3dbdd7ae-jdk_3cc0d71) SemiSpace (core_3dbdd7ae-jdk_3cc0d71)
avrora 4.535 -1.83%, +1.86% 3.118 -8.83%, +8.86% 1.000 -1.79%, +1.82% 3.774 -2.12%, +2.15% 0.000 4.288 -1.99%, +2.02%
cassandra 2.698 -3.38%, +3.49% 1.936 -3.40%, +3.51% 1.000 -3.28%, +3.39% 5.089 -2.38%, +2.49% 0.000 2.934 -2.54%, +2.65%
eclipse 7.899 -0.47%, +0.48% 6.293 -3.46%, +3.47% 1.000 -0.49%, +0.49% 9.403 -0.58%, +0.58% 0.000 8.122 -0.43%, +0.43%
fop 2.710 -2.24%, +2.33% 3.491 -9.58%, +9.67% 1.000 -2.98%, +3.07% 4.497 -2.09%, +2.19% 0.000 2.540 -2.14%, +2.24%
h2o 4.539 -1.34%, +1.36% 2.381 -2.07%, +2.08% 1.000 -1.23%, +1.24% 7.424 -1.16%, +1.18% 0.000 3.991 -1.44%, +1.45%
jython * 1.564 -0.76%, +0.76% 1.000 -0.46%, +0.46% 5.559 -0.34%, +0.34% 0.000 2.921 -0.41%, +0.41%
luindex 7.452 -0.83%, +0.84% * 1.000 -0.73%, +0.73% 5.258 -0.52%, +0.52% 0.000 6.639 -0.72%, +0.73%
lusearch 1.944 -2.94%, +3.12% 1.281 -2.96%, +3.14% 1.000 -4.17%, +4.35% 5.877 -2.93%, +3.12% * 2.269 -3.01%, +3.19%
pmd * * 1.000 -0.81%, +0.82% 21.066 -0.58%, +0.59% 0.000 1.461 -0.64%, +0.65%
sunflow 2.913 -0.87%, +0.89% 2.949 -0.96%, +0.97% 1.000 -1.13%, +1.15% 13.042 -0.82%, +0.83% 0.000 1.933 -0.84%, +0.86%
tomcat 2.104 -7.33%, +8.58% 1.425 -7.33%, +8.59% 1.000 -10.60%, +11.86% 4.735 -7.32%, +8.58% 0.000 2.616 -7.32%, +8.57%
zxing 5.492 -2.66%, +2.74% 4.487 -10.90%, +10.99% 1.000 -2.88%, +2.96% 14.138 -2.08%, +2.17% 0.000 4.616 -2.10%, +2.18%
 
min 2.104 1.425 1.000 3.774 0.000 1.933
max 7.899 6.293 1.000 14.138 0.000 8.122
mean 4.111 3.260 1.000 7.763 0.000 3.880
geomean 3.761 2.964 1.000 6.921 0.000 3.531

Note the geomean (emphasis mine) for the generational plans in comparison to the non-generational plans.

Revisions used

mmtk-core: 3dbdd7ae + feature perf_counter
mmtk-openjdk: 3cc0d71
openjdk: ca90b43f0f5

DaCapo Chopin: f480064

Benchmark results were gathered on an i9-9900K Coffee Lake machine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P-highPriority: High. A high-priority issue should be fixed as soon as possible.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions