Halo semuanya - ini adalah posting kelima dari seri kami tentang Quarkus! (Ngomong-ngomong, daftarkan dan buka webinar kami " Ini adalah Quarkus - kerangka kerja asli Jawa Kubernetes ", yang akan diadakan pada 27 Mei. Kami akan menunjukkan cara memulai dari awal atau mentransfer solusi yang sudah jadi)
Dalam posting sebelumnya, kami memeriksa modernisasi aplikasi Java menggunakan Quarkus yang didukung teknologi (CDI dan Servlet 3) menggunakan program helloworld dari repositori Quickstart JBoss Enterprise Application Platform (JBoss EAP) . Hari ini kita akan melanjutkan topik modernisasi dan membahas masalah konsumsi memori.Pengukuran kinerja adalah fondasi dasar dari hampir semua peningkatan, dan laporan penggunaan memori adalah bagian penting dari proses analisis kinerja. Hari ini kita akan melihat alat ukur yang relevan dengan mana Anda dapat mengukur peningkatan yang dilakukan sebagai akibat dari modernisasi aplikasi Java.Untuk informasi lebih lanjut tentang mengukur penggunaan memori, lihat manual Quarkus berjudul Mengukur Kinerja - Bagaimana kita mengukur penggunaan memori?Dan di bawah ini kami hanya menunjukkan bagaimana membandingkan data penggunaan memori dengan tiga jenis aplikasi (JBoss EAP, paket JAR dan yang dapat dieksekusi), mengumpulkan data ini di Linux menggunakan utilitas pmap dan ps.Jboss eap
Kami meluncurkan instance aplikasi JBoss EAP (lihat bagian "Menyebarkan helloworld" di posting sebelumnya ) dan kemudian melihat pengenal proses PID-nya (dalam contoh kami, 7268) dengan perintah berikut:$ pgrep -lf jboss
7268 java
Catatan. Opsi –a memungkinkan Anda untuk mengekstrak baris perintah lengkap (yaitu: $ pgrep -af jboss).Sekarang gunakan PID 7268 dalam perintah ps dan pmap.Seperti ini:$ 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
Dan seperti ini:$ 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
Kami melihat nilai RSS dan melihat bahwa JBoss EAP mengkonsumsi sekitar 650 MB memori.Paket jar
Luncurkan aplikasi JAR (lihat bagian “Luncurkan helloworld yang dikemas dalam JAR” di pos sebelumnya ):$ java -jar ./target/helloworld-<version>-runner.jar
Sekali lagi kita melihat PID menggunakan perintah pgrep (kali ini menggunakan opsi -a yang dijelaskan di atas):$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar
Kami mulai ps dan pmap untuk mengukur penggunaan memori, tetapi sekarang untuk proses 6408. Sepertiini:$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
Dan seperti ini:$ 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
Sekali lagi, lihat RSS dan lihat bahwa paket JAR mengkonsumsi sekitar 130 MB.File yang dapat dieksekusi
Luncurkan yang asli (lihat bagian "Luncurkan file yang dapat dieksekusi asli helloworld" di posting sebelumnya ):$ ./target/helloworld-<version>-runner
Sekali lagi, lihat PID-nya:$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
Dan kemudian gunakan pengidentifikasi proses yang dihasilkan (6948) dalam perintah ps dan pmap.Seperti ini:$ 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
Kami melihat RSS dan melihat bahwa file yang dapat dieksekusi menempati sekitar 20 MB memori.Bandingkan konsumsi memori
Jadi, kami mendapat angka-angka berikut tentang penggunaan memori:- JBoss EAP - 650 MB.
- Paket JAR - 130 MB.
- File yang dapat dieksekusi adalah 20 MB.
Jelas, executable membutuhkan lebih sedikit memori.Ringkas 4 dan 5 pos
Dalam posting ini dan sebelumnya, kami memeriksa masalah memodernisasi aplikasi Java menggunakan teknologi yang didukung oleh Quarkus (CDI dan Servlet 3), serta berbagai cara untuk mengembangkan, membangun dan menjalankan aplikasi tersebut. Kami menunjukkan cara mengumpulkan data tentang penggunaan memori untuk mengevaluasi peningkatan yang dilakukan sebagai hasil dari peningkatan tersebut. Artikel-artikel ini membantu Anda memahami cara kerja Quarkus dan apa manfaatnya - terlepas dari apakah kita berbicara tentang program helloworld paling sederhana dari contoh kami atau tentang aplikasi yang jauh lebih kompleks dari kehidupan nyata.Kami akan kembali dalam dua minggu dengan posting terakhir tentang Quarkus - sampai jumpa lagi!