LFCS: Fylgstu með auðlindanotkun Linux ferla og stilltu ferlitakmörk á grundvelli hvers notanda - 14. hluti
Vegna nýlegra breytinga á LFCS vottunarprófsmarkmiðum sem gilda frá 2. febrúar 2016, bætum við einnig nauðsynlegum greinum við LFCE seríuna.
Sérhver Linux kerfisstjóri þarf að vita hvernig á að sannreyna heilleika og framboð á vélbúnaði, auðlindum og lykilferlum. Að auki verður að setja tilföngstakmörk á hvern notanda einnig að vera hluti af hæfileika hans/hennar.
Í þessari grein munum við kanna nokkrar leiðir til að tryggja að kerfið, bæði vélbúnaður og hugbúnaður, hegði sér rétt til að forðast hugsanleg vandamál sem geta valdið óvæntum framleiðslustöðvun og peningatapi.
Tölfræði Linux skýrslugerðar
Með mpstat er hægt að skoða starfsemina fyrir hvern örgjörva fyrir sig eða kerfið í heild sinni, bæði sem skyndimynd í eitt skipti eða virkt.
Til að nota þetta tól þarftu að setja upp sysstat:
# yum update && yum install sysstat [On CentOS based systems] # aptitutde update && aptitude install sysstat [On Ubuntu based systems] # zypper update && zypper install sysstat [On openSUSE systems]
Lestu meira um sysstat og tól þess á Lærðu Sysstat og tól þess mpstat, pidstat, iostat og sar í Linux
Þegar þú hefur sett upp mpstat skaltu nota það til að búa til skýrslur um tölfræði örgjörva.
Til að birta 3 alþjóðlegar skýrslur um örgjörvanotkun (-u
) fyrir alla örgjörva (eins og gefið er til kynna með -P
ALL) með 2 sekúndna millibili, gerðu:
# mpstat -P ALL -u 2 3
Linux 3.19.0-32-generic (linux-console.net) Wednesday 30 March 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:09 IST all 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 IST 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11:41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 IST 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:11 IST all 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 IST 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50 11:41:11 IST 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68 11:41:11 IST 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:13 IST all 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11:41:13 IST 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54 11:41:13 IST 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75 11:41:13 IST 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:13 IST 3 6.93 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 92.57 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: all 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 Average: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87 Average: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 88.78 Average: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35 Average: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59
Til að skoða sömu tölfræði fyrir tiltekinn örgjörva (CPU 0 í eftirfarandi dæmi), notaðu:
# mpstat -P 0 -u 2 3
Linux 3.19.0-32-generic (linux-console.net) Wednesday 30 March 2016 _x86_64_ (4 CPU) 11:42:08 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:42:10 IST 0 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:42:12 IST 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37 11:42:14 IST 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74 Average: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23
Úttak ofangreindra skipana sýnir þessa dálka:
CPU
: Örgjörvanúmer sem heiltala, eða orðið allt sem meðaltal fyrir alla örgjörva.%usr
: Hlutfall örgjörvanotkunar þegar forrit eru keyrð á notendastigi.%nice
: Sama og%usr
, en með ágætum forgangi.%sys
: Hlutfall örgjörvanotkunar sem átti sér stað þegar kjarnaforrit voru keyrð. Þetta felur ekki í sér tíma sem fer í að takast á við truflanir eða meðhöndla vélbúnað.%iowait
: Hlutfall tíma þegar tiltekinn örgjörvi (eða allur) var aðgerðalaus, þar sem auðlindafrekur I/O aðgerð var áætluð á þeim örgjörva. Nánari útskýringu (með dæmum) má finna hér.%irq
: Hlutfall tíma sem fer í að þjónusta truflanir á vélbúnaði.%soft
: Sama og%irq
, en með hugbúnaðartruflunum.%stela
: Hlutfall tíma sem varið er í ósjálfráða bið (stela eða stolinn tíma) þegar sýndarvél, sem gestur, er að „vinna“ athygli yfirsýnarans á meðan hún keppir um örgjörvana. . Þetta gildi ætti að vera eins lítið og mögulegt er. Hátt gildi á þessu sviði þýðir að sýndarvélin er að stöðvast – eða mun verða það bráðum.%gestur
: Hlutfall tíma sem fer í að keyra sýndargjörva.%idle
: hlutfall tíma þegar örgjörvi(r) voru ekki að framkvæma nein verkefni. Ef þú sérð lágt gildi í þessum dálki er það vísbending um að kerfið sé undir miklu álagi. Í því tilviki þarftu að skoða vinnslulistann betur, eins og við munum ræða eftir eina mínútu, til að komast að því hvað veldur.
Til að setja örgjörvann undir nokkuð mikið álag skaltu keyra eftirfarandi skipanir og keyra síðan mpstat (eins og gefið er upp) í sérstakri útstöð:
# dd if=/dev/zero of=test.iso bs=1G count=1 # mpstat -u -P 0 2 3 # ping -f localhost # Interrupt with Ctrl + C after mpstat below completes # mpstat -u -P 0 2 3
Að lokum skaltu bera saman við úttak mpstat undir \venjulegum kringumstæðum:
Eins og þú sérð á myndinni hér að ofan var CPU 0 undir miklu álagi í fyrstu tveimur dæmunum, eins og gefið er til kynna með %idle
dálknum.
Í næsta kafla munum við ræða hvernig á að bera kennsl á þessi auðlindaþungu ferli, hvernig á að afla frekari upplýsinga um þau og hvernig á að grípa til viðeigandi aðgerða.
Tilkynning um Linux ferla
Til að skrá ferla sem flokka þau eftir örgjörvanotkun munum við nota vel þekktu ps
skipunina með -eo
(til að velja alla ferla með notendaskilgreindu sniði) og --sort
(til að tilgreina sérsniðna flokkunarröð) valkosti, eins og svo:
# ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu
Skipunin hér að ofan mun aðeins sýna PID
, PPID
, skipunina sem tengist ferlinu og hlutfall örgjörva og vinnsluminni notkunar raðað eftir hlutfalli örgjörvanotkunar í lækkandi röð . Þegar það er keyrt við stofnun .iso skrárinnar eru hér fyrstu línurnar af úttakinu:
Þegar við höfum borið kennsl á ferli sem hefur áhuga (eins og það með PID=2822
), getum við farið í /proc/PID
(/proc/2822< /kóði> í þessu tilfelli) og gerðu möppuskráningu.
Þessi mappa er þar sem nokkrar skrár og undirmöppur með nákvæmum upplýsingum um þetta tiltekna ferli eru geymdar á meðan það er í gangi.
/proc/2822/io
inniheldur IO tölfræði fyrir ferlið (fjöldi stafa og bæta lesin og skrifuð, meðal annars við IO aðgerðir)./proc/2822/attr/current
sýnir núverandi SELinux öryggiseiginleika ferlisins./proc/2822/cgroup
lýsir eftirlitshópunum (stutt cgroups) sem ferlið tilheyrir ef CONFIG_CGROUPS kjarnastillingarvalkosturinn er virkur, sem þú getur staðfest með:
# cat /boot/config-$(uname -r) | grep -i cgroups
Ef valkosturinn er virkur ættirðu að sjá:
CONFIG_CGROUPS=y
Með því að nota cgroups
geturðu stjórnað magni leyfilegrar auðlindanotkunar eftir ferli eins og útskýrt er í köflum 1 til 4 í Control Groups hlutanum í Ubuntu 14.04 Server skjölunum.
/proc/2822/fd
er skrá sem inniheldur einn táknrænan hlekk fyrir hverja skráarlýsingu sem ferlið hefur opnað. Eftirfarandi mynd sýnir þessar upplýsingar fyrir ferlið sem var byrjað í tty1 (fyrsta flugstöðinni) til að búa til .iso myndina:
Myndin hér að ofan sýnir að stdin (skráarlýsing 0), stdout (skráarlýsing 1) og stderr (skráarlýsing 2) eru varpað á /dev/zero, /root/test.iso og /dev/tty1, í sömu röð.
Frekari upplýsingar um /proc
er að finna í \The /proc
skráakerfi skjalinu sem Kernel.org heldur utan um og í Linux forritarahandbókinni.
Að setja auðlindamörk á grundvelli hvers notanda í Linux
Ef þú ert ekki varkár og leyfir hvaða notanda sem er að keyra ótakmarkaðan fjölda ferla gætirðu að lokum lent í óvæntri kerfislokun eða læst úti þegar kerfið fer í ónothæft ástand. Til að koma í veg fyrir að þetta gerist ættirðu að setja takmörk á fjölda ferla sem notendur geta hafið.
Til að gera þetta, breyttu /etc/security/limits.conf og bættu við eftirfarandi línu neðst í skránni til að setja mörkin:
* hard nproc 10
Fyrsta reitinn er hægt að nota til að gefa til kynna annað hvort notanda, hóp eða þá alla (*)
, en seinni reiturinn framfylgir harðri takmörkun á fjölda ferla (nproc) upp í 10. Til að beita breytingum, það er nóg að skrá þig út og inn aftur.
Svona, við skulum sjá hvað gerist ef tiltekinn notandi annar en root (annaðhvort lögmætur einn eða ekki) reynir að ræsa skel gaffalsprengju. Ef við hefðum ekki innleitt takmörk myndi þetta upphaflega ræsa tvö tilvik af falli og síðan afrita hvert þeirra í endalausri lykkju. Þannig myndi það að lokum koma kerfinu þínu í skrið.
Hins vegar, með ofangreindar takmarkanir til staðar, tekst gaffalsprengjan ekki árangur en notandinn verður samt læstur þar til kerfisstjórinn drepur ferlið sem tengist henni:
ÁBENDING: Aðrar mögulegar takmarkanir sem ulimit gerir mögulegar eru skráðar í limits.conf
skránni.
Linux Önnur vinnslutól
Til viðbótar við verkfærin sem rædd voru áður gæti kerfisstjóri einnig þurft að:
a) Breyta framkvæmdarforgangi (notkun kerfisauðlinda) ferlis með því að nota renice. Þetta þýðir að kjarninn mun úthluta meira eða minna kerfisauðlindum í ferlið á grundvelli úthlutaðs forgangs (tala sem almennt er þekkt sem \niceness á bilinu -20
til 19).
Því lægra sem gildið er, því meiri framkvæmdarforgangur. Venjulegir notendur (aðrir en rót) geta aðeins breytt fínleika ferla sem þeir eiga í hærra gildi (sem þýðir lægri framkvæmdarforgang), en rót getur breytt þessu gildi fyrir hvaða ferli sem er og getur aukið eða lækkað það.
Grunnsetningafræði renice er sem hér segir:
# renice [-n] <new priority> <UID, GID, PGID, or empty> identifier
Ef rifrildið eftir nýja forgangsgildið er ekki til staðar (tómt) er það sjálfgefið stillt á PID. Í því tilviki er fínleiki ferlisins með PID=auðkenni stillt á
b) Trufla eðlilega framkvæmd ferlis þegar þörf krefur. Þetta er almennt þekkt sem að „drepa“ ferlið. Undir hettunni þýðir þetta að senda ferlinu merki um að klára framkvæmd þess á réttan hátt og losa öll notuð tilföng á skipulegan hátt.
Til að drepa ferli skaltu nota kill skipunina sem hér segir:
# kill PID
Að öðrum kosti geturðu notað pkill til að stöðva öll ferli tiltekins eiganda (-u)
, eða hópeiganda (-G)
, eða jafnvel ferla sem hafa PPID sameiginlegt (-P)
. Þessum valkostum gæti verið fylgt eftir með tölulegri framsetningu eða raunverulegu nafni sem auðkenni:
# pkill [options] identifier
Til dæmis,
# pkill -G 1000
mun drepa alla ferla í eigu hóps með GID=1000.
Og,
# pkill -P 4993
mun drepa alla ferla þar sem PPID er 4993.
Áður en þú keyrir pkill er góð hugmynd að prófa niðurstöðurnar með pgrep fyrst, kannski nota -l
möguleikann líka til að skrá nöfn ferlanna. Það tekur sömu valkosti en skilar aðeins PID ferla (án þess að grípa til frekari aðgerða) sem myndi drepast ef pkill er notað.
# pgrep -l -u gacanepa
Þetta er sýnt á næstu mynd:
Samantekt
Í þessari grein höfum við kannað nokkrar leiðir til að fylgjast með auðlindanotkun til að sannreyna heilleika og framboð mikilvægra vélbúnaðar- og hugbúnaðarhluta í Linux kerfi.
Við höfum líka lært hvernig á að grípa til viðeigandi aðgerða (annaðhvort með því að aðlaga framkvæmdarforgang tiltekins ferlis eða með því að slíta því) við óvenjulegar aðstæður.
Við vonum að hugtökin sem útskýrð eru í þessari kennslu hafi verið gagnleg. Ef þú hefur einhverjar spurningar eða athugasemdir skaltu ekki hika við að hafa samband við okkur með því að nota snertingareyðublaðið hér að neðan.