Kumusta sa lahat - ito ang ikalimang post sa aming serye ng Quarkus! (Siya nga pala, panoorin ang aming webinar
Π
Ang pagsukat ng pagganap ay ang pangunahing batayan ng halos anumang pag-upgrade, at ang pag-uulat sa paggamit ng memory ay isang mahalagang bahagi ng proseso ng pagsusuri sa pagganap. Ngayon ay titingnan natin ang mga nauugnay na tool sa pagsukat na maaaring magamit upang mabilang ang mga pagpapahusay na nakamit sa pamamagitan ng paggawa ng makabago ng mga aplikasyon ng Java.
Para sa higit pang impormasyon sa pagsukat ng paggamit ng memorya, tingnan ang tutorial na Quarkus na pinamagatang
Sa ibaba ay ipapakita lang namin sa iyo kung paano ihambing ang data ng paggamit ng memory para sa tatlong magkakaibang uri ng mga application (JBoss EAP, JAR package, at executable) sa pamamagitan ng pagkolekta ng data sa Linux gamit ang pmap at ps utilities.
JBoss EAP
Naglulunsad kami ng isang instance ng JBoss EAP application (tingnan ang seksyong "Pag-deploy ng helloworld" sa
$ pgrep -lf jboss
7268 java
Tandaan. Binibigyang-daan ka ng βa na opsyon na kunin ang kumpletong command line (ibig sabihin: $ pgrep -af jboss).
Ngayon ay gumagamit kami ng PID 7268 sa mga utos ng ps at pmap.
Narito kaya:
$ 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
At tulad nito:
$ 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
Tinitingnan namin ang halaga ng RSS at nakikita na ang JBoss EAP ay gumagamit ng humigit-kumulang 650 MB ng memorya.
pakete ng JAR
Inilunsad namin ang JAR application (tingnan ang seksyong "Patakbuhin ang helloworld na naka-package sa JAR" sa
$ java -jar ./target/helloworld-<version>-runner.jar
Muli naming tinitingnan ang PID gamit ang pgrep command (sa oras na ito ginagamit namin ang -a na opsyon na inilarawan sa itaas):
$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar
Nagpapatakbo kami ng ps at pmap upang sukatin ang paggamit ng memorya, ngunit ngayon para sa prosesong 6408.
Narito kaya:
$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
At tulad nito:
$ 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
Muli naming tinitingnan ang RSS at nakita na ang JAR package ay kumokonsumo ng humigit-kumulang 130 MB.
Maipapatupad na file
Inilunsad namin ang native (tingnan ang seksyong "Pagpapatakbo ng native na helloworld executable file" sa
$ ./target/helloworld-<version>-runner
Tingnan natin muli ang PID nito:
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
At pagkatapos ay ginagamit namin ang resultang proseso ID (6948) sa ps at pmap command.
Narito kaya:
$ 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
Tinitingnan namin ang RSS at nakita na ang executable file ay tumatagal ng humigit-kumulang 20 MB ng memorya.
Paghahambing ng pagkonsumo ng memorya
Kaya, nakuha namin ang mga sumusunod na numero para sa paggamit ng memorya:
- JBoss EAP - 650 MB.
- JAR package β 130 MB.
- Maipapatupad na file - 20 MB.
Malinaw, ang executable file ay tumatagal ng mas kaunting memorya.
Ibuod natin ang mga post 4 at 5
Dito at sa mga nakaraang post, tiningnan namin ang paggawa ng makabago ng mga aplikasyon ng Java gamit ang mga teknolohiyang sinusuportahan sa Quarkus (CDI at Servlet 3), pati na rin ang iba't ibang paraan upang bumuo, bumuo at magpatakbo ng mga naturang application. Ipinakita namin kung paano mangolekta ng data ng paggamit ng memorya upang suriin ang mga pagpapahusay na nakamit ng naturang pag-upgrade. Tinutulungan ka ng mga artikulong ito na maunawaan kung paano gumagana ang Quarkus at kung bakit ito kapaki-pakinabangβkung pinag-uusapan mo ang simpleng programa ng helloworld sa aming mga halimbawa o mas kumplikadong mga real-life application.
Babalik kami sa loob ng dalawang linggo na may huling post tungkol sa Quarkus - magkita-kita tayo doon!
Sa aming huling post, ipapakita namin kung paano pagsamahin ang AMQ Online at Quarkus upang makabuo ng modernong OpenShift-based na sistema ng pagmemensahe gamit ang dalawang bagong teknolohiya sa pagmemensahe. Magbasa pa
Pinagmulan: www.habr.com