Kaixo guztioi - hau da gure Quarkus serieko bosgarren mezua! (Bide batez, ikusi gure webinarra
Π
Errendimenduaren neurketa ia edozein bertsio berritzeko oinarrizko oinarria da, eta memoria-erabileraren txostena errendimendua aztertzeko prozesuaren zati garrantzitsu bat da. Gaur Java aplikazioak modernizatuz lortutako hobekuntzak kuantifikatzeko erabil daitezkeen neurketa tresna garrantzitsuak aztertuko ditugu.
Memoriaren erabilera neurtzeari buruzko informazio gehiago lortzeko, ikusi Quarkus izeneko tutoriala
Jarraian, hiru aplikazio mota ezberdinetarako (JBoss EAP, JAR paketea eta exekutagarria) memoriaren erabilera datuak nola alderatu erakutsiko dizugu Linux-en datuak bilduz pmap eta ps utilitateak erabiliz.
JBoss EAP
JBoss EAP aplikazioaren instantzia bat abiarazten dugu (ikus "Helloworld inplementatzea" atalean
$ pgrep -lf jboss
7268 java
Oharra. βa aukerak komando-lerro osoa ateratzeko aukera ematen du (hau da: $ pgrep -af jboss).
Orain PID 7268 erabiltzen dugu ps eta pmap komandoetan.
Hona hemen:
$ 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
Eta honela:
$ 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
RSS balioari erreparatzen diogu eta ikusten dugu JBoss EAP-ek 650 MB-ko memoria gutxi gorabehera kontsumitzen duela.
JAR paketea
JAR aplikazioa abiarazten dugu (ikusi "Exekutatu helloworld JAR-en paketatua" atalean
$ java -jar ./target/helloworld-<version>-runner.jar
PID-a berriro begiratuko dugu pgrep komandoa erabiliz (oraingoan goian deskribatutako -a aukera erabiliko dugu):
$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar
ps eta pmap exekutatzen ditugu memoriaren erabilera neurtzeko, baina orain 6408 prozesurako.
Hona hemen:
$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
Eta honela:
$ 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
RSSari begiratuko diogu berriro eta JAR paketeak 130 MB gutxi gorabehera kontsumitzen dituela ikusten dugu.
Fitxategi exekutagarria
Jatorrizkoa abiarazten dugu (ikus "Helloworld jatorrizko fitxategi exekutagarria exekutatu" atalean
$ ./target/helloworld-<version>-runner
Ikus dezagun berriro bere PID-a:
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
Eta gero, ondoriozko prozesuaren IDa (6948) erabiltzen dugu ps eta pmap komandoetan.
Hona hemen:
$ 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
RSSari begiratu eta fitxategi exekutagarriak 20 MB inguru hartzen dituela ikusten dugu.
Memoria-kontsumoa alderatuz
Beraz, honako zenbaki hauek lortu ditugu memoria erabiltzeko:
- JBoss EAP - 650 MB.
- JAR paketea - 130 MB.
- Fitxategi exekutagarria - 20 MB.
Jakina, fitxategi exekutagarriak memoria askoz gutxiago hartzen du.
Laburtu ditzagun 4. eta 5. mezuak
Argitalpen honetan eta aurrekoetan, Quarkus-en onartzen diren teknologiak erabiliz Java aplikazioak modernizatzea aztertu dugu (CDI eta Servlet 3), baita aplikazio horiek garatzeko, eraikitzeko eta exekutatzeko hainbat modu ere. Memoria-erabileraren datuak nola bildu erakutsi genuen berritze horrek lortutako hobekuntzak ebaluatzeko. Artikulu hauek Quarkusek nola funtzionatzen duen eta zergatik den erabilgarria ulertzen laguntzen dizute, gure adibideetako helloworld programa soilaz edo bizitza errealeko aplikazio askoz konplexuagoez ari zaren.
Bi aste barru itzuliko gara Quarkus-i buruzko azken argitalpen batekin. Han ikusiko gara!
Gure azken argitalpenean, AMQ Online eta Quarkus nola konbinatu erakutsiko dugu OpenShift-en oinarritutako mezularitza-sistema moderno bat eraikitzeko bi mezularitza teknologia berri erabiliz. Irakurri
Iturria: www.habr.com