Барлығына сәлем – бұл біздің Quarkus сериясындағы бесінші пост! (Айтпақшы, вебинарымызды қараңыз
В
Өнімділікті өлшеу кез келген дерлік жаңартудың негізгі негізі болып табылады және жадты пайдалану туралы есеп өнімділікті талдау процесінің маңызды бөлігі болып табылады. Бүгін біз Java қолданбаларын модернизациялау арқылы қол жеткізілген жақсартуларды сандық бағалау үшін пайдалануға болатын тиісті өлшеу құралдарын қарастырамыз.
Жадты пайдалануды өлшеу туралы қосымша ақпарат алу үшін Quarkus оқулығын қараңыз
Төменде біз pmap және ps утилиталарын пайдаланып Linux жүйесінде деректерді жинау арқылы қолданбалардың үш түрлі түрі (JBoss EAP, JAR бумасы және орындалатын) үшін жадты пайдалану деректерін қалай салыстыруға болатынын көрсетеміз.
JBoss EAP
Біз JBoss EAP қолданбасының данасын іске қосамыз («Helloworld қолдану» бөлімін қараңыз).
$ pgrep -lf jboss
7268 java
Ескерту: –a опциясы толық пәрмен жолын шығаруға мүмкіндік береді (яғни: $ pgrep -af jboss).
Енді біз ps және pmap командаларында PID 7268 пайдаланамыз.
Мұнда осылай:
$ 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
Және де:
$ 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 мәніне қарап, JBoss EAP шамамен 650 Мбайт жадты тұтынатынын көреміз.
JAR пакеті
Біз JAR қолданбасын іске қосамыз («JAR пакетінде салынған helloworld іске қосу» бөлімін қараңыз
$ java -jar ./target/helloworld-<version>-runner.jar
Біз pgrep пәрменін пайдаланып PID қайта қараймыз (бұл жолы жоғарыда сипатталған -a опциясын қолданамыз):
$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar
Біз жадты пайдалануды өлшеу үшін ps және pmap іске қосамыз, бірақ қазір 6408 процесі үшін.
Мұнда осылай:
$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
Және де:
$ 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
Біз RSS-ке қайта қараймыз және JAR бумасы шамамен 130 МБ жұмсайтынын көреміз.
Орындалатын файл
Біз жергілікті файлды іске қосамыз («Негізгі helloworld орындалатын файлын іске қосу» бөлімін қараңыз.
$ ./target/helloworld-<version>-runner
Оның PID-ін қайтадан қарастырайық:
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
Содан кейін біз ps және pmap командаларында алынған процестің идентификаторын (6948) қолданамыз.
Мұнда осылай:
$ 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-ге қарап, орындалатын файл шамамен 20 Мбайт жадты алатынын көреміз.
Жадты тұтынуды салыстыру
Сонымен, біз жадты пайдалану үшін келесі сандарды алдық:
- JBoss EAP - 650 МБ.
- JAR пакеті – 130 МБ.
- Орындалатын файл – 20 МБ.
Әлбетте, орындалатын файл әлдеқайда аз жадты алады.
4 және 5 хабарламаларды қорытындылайық
Осы және алдыңғы жазбаларда біз Quarkus-та (CDI және Servlet 3) қолдау көрсетілетін технологияларды пайдалана отырып, Java қолданбаларын модернизациялауды, сондай-ақ мұндай қолданбаларды әзірлеудің, құрудың және іске қосудың әртүрлі жолдарын қарастырдық. Біз осындай жаңарту арқылы қол жеткізілген жақсартуларды бағалау үшін жадты пайдалану деректерін қалай жинау керектігін көрсеттік. Бұл мақалалар Quarkus қалай жұмыс істейтінін және оның неліктен пайдалы екенін түсінуге көмектеседі — мысалдарымыздағы қарапайым helloworld бағдарламасы немесе нақты өмірдегі әлдеқайда күрделі қолданбалар туралы айтып отырсыз ба.
Біз екі аптадан кейін Кваркус туралы соңғы постпен ораламыз - сонда кездескенше!
Соңғы жазбамызда біз екі жаңа хабар алмасу технологиясын қолдана отырып, OpenShift негізіндегі заманауи хабар алмасу жүйесін құру үшін AMQ Online және Quarkus біріктіру жолын көрсетеміз. Оқыңыз
Ақпарат көзі: www.habr.com