Managementul proceselor

Lucrează pentru administratorul de sistem

Deși gestionarea resurselor de sistem, inclusiv a proceselor, este sarcina administratorului de sistem local, este normal ca și utilizatorul mediu să învețe ceva în acest sens, mai ales în măsura în care se referă la performanța optimă a propriilor procese.

Vom vorbi puțin despre performanța sistemului la nivel teoretic, dar nu vom aborda optimizarea echipamentelor și a altor proceduri avansate. În schimb, vom examina problemele presante cu care se confruntă un utilizator normal și acțiunile pe care le poate lua un utilizator pentru a asigura utilizarea optimă a resurselor disponibile. Așa cum vom învăța în secțiunea următoare, trebuie să ne gândim înainte de a acționa.

Figura 4.2. Ai putea merge mai repede?

Managementul proceselor

Cât timp va dura?

Bash oferă o comandă de timp încorporată. care arată cât timp durează comanda. Calculează timpul cu o precizie ridicată și poate fi utilizat cu orice comandă. În exemplul de mai jos, este nevoie de aproximativ un minut și jumătate pentru a face această carte:

Comanda de timp GNU în / usr / bin (spre deosebire de versiunea shell-ului încorporat) afișează mai multe informații care pot fi formate în diferite moduri. Acesta arată, de asemenea, stadiul de finalizare a echipei și timpul total scurs. Aceeași comandă ca mai sus, folosind timp independent. dă următoarea concluzie:

Pentru informații complete, consultați din nou paginile de informații.

execuție

Pentru utilizatori, eficiența înseamnă executarea rapidă a comenzilor. Pentru administratorul de sistem, pe de altă parte, aceasta înseamnă mult mai mult: administratorul optimizează performanța întregului sistem, inclusiv utilizatorii, toate programele și daemoanele. Performanța unui sistem poate depinde de o mie de lucruri nesemnificative care nu sunt luate în considerare de comanda de timp:

  • programul în execuție este prost scris sau utilizează corect computerul
  • accesul la discuri, controlere, afișare și toate celelalte tipuri de interfețe
  • accesibilitatea sistemelor la distanță (performanța rețelei)
  • numărul de utilizatori din sistem, numărul de utilizatori care lucrează în același timp.
  • timpul zilei
  • .

Pe scurt, sarcina depinde de ceea ce este normal pentru sistemul dvs. Pe vechiul meu P133 există un paravan de protecție, un server SSH, un server de fișiere, un serviciu de rutare, un server de tip sendmail, un server proxy și alte servicii, toți nu se plâng de șapte utilizatori conectați; sarcina este încă 0 sau în limitele normale. Unele sisteme (multiprocesor) pe care le-am văzut au fost destul de fericite cu o încărcătură de 67. Există o singură modalitate de a afla care este sarcina normală - o verifică în mod regulat. Dacă nu faceți acest lucru, veți putea estima încărcarea sistemului numai cu timpul de răspuns pe linia de comandă, ceea ce reprezintă o măsură foarte dificilă, deoarece această viteză depinde de sute de alte motive.

Pot să fac ceva ca utilizator?

Un mediu mare încetinește munca. Dacă aveți mai multe variabile de mediu (în loc de variabile shell), căi de căutare lungi, care nu sunt optimizate (erori în mediul PATH setări variabile), și există mai multe opțiuni, care sunt, de obicei făcute „din zbor“, sistemul va avea nevoie de mai mult timp pentru a căuta și citirea datelor.

În X, managerii de ferestre și mediile de birou pot chiar "mânca" procesorul. De fapt, trebuie să plătiți pentru un desktop fantastic, chiar dacă îl puteți descărca gratis, pentru că majoritatea desktopurilor sunt livrate cu programe de completare pe termen nelimitat. Modesty se va dovedi a fi o virtute dacă nu cumpărați un computer nou în fiecare an.

Prioritatea sau importanța unui loc de muncă este determinată de numărul său frumos. Un program cu un număr mare de prieteni este prietenos cu alte programe, cu alți utilizatori și cu sistemul; și anume acest program nu este o chestiune importantă. Un număr frumos mic înseamnă o sarcină mai importantă care va necesita mai multe resurse fără a le împărtăși.

Îmbunătățirea performanței unui loc de muncă prin creșterea numărului său bun este utilă numai pentru procesele care folosesc mult timp procesorului (compilatoare, aplicații matematice, etc.). Procesele care accesează în mod constant I / O au o prioritate mai mare (un număr frumos scăzut), de exemplu, intrarea tastaturii primește întotdeauna cea mai mare prioritate în sistem.

Prioritatea programelor este determinată folosind comanda plăcută.

Programe interactive.
Este o idee proastă de a efectua ceva frumos sau renal în legătură cu un program sau o activitate interactivă care se desfășoară în prim-plan.

Resursele CPU

