AIX жүйесінде Java өнімділігін оңтайландыру: 4-бөлім: енгізу/шығару және желідегі кедергілерді жою

Новости мира

Бұл AIX жүйесінде Java өнімділігін баптау туралы бес бөлімнен тұратын топтаманың төртінші мақаласы. Осы мақаланы оқуды жалғастырмас бұрын, осы сериядағы алдыңғы мақалаларды қайта қарап шығу ұсынылады.

Бұл мақалада өнімділікке кедергі болуы мүмкін тағы екі сала туралы айтылады:
тор;
дискіні енгізу/шығару (енгізу/шығару).

Әдетте, қарастырылатын мәселелер AIX-ке тән және Java қолданбасынан тәуелсіз конфигурациялануы керек, сондықтан бұл мақала алдыңғы екеуінен (2 және 3-бөліктер) айырмашылығы, конфигурациялау процесі үшін қажетті ақпаратты алуға бағытталған. Бұл мақалада тек бірнеше кеңестер бар, бірақ осы кеңестермен біріктірілген құралдардың тиімділігін жалпы талқылау өнімділікті реттеу үшін жеткілікті ақпаратты береді.

Басында

Енгізу/шығару және желідегі тығырық

Бұл мақала енгізу/шығару немесе желі кедергіге айналатын жағдайларға бағытталған.

Осы сериядағы алдыңғы мақалалардан әрбір шағын құрамдастың үлкен суретке қалай сәйкес келетінін көруге болады. Кеңестерді қолдану салаларына бөлуге әрекет жасалды, бірақ бұл жіктеу ешбір жағдайда барлығын қамтитын емес. Желі мен енгізу/шығару ақауларының көздерін табу қиын, бірақ олардың қолданбаның өнімділігіне қалай әсер ететінін әлі де бағалауға болады. Қолданбаны жақсы білу ғана мәселені шешеді. Мысалы, осы топтаманың басында біз үйменің беттелмейтінін тексерудің маңыздылығын талқыладық. -Xmx қосқышы орнатқан ең үлкен үйме өлшемі жүйеде орнатылған физикалық жадтың жалпы көлемінен аз болуы керек (bootinfo -r немесе lsattr -El sys0 -a realmem көмегімен анықталған, үйден шықпау керек AIX пәрмендерін қараңыз).

Құралдар (мысалы, topas және iostat) әртүрлі дискілерді пайдалану белсенділігін көрсете алады, бірақ көп жағдайда кедергі GC циклінен немесе белгілі функционалды код бөлігінен туындайды, сондықтан қолданбаны жақсы білсеңіз, оны оңай табуға болады. бөгет. Filemon сияқты құралдар соқыр баптауды болдырмай, қай файлдарға қол жеткізгенін айтып береді. Егер Java қолданбасының өнімділігі дұрыс емес жүйе конфигурациясына байланысты төмендесе, жүйенің өнімділігін тұтастай бағалау керек. Мысалы, дискілік ішкі жүйенің тығынын жою үшін деректерді дұрыс тарату немесе жылдамырақ дискілерді сатып алу қажет болуы мүмкін. Осы мақаланың ауқымынан тыс бұл тақырып IBM eServer pSeries өнімділігін және өлшемдерін түсіну сияқты IBM Redbooks сериясындағы кітаптарда егжей-тегжейлі қарастырылған.

Желі буферлерін және басқа желі параметрлерін реттеу желіні белсенді пайдаланатын қолданбаларға айтарлықтай әсер етуі мүмкін. Желі параметрлерін баптау туралы жақсы ақпарат көзі өнімділікті басқару нұсқаулығының Желі бапталатын параметрлер бөлімі болып табылады. Thewall, socketthresh, sbmax, somaxconnect, tcp_sendspace, tcp_recvspace, rfc1323, т.б. конфигурациялау үшін жиі пайдаланылады.Бұл құралдармен берілген ақпарат тек AIX немесе Java үшін ғана емес, сонымен қатар кез келген желіні қажет ететін қолданбаларға қатысты, сондықтан оларды пайдалану өнімділікті реттеудегі алғашқы қадам.

