Saluton al ĉiuj - ĉi tiu estas la kvina afiŝo en nia serio Quarkus! (Cetere, spektu nian retseminarion
В
Efikecmezurado estas la fundamenta bazo de preskaŭ ajna ĝisdatigo, kaj memoruzoraportado estas grava parto de la rendimenta analiza procezo. Hodiaŭ ni rigardos la koncernajn mezurajn ilojn, kiuj povas esti uzataj por kvantigi la plibonigojn atingitajn per modernigo de Java-aplikoj.
Por pliaj informoj pri mezurado de memoruzo, vidu la Quarkus-lerniilon titolitan
Malsupre ni simple montros al vi kiel kompari datumojn pri memoruzo por tri malsamaj specoj de aplikoj (JBoss EAP, JAR-pakaĵo kaj rulebla) kolektante la datumojn en Linukso per la pmap kaj ps-utiloj.
JBoss EAP
Ni lanĉas ekzemplon de la aplikaĵo JBoss EAP (vidu la sekcion "Deplojante helloworld" en
$ pgrep -lf jboss
7268 java
Notu. La opcio –a permesas ĉerpi la kompletan komandlinion (t.e.: $ pgrep -af jboss).
Nun ni uzas PID 7268 en la ps kaj pmap komandoj.
Jen tiel:
$ ps -o pid,rss,command -p 7268
PID RSS COMMAND
7268 665348 java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferI
Kaj tiel:
$ pmap -x 7268
7268: java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standa
Address Kbytes RSS Dirty Mode Mapping
00000000ae800000 1348608 435704 435704 rw--- [ anon ]
0000000100d00000 1035264 0 0 ----- [ anon ]
000055e4d2c2f000 4 4 0 r---- java
000055e4d2c30000 4 4 0 r-x-- java
000055e4d2c31000 4 0 0 r---- java
000055e4d2c32000 4 4 4 r---- java
000055e4d2c33000 4 4 4 rw--- java
[...]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------- ------- -------
total kB 3263224 672772 643024
Ni rigardas la RSS-valoron kaj vidas, ke JBoss EAP konsumas proksimume 650 MB da memoro.
JAR-pakaĵo
Ni lanĉas la aplikaĵon JAR (vidu la sekcion "Run helloworld pakita en JAR" en
$ java -jar ./target/helloworld-<version>-runner.jar
Denove ni rigardas la PID per la komando pgrep (ĉi-foje ni uzas la opcion -a priskribita supre):
$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar
Ni rulas ps kaj pmap por mezuri memoruzon, sed nun por procezo 6408.
Jen tiel:
$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
Kaj tiel:
$ pmap -x 6408
6408: java -jar ./target/helloworld-quarkus-runner.jar
Address Kbytes RSS Dirty Mode Mapping
00000005d3200000 337408 0 0 rw--- [ anon ]
00000005e7b80000 5046272 0 0 ----- [ anon ]
000000071bb80000 168448 57576 57576 rw--- [ anon ]
0000000726000000 2523136 0 0 ----- [ anon ]
00000007c0000000 2176 2088 2088 rw--- [ anon ]
00000007c0220000 1046400 0 0 ----- [ anon ]
00005645b85d6000 4 4 0 r---- java
00005645b85d7000 4 4 0 r-x-- java
00005645b85d8000 4 0 0 r---- java
00005645b85d9000 4 4 4 r---- java
00005645b85da000 4 4 4 rw--- java
[...]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------- ------- -------
total kB 12421844 133784 115692
Ni denove rigardas la RSS kaj vidas, ke la JAR-pakaĵo konsumas proksimume 130 MB.
Efektivebla dosiero
Ni lanĉas la denaskan (vidu la sekcion "Rulado de la denaska helloworld rulebla dosiero" en
$ ./target/helloworld-<version>-runner
Ni rigardu ĝian PID denove:
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
Kaj tiam ni uzas la rezultan procezon ID (6948) en la ps kaj pmap komandoj.
Jen tiel:
$ ps -o pid,rss,command -p 6948
PID RSS COMMAND
6948 19084 ./target/helloworld-quarkus-runner
И вот так:
$ pmap -x 6948
6948: ./target/helloworld-quarkus-runner
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 12 12 0 r---- helloworld-quarkus-runner
0000000000403000 10736 8368 0 r-x-- helloworld-quarkus-runner
0000000000e7f000 7812 6144 0 r---- helloworld-quarkus-runner
0000000001620000 2024 1448 308 rw--- helloworld-quarkus-runner
000000000181a000 4 4 4 r---- helloworld-quarkus-runner
000000000181b000 16 16 12 rw--- helloworld-quarkus-runner
0000000001e10000 1740 156 156 rw--- [ anon ]
[...]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------- ------- -------
total kB 1456800 20592 2684
Ni rigardas la RSS kaj vidas, ke la plenumebla dosiero okupas ĉirkaŭ 20 MB da memoro.
Komparante memorkonsumon
Do, ni ricevis la sekvajn nombrojn por memoruzo:
- JBoss EAP - 650 MB.
- JAR-pakaĵo - 130 MB.
- Efektivebla dosiero - 20 MB.
Evidente, la rulebla dosiero okupas multe malpli da memoro.
Ni resumu afiŝojn 4 kaj 5
En ĉi tiu kaj la antaŭaj afiŝoj, ni rigardis modernigi Java-aplikaĵojn uzante teknologiojn subtenatajn en Quarkus (CDI kaj Servlet 3), same kiel diversajn manierojn evoluigi, konstrui kaj ruli tiajn aplikojn. Ni montris kiel kolekti datumojn pri uzado de memoro por taksi la plibonigojn atingitajn per tia ĝisdatigo. Ĉi tiuj artikoloj helpas vin kompreni kiel Quarkus funkcias kaj kial ĝi estas utila—ĉu vi parolas pri la simpla helloworld programo en niaj ekzemploj aŭ multe pli kompleksaj realaj aplikaĵoj.
Ni revenos post du semajnoj kun fina afiŝo pri Quarkus - ĝis revido!
En nia fina afiŝo, ni montros kiel kombini AMQ Online kaj Quarkus por konstrui modernan mesaĝsistemon bazitan sur OpenShift uzante du novajn mesaĝajn teknologiojn. Legu plu
fonto: www.habr.com