Hər kəsə salam – bu Quarkus seriyamızdakı beşinci yazıdır! (Yeri gəlmişkən, vebinarımızı izləyin
В
Performansın ölçülməsi demək olar ki, hər hansı bir təkmilləşdirmənin əsas əsasını təşkil edir və yaddaşdan istifadə hesabatı performans təhlili prosesinin vacib hissəsidir. Bu gün biz Java proqramlarının modernləşdirilməsi ilə əldə edilən təkmilləşdirmələrin kəmiyyətini qiymətləndirmək üçün istifadə edilə bilən müvafiq ölçmə alətlərinə baxacağıq.
Yaddaşdan istifadənin ölçülməsinə dair əlavə məlumat üçün Quarkus adlı təlimata baxın
Aşağıda biz sizə pmap və ps utilitlərindən istifadə edərək Linux-da məlumat toplamaqla üç müxtəlif proqram növü (JBoss EAP, JAR paketi və icra olunan) üçün yaddaş istifadəsi məlumatlarını necə müqayisə edəcəyinizi göstərəcəyik.
JBoss EAP
Biz JBoss EAP tətbiqinin nümunəsini işə salırıq (bax: "Halloworld-un yerləşdirilməsi"
$ pgrep -lf jboss
7268 java
Qeyd edək. –a seçimi tam komanda xəttini çıxarmağa imkan verir (yəni: $ pgrep -af jboss).
İndi biz ps və pmap əmrlərində PID 7268-dən istifadə edirik.
Burada belədir:
$ 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
Və bu kimi:
$ 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 dəyərinə baxırıq və JBoss EAP-nin təxminən 650 MB yaddaş istehlak etdiyini görürük.
JAR paketi
JAR tətbiqini işə salırıq ("JAR-da paketlənmiş helloworld-u işə salın" bölməsinə baxın
$ java -jar ./target/helloworld-<version>-runner.jar
Pgrep əmrindən istifadə edərək yenidən PID-ə baxırıq (bu dəfə yuxarıda təsvir edilən -a seçimindən istifadə edirik):
$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar
Yaddaş istifadəsini ölçmək üçün ps və pmap istifadə edirik, lakin indi proses 6408 üçün.
Burada belədir:
$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
Və bu kimi:
$ 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
Yenidən RSS-ə baxırıq və JAR paketinin təxminən 130 MB istehlak etdiyini görürük.
İcra edilə bilən fayl
Doğma faylı işə salırıq ("Doğma helloworld icra edilə bilən faylı işə salmaq" bölməsinə baxın.
$ ./target/helloworld-<version>-runner
Onun PID-inə yenidən baxaq:
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
Və sonra ps və pmap əmrlərində əldə edilən proses identifikatorundan (6948) istifadə edirik.
Burada belədir:
$ 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
RSS-ə baxırıq və icra olunan faylın təxminən 20 MB yaddaş tutduğunu görürük.
Yaddaş istehlakının müqayisəsi
Beləliklə, yaddaş istifadəsi üçün aşağıdakı nömrələri əldə etdik:
- JBoss EAP - 650 MB.
- JAR paketi – 130 MB.
- İcra edilə bilən fayl - 20 MB.
Aydındır ki, icra olunan fayl daha az yaddaş tutur.
4 və 5-ci yazıları ümumiləşdirək
Bu və əvvəlki yazılarda biz Quarkus-da dəstəklənən texnologiyalardan (CDI və Servlet 3) istifadə etməklə Java proqramlarının modernləşdirilməsinə, həmçinin bu cür proqramların işlənib hazırlanması, qurulması və işə salınmasının müxtəlif yollarına baxdıq. Belə bir təkmilləşdirmə ilə əldə edilən təkmilləşdirmələri qiymətləndirmək üçün yaddaş istifadəsi məlumatlarını necə toplamaq lazım olduğunu göstərdik. Bu məqalələr sizə Quarkusun necə işlədiyini və nə üçün faydalı olduğunu başa düşməyə kömək edir – istər nümunələrimizdəki sadə helloworld proqramından, istərsə də daha mürəkkəb real həyat proqramlarından danışırsınız.
İki həftədən sonra Quarkus haqqında son yazı ilə qayıdacayıq - orada görüşənədək!
Son yazımızda iki yeni mesajlaşma texnologiyasından istifadə edərək müasir OpenShift əsaslı mesajlaşma sistemi qurmaq üçün AMQ Online və Quarkus-u necə birləşdirəcəyimizi göstərəcəyik. Oxuyun
Mənbə: www.habr.com