Pe fiecare sistem Linux, multe programe necesită simultan resursele procesorului (procesoarelor), chiar dacă sunteți singurul utilizator din sistem. Fiecare program de lucru are nevoie de un anumit număr de cicluri de CPU. Există momente în care ciclurile procesorului nu sunt suficiente, deoarece sunt prea ocupate. Comanda de uptime este extrem de inexactă (numai afișajele medii, trebuie să știți că acest lucru este normal), dar este departe de a fi inutil. Există câteva acțiuni pe care le puteți lua dacă credeți că procesorul dvs. cauzează blocarea sistemului dvs.:

  • Efectuați programe grele când sarcina este scăzută. Acest lucru se poate face în sistemul dvs. pe timp de noapte. Consultați secțiunea următoare privind planificarea.
  • Împiedicați sistemul să facă muncă inutilă: opriți demonii și programele pe care nu le folosiți, utilizați localizați în loc de a găsi greu.
  • Efectuați mai multe sarcini cu o prioritate mai mică.

Dacă nici una dintre aceste soluții nu este o opțiune în situația dvs. particulară, puteți actualiza procesorul. Pe o mașină UNIX, aceasta este o sarcină pentru administratorul de sistem.

Resursele de memorie

Când procesele actuale de funcționare se așteaptă la o memorie mai mare decât cea disponibilă fizic în sistem, Linux nu se va prăbuși; va începe paginare sau swapping, ceea ce înseamnă că procesul utilizează memoria pe disc sau spațiu de swap, conținutul memoriei fizice (partea de a rula programe sau programe întregi, în cazul pompare) pe disc, permițând astfel de memorie fizică să se ocupe de mai multe procese în mișcare. Acest lucru încetinește suficient sistemul, deoarece accesul la disc este mult mai lent decât accesarea memoriei. Comanda superioară poate fi utilizată pentru a afișa numărul de memorie și de paginare utilizate. Sistemele care utilizează glibc oferă comenzi memusage și memusagestat pentru a vizualiza utilizarea memoriei.

Dacă descoperiți că utilizați o mulțime de spațiu de memorie și de paginare, puteți încerca:

  • Întreruperea, oprirea sau remaparea frumos pentru acele programe care utilizează cea mai mare parte a memoriei.
  • Adăugarea de memorie suplimentară (și, în unele cazuri, mai mult spațiu de paginare) în sistem.
  • Configurarea performanțelor sistemului care depășește domeniul de aplicare al acestui document. Vedeți lista din Anexa A, "Unde să mergem în continuare?" Pentru supliment.

I / O Resurse (I / O)

Deși constrângerile de I / O sunt principala cauză a stresului pentru administratorii de sistem, sistemul Linux oferă utilități destul de slabe pentru măsurarea performanțelor I / O. Instrumente ps. vmstat și top da o idee despre cât de multe programe sunt în așteptare pentru I / O; netstat afișează interfața de statistici de rețea, dar, de fapt, nu există instrumente pentru măsurarea răspunsului I / O normal la pornirea sistemului, iar comanda iostat oferă o imagine de ansamblu asupra utilizării generale a I / O. Există diferite aplicații grafice pentru afișarea rezultatelor acestor comenzi într-o formă ușor de înțeles.

Fiecare dispozitiv are probleme proprii, dar lățimea de bandă a interfețelor de rețea și lărgimea de bandă a unităților sunt cele două blocaje principale în performanța I / O.

Probleme de rețea I / O:

Cantitatea de date transmise prin rețea este mai mare decât capacitatea rețelei, rezultând o execuție lentă a fiecărei sarcini legate de rețea pentru toți utilizatorii. Acest lucru poate fi rezolvată prin curățarea rețelei (care implică în principal protocoale dezactivarea și servicii care nu aveți nevoie) sau prin reconfigurarea rețelei (de exemplu, utilizarea de subrețele, înlocuirea nodurilor cu switch-uri, modernizarea interfețe și echipamente).

  • Probleme de integritate a rețelei:

Se întâmplă atunci când datele sunt transmise incorect. Soluția la acest tip de problemă poate fi realizată numai prin izolarea elementului defect și înlocuirea acestuia.

Probleme de intrare / ieșire pe disc:

  • pentru fiecare proces viteza de transmisie este prea mică:

Viteza de citire și scriere pentru un anumit proces nu este suficientă.

  • cumulativ rata de transfer prea scăzută:

Lățimea maximă totală de bandă pe care sistemul o poate furniza pentru toate programele în derulare este insuficientă.

Este mai dificil să se detecteze acest tip de problemă și de obicei necesită echipament suplimentar pentru împărțirea fluxurilor de date între autobuze, controlere și discuri, dacă problema este cauzată de supraîncărcarea echipamentului. O soluție la aceasta este o configurație RAID optimizată pentru acțiuni I / O. Deci ai ocazia să rămâi cu același echipament. Înainte de a îmbunătăți lățimea de bandă a autobuzelor, a controlorilor și a discurilor, puteți încerca întotdeauna alte opțiuni.

Dacă supraîncărcarea nu este cauza, poate că echipamentul dvs. se deteriorează treptat sau este conectat incorect la sistem. Verificați contactele, conectorii și conectorii pentru a începe.

