Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFE] Add support for peak RSS reporting when building graalvm master #211

Closed
jerboaa opened this issue Dec 6, 2021 · 2 comments · Fixed by #212
Closed

[RFE] Add support for peak RSS reporting when building graalvm master #211

jerboaa opened this issue Dec 6, 2021 · 2 comments · Fixed by #212
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@jerboaa
Copy link
Collaborator

jerboaa commented Dec 6, 2021

The default build output for mandrel when building graalvm master looks different than from a [graalvm-ce-dev build]. In particular, the Peak RSS info is missing for mandrel:

Simple test program:

$ cat TestVMVersion.java 
public class TestVMVersion {
	public static void main(String[] args) {
		System.out.println(System.getProperty("java.vm.version"));
	}
}

Graal VM CE dev build:

$ native-image TestVMVersion
========================================================================================================================
GraalVM Native Image: Generating 'testvmversion'...
========================================================================================================================
[1/7] Initializing...                                                                                    (3.9s @ 0.21GB)
 Version info: 'GraalVM 22.0.0-dev Java 11 CE'
 18 classes registered for reflection
[2/7] Performing analysis...  [*******]                                                                  (9.7s @ 1.06GB)
  11,652 (72.44%) of 16,086 methods reachable
   2,565 (82.61%) of  3,105 classes reachable
[3/7] Building universe...                                                                               (0.8s @ 1.22GB)
[4/7] Parsing methods...      [*]                                                                        (0.9s @ 0.55GB)
[5/7] Inlining methods...     [****]                                                                     (1.5s @ 1.29GB)
[6/7] Compiling methods...    [**********]                                                               (9.5s @ 1.24GB)
[7/7] Creating image...                                                                                  (1.8s @ 1.49GB)
  10.52MB in total (35.07% for code area and 55.68% for image heap)
   3.69MB in code size:    6,956 compilation units
   5.86MB in heap size:    1,545 classes and 80,520 objects
------------------------------------------------------------------------------------------------------------------------
Top 10 packages in code area:                               Top 10 object types in image heap:
 181.70KB com.oracle.svm.jni.JNIJavaCallWrappers               1.64MB byte[] for assorted data
 103.01KB java.util.regex.Pattern                            715.50KB java.lang.String
 102.63KB c.o.svm.core.reflect.ReflectionAccessorHolder      549.46KB java.lang.Class
  60.27KB java.util.Formatter$FormatSpecifier                451.79KB byte[] for java.lang.String[]
  55.31KB java.math.BigInteger                               363.23KB java.util.HashMap$Node
  46.27KB java.text.DecimalFormat                            192.00KB java.util.HashMap$Node[]
  43.74KB java.util.regex.CharPredicates                     139.82KB java.lang.String[]
  36.81KB com.oracle.svm.jni.functions.JNIFunctions          139.04KB char[]
  33.34KB java.math.MutableBigInteger                        130.50KB java.util.concurrent.ConcurrentHashMap$Node
  31.98KB java.util.concurrent.ConcurrentHashMap             103.92KB sun.util.locale.LocaleObjectCache$CacheEntry
      ... 1402 additional packages                                ... 723 additional object types
                                           (use GraalVM Dashboard to see all)
------------------------------------------------------------------------------------------------------------------------
                              1.3s spent in 17 GCs | Peak RSS: 2.56GB | CPU load: ~614.69%
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /disk/graal/upstream-sources/graal/testvmversion (EXECUTABLE)
 /disk/graal/upstream-sources/graal/testvmversion.build_artifacts.txt
========================================================================================================================
Finished generating 'testvmversion' in 29.6s.

Mandrel build:

$ cat TestVMVersion.java 
public class TestVMVersion {
	public static void main(String[] args) {
		System.out.println(System.getProperty("java.vm.version"));
	}
}
[sgehwolf@t580-laptop graal]$ ./mandrel-build/bin/native-image TestVMVersion
================================================================================
GraalVM Native Image: Generating 'testvmversion'...
================================================================================
[1/7] Initializing...                                            (4.0s @ 0.39GB)
 Version info: 'GraalVM 22.0.0-dev Java 11 Mandrel Distribution'
[2/7] Performing analysis...  [******]                          (10.9s @ 0.83GB)
   2,565 (82.77%) of  3,099 classes reachable
   3,216 (61.15%) of  5,259 fields reachable
  11,804 (73.23%) of 16,120 methods reachable
      27 classes,     0 fields, and   135 methods registered for reflection
      57 classes,    59 fields, and    51 methods registered for JNI access
[3/7] Building universe...                                       (0.8s @ 1.01GB)
[4/7] Parsing methods...      [*]                                (0.8s @ 1.24GB)
[5/7] Inlining methods...     [****]                             (1.5s @ 1.90GB)
[6/7] Compiling methods...    [***]                              (9.6s @ 2.70GB)
[7/7] Creating image...                                          (1.5s @ 3.00GB)
  10.54MB in total (35.1% code area, 55.6% image heap, and 9.3% other data)
   3.70MB for code area:    6,958 compilation units
   5.86MB for image heap:   1,545 classes and 80,865 objects
 999.93KB for other data
--------------------------------------------------------------------------------
Top 10 packages in code area:           Top 10 object types in image heap:
 606.38KB java.util                        1.64MB byte[] for general heap data
 282.43KB java.lang                      717.06KB java.lang.String
 231.54KB java.util.regex                549.69KB java.lang.Class
 219.55KB java.text                      453.52KB byte[] for java.lang.String
 193.17KB com.oracle.svm.jni             362.30KB java.util.HashMap$Node
 149.84KB java.util.concurrent           190.73KB java.util.HashMap$Node[]
 118.07KB java.math                      139.04KB char[]
 103.66KB com.oracle.svm.core.reflect    136.50KB java.lang.String[]
  97.83KB sun.text.normalizer            130.50KB j.u.c.ConcurrentHashMap$Node
  88.85KB c.oracle.svm.core.genscavenge  103.92KB s.u.l.LocaleObjec~e$CacheEntry
      ... 112 additional packages             ... 652 additional object types
                       (use GraalVM Dashboard to see all)
--------------------------------------------------------------------------------
                   1.0s spent in 13 GCs | CPU load: ~672.85%
--------------------------------------------------------------------------------
Produced artifacts:
 /disk/graal/upstream-sources/graal/testvmversion (executable)
 /disk/graal/upstream-sources/graal/testvmversion.build_artifacts.txt
================================================================================
Finished generating 'testvmversion' in 30.4s.

Peak RSS: xxxGB output is missing for the second build.

@jerboaa jerboaa added this to the 22.0.0-Final milestone Dec 6, 2021
@jerboaa
Copy link
Collaborator Author

jerboaa commented Dec 6, 2021

Looks like com.oracle.svm.native.reporterchelper is not being built.

@zakkak zakkak self-assigned this Dec 6, 2021
@zakkak
Copy link
Collaborator

zakkak commented Dec 6, 2021

I already have a fix in the works, but I am waiting for oracle/graal#4078 to be merged first, since the library paths are expected to change.

Update: WIP branch is here https://github.com/zakkak/mandrel-packaging/tree/add-libreporterchelper in case someone needs it now.

zakkak added a commit to zakkak/mandrel-packaging that referenced this issue Dec 10, 2021
@zakkak zakkak added the enhancement New feature or request label Dec 10, 2021
zakkak added a commit that referenced this issue Dec 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants