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:

  1. CPU: Örgjörvanúmer sem heiltala, eða orðið allt sem meðaltal fyrir alla örgjörva.
  2. %usr: Hlutfall örgjörvanotkunar þegar forrit eru keyrð á notendastigi.
  3. %nice: Sama og %usr, en með ágætum forgangi.
  4. %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ð.
  5. %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.
  6. %irq: Hlutfall tíma sem fer í að þjónusta truflanir á vélbúnaði.
  7. %soft: Sama og %irq, en með hugbúnaðartruflunum.
  8. %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.
  9. %gestur: Hlutfall tíma sem fer í að keyra sýndargjörva.
  10. %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.

  1. /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).
  2. /proc/2822/attr/current sýnir núverandi SELinux öryggiseiginleika ferlisins.
  3. /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.