Lista de membri

Utilizatorii pot fi împărțiți în mai multe clase, în funcție de relația lor cu utilizarea resurselor:

  • Utilizatorii care execută un număr mare de mici locuri de muncă: tu, un utilizator Linux începător, de exemplu.
  • Utilizatorii care execută sarcini relativ puține, dar mari: utilizatorii care lucrează cu modelare, calcule, emulatori sau alte programe care consumă o mulțime de memorie și, de obicei, acești utilizatori sunt însoțiți de o cantitate mare de fișiere de date.
  • Utilizatorii care execută câteva sarcini, dar folosesc mult timp CPU (dezvoltatori, etc.).

Puteți vedea că cerințele de sistem pot fi diferite pentru fiecare clasă de utilizatori și, prin urmare, este dificil să satisfaceți pe toți. Dacă lucrați la un sistem cu mai mulți utilizatori, este util (și plăcut) să învățați obiceiurile celorlalți utilizatori ai sistemului, pentru a obține cele mai multe din acesta pentru sarcinile specifice.

Instrumente grafice

O multitudine de instrumente de monitorizare sunt disponibile pentru mediul grafic. Mai jos este o captură de ecran a sistemului Gnome System Monitor, care poate afișa și căuta informații despre procese și monitorizează resursele sistemului:

Figura 4.3. Sistem de monitorizare Gnome

Managementul proceselor

Există, de asemenea, câteva pictograme utile pe care le puteți instala pe bara de activități, cum ar fi monitoarele de disc, memoria și congestia. Xload este o altă aplicație X mică pentru monitorizarea sistemului de boot. Alege propriile tale preferințe.

Întrerupeți procesele

Ca utilizator neavizat, nu vă puteți afecta propriile procese. Am văzut deja cum puteți afișa procesele și puteți filtra procesele care sunt specifice unui anumit utilizator și, de asemenea, știți care sunt posibilele limitări. Când vedeți că unul dintre procesele dvs. consumă prea multe resurse de sistem, există două lucruri pe care le puteți face:

  • Faceți procesul să utilizeze mai puține resurse, fără a le întrerupe;
  • Opriți procesul în totalitate.

În cazul în care doriți ca procesul să continue, dar, de asemenea, doriți să dați șansa altor procese din sistem, puteți suprascrie procesul frumos. Împreună cu utilizarea comenzilor frumoase sau renale. de sus este o modalitate simplă de a detecta procesul (e) tulburi și de a reduce prioritatea.

Aflați procesul din coloana "NI", va avea cel mai probabil o prioritate negativă. Introduceți r și introduceți ID-ul procesului pentru care doriți să înlocuiți numărul frumos. Apoi introduceți o valoare frumoasă, de exemplu "20". Aceasta înseamnă că de acum încolo acest proces va ocupa cele mai mari 1/5 cicluri ale procesorului.

Exemple de procese pe care doriți să le păstrați în stare de funcționare sunt emulatorii, mașinile virtuale, compilatoarele etc.

Dacă doriți să opriți procesul deoarece blochează sau este pe cale să elimine complet I / O din starea de funcționare, creați un fișier sau utilizați alte resurse de sistem, utilizați comanda kill. Dacă aveți opțiunea, încercați mai întâi să încheiați procesul "în liniște", trimițându-i un semnal SIGTERM. Aceasta este o indicație pentru a opri orice activitate în conformitate cu procedurile descrise în codul de program:

În exemplul de mai sus, utilizatorul joe a oprit browser-ul Mozilla, în timp ce el a atârnat.

Este puțin mai greu să scapi de anumite procese. Dacă aveți timp, le puteți trimite un semnal SIGINT, întrerupându-le. Dacă acest truc nu funcționează, utilizați cel mai puternic semnal SIGKILL. În exemplul de mai jos, Joe oprește Mozilla, care a atârnat complet:

În astfel de cazuri, vă recomandăm să verificați dacă acest proces este de fapt anulat, folosind din nou filtrul grep pe PID. Dacă aceasta returnează numai procesul grep. puteți fi sigur că ați reușit să opriți acest proces.

Printre procese se află cele dificil de întrerupt în cochilie. Și este bine: dacă pot fi ușor întrerupte, atunci vă veți pierde shell-ul de fiecare dată când ați introdus accidental Ctrl-C pe linia de comandă, deoarece acest lucru este echivalent cu trimiterea SIGINT.

UNIX fără conducte este aproape de neconceput.
Utilizarea unei bare verticale (|) când se utilizează ieșirile unei comenzi ca intrare în alta este explicată în capitolul 5, "Redirectarea I / O".

Într-un mediu grafic, programul xkill este foarte ușor de utilizat. Doar introduceți numele comenzii, apoi apăsați Enter și selectați aplicația pe care doriți să o opriți din fereastră. Acest lucru este destul de periculos, deoarece programul trimite SIGKILL în mod implicit, deci folosiți-l numai când aplicația se blochează.

Articole similare