Осы бөлімнің қалған бөлігі кейбір жалпы құралдарға және Java-ға тән ақаулықтарды жоюға қысқаша кіріспе береді. Қосымша ақпаратты AIX 5L өнімділік құралдарының анықтамалығын және IBM eServer pSeries өнімділігі мен өлшемін түсінуді қараңыз.

vmstat

Сіз әмбебап vmstat пәрменін пайдаланған шығарсыз. Енгізу/шығару ақпараты үшін cpu бөліміндегі wa (I/O күту) бағанының мәнін қараңыз. Егер бұл мән үлкен болса, дискілер қиындық тудыруы мүмкін және толық енгізу/шығару ақпаратын көрсету үшін iostat іске қосу керек.

иостат

Iostat утилитасы енгізу/шығару ішкі жүйесіндегі кедергілерді анықтауға арналған тамаша құрал болып табылады. Ол барлық дискілер үшін оқу және жазу барысын көрсетеді. Бұл енгізу/шығаруды бірнеше дискілерге қашан тарату керектігін анықтауға арналған тамаша құрал. Бұған қоса, бұл құрал vmstat сияқты бірдей CPU әрекетінің есептерін жасайды.

Ең алдымен, жүйенің не істейтінін анықтау керек. Мұны істеу үшін қолданба жұмыс істеп тұрған кезде қарапайым iostat -s пәрменін беріңіз. Осы пәрменді шығару үлгісі:

tty: tin tout avg-cpu: % пайдаланушы % жүйе % бос % iowait
0,3 232,9 13,8 19,1 27,4 39,6

Дискілер: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 28,7 291,4 35,0 176503 2744795
hdisk1 0,0 0,4 0,0 3537 0
hdisk7 1,7 34,9 9,8 8920 341112
hdisk14 24,5 1206,1 36,2 1188404 10904509
hdisk18 0,0 1,2 0,1 10052 2046
hdisk8 2,1 36,8 10,5 10808 357910

Жүйе енгізу/шығару әрекеттерін қанша уақыт күтіп тұрғанын көру үшін %iawait мәнін қараңыз. Жүйе файл пейджингін пайдаланса, бұл көрінетін болады, бірақ бұл мән жүйеге не болып жатқанын анықтау үшін жеткіліксіз. Мысалы, егер қолданба файлдарды ретімен жазып жатса, онда үлкен %iowait мәні қалыпты болып табылады.

%tm_act белсенді дискіні пайдалану пайызын көрсетеді. Жоғарыдағы із өте қызықты сценарийді көрсетеді — %iowait 40%-ға жақын болды, бірақ tm_acts 30% шамасында болған 100%-дан әлдеқайда аз болды. Сынақ жүйесі Fiber Channel дискі массивіне қосылды және кедергі SAN сақтау жүйесіне апаратын жол болды. Нақты сандар түскеннен кейін мұның бәрі анық болды!

Сондай-ақ адаптерлер үшін tps және KBps (және оқу және жазу жылдамдығы) басып шығаратын # iostat -at немесе iostat -sat … пайдалануға болады. -s жалауы жалпы жүйе статистикасын басып шығаруды білдіреді.

netstat

Желіні орнату кезінде netstat зерттеуді бастау үшін тамаша құрал болып табылады. netstat -m пәрменін mbuf жадының пайдаланылуын бақылау үшін пайдалануға болады, ол ұяшық пен желі жадын пайдалану көрсеткіші ретінде қызмет ете алады. Егер no -o extendednetstats=1 пайдаланылмаса, netstat -m пәрмені егжей-тегжейлі ақпаратты көрсетеді, бірақ өнімділікке әсер етуі мүмкін, сондықтан бұл опция тек диагностикалық мақсаттар үшін пайдаланылуы керек. netstat -m пайдаланған кезде есептің басында ең құнды ақпарат көрсетіледі, мысалы: