Dobrodošli na wiki [[http://www.slackware-srbija.org/|srpske Slackware zajednice]]. Za izmenu sadržaja je neophodno registrovati nalog. Pre uređivanja ili dodavanja sadržaja poigrajte se sa [[wiki:syntax|wiki sintaksom]] u [[playground:playground|igralištu]].

**Ово је стара верзија документа!** ----

A PCRE internal error occured. This might be caused by a faulty plugin

===== Uvod ===== Svaki računar na svetu ima svog administratora sistema. Po definiciji administrator Linux sistema je osoba koja ima pun pristup, odnosno osoba koja je superkorisnik (root). Između ostalih dužnosti, administrator treba da ima uvid u rad svog sitema. U narednom delu ove teme videćemo nekoliko osnovnih naredbi/alatki (komandi/programa) za nadgledanje i praćenje performansi rada Linux sistema. ===== Opšte stanje sistema ===== ==== uptime ==== Da biste stekli izvestan utisak o opštem stanju performansi sistema možete koristiti komandu <code>uptime</code> //**Primer**// <code>bash-4.1$ uptime 10:13:43 up 3:37, 2 users, load average: 0.12, 0.12, 0.14</code> Komanda **uptime** će pokazati koliko je korisnika prijavljeno i koliko je prosečno opterećenje sistema tokom poslednjih 1, 5 i 15 minuta. Ipak je ovo jako //grub// prikaz opterćenosti sistema. ==== sar ==== Komanda **sar** je skraćenica od //system activity report// (izveštaj o aktivnosti sistema). Za razliku od **uptime**, komanda **sar** daje mnogo pouzdanije podatke. //**Primer**// <code>bash-4.1$ sar -u 5 5 Linux 2.6.37.6-smp (brok) 01/27/2012 _i686_ (2 CPU) 02:54:07 PM CPU %user %nice %system %iowait %steal %idle 02:54:12 PM all 8.81 0.00 1.50 0.50 0.00 89.19 02:54:17 PM all 7.90 0.00 1.20 0.40 0.00 90.50 02:54:22 PM all 7.10 0.00 1.10 0.00 0.00 91.80 02:54:27 PM all 7.82 0.00 1.20 0.50 0.00 90.48 02:54:32 PM all 7.49 0.00 1.10 0.40 0.00 91.02 Average: </code> Navedena naredba nalaže komandi **sar** da u intervalima od broja zadatih sekundi (u ovom slučaju pet) uzme odgovarajući broj uzoraka (takođe u ovom slučaju pet uzoraka). Opcijom **-u** postižemo da komanda sar prikaže iskorišćenje procesora. **%super** - označava procenat procesorskog vremena utrošenog na izvršavanje korisničkog koda, uglavnom aplikacije **%nice** - je procenat procesorskog vremena utrošenog na izvršavanje korisničkog koda promenjenog prioriteta **%system** - označava vreme utrošeno na izvršavanje sistemskog koda (pozivi sistemu) **%idle** - pokazuje koliko vremena procesor nije ništa radio Više informacija možete naći u datoteci/zapisniku ///usr/lib/sa/sadc//: <code>vi /usr/lib/sa/sadc</code> {{:saveti:sadc.jpg?200|}} ==== xload ==== Ako vam je tako lakše opterećenje sistema možete pratiti preko programa **xload** koji daje informacije u grafičkom obliku. <code>xload</code> {{:saveti:xload.jpg?200|}} ===== Nadgledanje aktivnih procesa ===== Komanda **ps** je odlično oruđe za nadgledanje aktivnih procesa vašeg sistema. Najkorisnija je u kombinaciji sa **-el**. Opcija **-e** izlistava podatke o svakom aktivnom procesu dok opcija **-l** pravi dugačak linsting sa podacima. <code>pc -el</code> //**Primer**// <code>bash-4.1$ ps -el F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 206 poll_s ? 00:00:00 init 1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd 1 S 0 3 2 0 80 0 - 0 run_ks ? 00:00:00 ksoftirqd/0 1 S 0 6 2 0 -40 - - 0 cpu_st ? 00:00:00 migration/0 1 S 0 7 2 0 -40 - - 0 cpu_st ? 00:00:00 migration/1 1 S 0 9 2 0 80 0 - 0 run_ks ? 00:00:00 ksoftirqd/1 1 S 0 11 2 0 60 -20 - 0 rescue ? 00:00:00 cpuset</code> <sub>//izlaz je poduži pa je zato skraćen//</sub> //**Objašnjenje**// * **F** - sadrži zbir jedne ili više heksadecimalnih vrednosti koje opisuju aktuelno stanje procesa * **S** - prikazuje aktuelno stanje procesa po principu: izvršava se, privremeno zasutavljen itd...) * **UID** - prikazuje indentifikator vlasnika procesa * **PID** - prikazuje indentifikator procesa * **PPID** - prikazuje indentifikator "starijeg" procesa * **C** - prikazuje zauzeće procesora procesom * **PRI** - prikazuje prioritet procesa po principu veći broj veći prioritet * **NI** - prikazuje izmenu prioriteta procesa pomoću komande nice po principu veći broj označava niži prioritet * **SZ** - prikazuje količinu virtuelne memorije potrebne za izvršavanje procesa * **TTY** - označava terminal sa kojeg je proces pokrenut * **TIME** - prikazuje ukupno procesorsko vremeu satima i minutama utrošeno na izvršavanje procesa * **CMD** - prikazuje komandu koja je pokrenula proces ===== Zuzeće meorije ===== Pomoću komande **vmstat** možemo ispitati podsistem virtuelne memorije i pronaći eventualni problem. Komanda **vmstat** prikazuje statistiku korišćenja podsistema virtuelne memorije, opterćenje procesora i podatke o aktivnosti diska i procesora. Opšti oblik te naredbe je: <code>vmstat [interval] [broj]</code> Komanda **vmstat** u intervalima (zadatim u sekundama) uzima odgovarajući broj uzoraka i rezultate prikazuje u standardnom izlaznom toku <code>bash-4.1$ vmstat 5 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 1280040 376128 1178352 0 0 52 76 558 1823 17 2 79 1 0 0 0 1279552 376128 1178352 0 0 0 0 1065 3148 11 2 88 0 0 0 0 1279800 376128 1178352 0 0 0 0 1047 2970 11 2 88 0 0 0 0 1279676 376136 1178352 0 0 0 13 1022 2638 10 1 88 0 0 0 0 1279924 376144 1178352 0 0 0 22 1007 2421 10 2 88 0</code> Dobijeni rezultati su naizgled teško čitljivi. Prvi red svakog izveštaja komande vmstat prikazuje samo zbirne informacije. Sledeći redovi prikazuju informacije koje možemo da iskoristimo za otkrivanje eventualnog problema sa memorijom. polje **procs** * **r** - broj procesa spermnih za izvršavanje * **b** - broj zaustavljenih procesa polje **memory** * **swpd** - veličina korišćene virtuelne memorija u kilobajtima * **free** - veličina nedodeljene memorije u kilobajtima * **buff** - veličina međumemorije (befera) u kilobajtima * **cache** - veličina memorijske ostave (keš) u kilobajtima polje **swap** * **si** - brzina prenosa podataka iz virtuelne memorije u radnu memoriju u KB/s * **so** - brzina prenosa podataka iz radne u virtualnu memoriju u KB/s polje **io** * **bi** - broj blokova podataka zapisanih u sekundi na ulazno-izlazni uređaj * **bo** - broj blokova učitan u sekundi sa ulazno-izlaznog uređaja polje **system** * **in** - broj prekida u sekundi izazvanih uređajima * **cs** - broj promena konteksta procesa u sekundi polje **cpu** * **us** - procenat procesorskog vremena utrošenog na izvršavanje korisničkog koda * **sy** - procenat procesorskog vremena utrošenog na izvršavanje sistemskog koda * **id** - procenat neutrošenog procesorskog vremena U ovim poljima treba obratiti pažnju na korišćenje ukupne i virtuelne memorije. Kada je raspoloživa virtuelna memorija (prikazana u kilobajtima u polju swap) mala, sistem sa njom intezivno razmenjuje podatke pa performanse su verovatno zbog toga slabe. Tada treba potrebiti komandu **pd** da bi se otkrio proces ili procese koji intezivno koriste virtuelnu memoriju. Uglavnom trajno rešenje je u dodavanju još RAM-a. Ako je u koloni **wa** vrednost različita od nule, a vrednosti u kolonama **so** i **si** ukazuju na neprestanu razmenu sa virtuelnom memorijom, potražite proces koji opsežno zauzima memoriju, naručito virtuelnu. Ako duže posmatrate kolone **r** i **b** steći ćete utisak o brzini prolaska procesa kroz red čekanja na izvršavanje, Vrednost u koloni **r** i **b** treba stalno da budu niske, osim kod dugotrajnih procesa koje takođe lako možete da otkrijete sa komandom **ps**. Komanda **free** prikazuje korišćenje meorije, uključujući virtuelnu memoriju i kapacitet. Za jedno umereno opterećenje sistem dobićete otprilike sledeće rezultate <code>bash-4.1$ free total used free shared buffers cached Mem: 3607112 1471564 2135548 0 282812 877548 -/+ buffers/cache: 311204 3295908 Swap: 1572860 0 1572860</code> Nasuprot gornjem prikazu evo primera gde je meorija prilično opterćena <code>sysadmin@server ~ # free total used free shared buffers cached Mem: 8190820 7532908 657912 0 273732 6048780 -/+ buffers/cache: 1210396 6980424 Swap: 2102456 0 2102456</code> Komanda **free** prikazuje snimak korišćenja memorije koji možete da obuhvatite jednim pogledom. Prvi red ispod zaglavlja pokazuje podatke o fizičkoj (radnoj) memoriji u kilobajtima, uključujući ukupnu veličinu RAM-a, njegov ne uvek i iskorišćen deo koji zauzima jezgro operativnog sistema, veličinu slobodnog RAM-a i delove RAM-a namenjenog deljenju, međumemoriji i ostavi. Drugi red se odnosi na korišćenje međumemorije. Drugim rečima, komanda **free** oduzima predviđenu međumemoriju i ostavu od kolone **used** i rezultat smešta u kolonu **free** tako da dobijamo tačniju sliku korišćenja memorije u odnosu na zauzeće u jezgru operativnog sistema, ona se menja u zavisnosti od iskorišćenja sistema i prosečnog korišćenja memorije. Ako u prvom redu vrednost **buffers** i **cached** oduzmete od vrednosti korišćene memorije dobićete vrednost (za prvi prikaz) 311204 (1471564−282812−877548=311204), dok dodavanjem vrednosti **buffers** i **cached** na vrednost **free** dobijamo 3890644 (2135548+877548+877548=3890644) što je oko 12.5 puta više. Treći red prikazuje veličinu raspoložive, korišćene i slobodne virtuelne memorije koja je u vreme snimanja sistema bila nekorišćena u oba snimka. Ovi podaci se mogu videti i u grafičkom prikazu, sve u zavisnosti koje grafičko okruženje koristite. Recimo //System Monitor// u GNOME grafičkom okruženju {{:saveti:system_monitor_gnome.jpg?200|}} ===== Zauzeće diska i njegove performanse ===== Zauzeće diska se lako može partiti komandom **df** i **du**. Komanda **df** prikazuje stanje raspoloživog prostora na diskum dok komanda **du** prikazuje koliko je prostora zauzeto na disku. <code>bash-4.1$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 20641788 12602500 6990696 65% / /dev/sda8 15481840 4701848 9993560 32% /media/root_ubuntu /dev/sda9 42924248 28350532 12393264 70% /media/home_ubuntu /dev/sda1 102396 46764 55632 46% /media/rsv /dev/sda2 83779580 73083256 10696324 88% /media/windows /dev/sda5 62918540 51342056 11576484 82% /media/hard1 tmpfs 1803556 116 1803440 1% /dev/shm /dev/sda6 83884700 58033040 25851660 70% /media/hard2</code> Upotrebom opcije **-k** komande **df** može se videti zauzeće diska u kilobajtima <code>bash-4.1$ df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 20641788 12602500 6990696 65% / /dev/sda8 15481840 4701848 9993560 32% /media/root_ubuntu /dev/sda9 42924248 28350532 12393264 70% /media/home_ubuntu /dev/sda1 102396 46764 55632 46% /media/rsv /dev/sda2 83779580 73083256 10696324 88% /media/windows /dev/sda5 62918540 51342056 11576484 82% /media/hard1 tmpfs 1803556 116 1803440 1% /dev/shm /dev/sda6 83884700 58033040 25851660 70% /media/hard2</code> U današnjim prilikama izveštaj će biti najčitljiviji upotrebom opcije **-h** <code>bash-4.1$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 20G 13G 6.7G 65% / /dev/sda8 15G 4.5G 9.6G 32% /media/root_ubuntu /dev/sda9 41G 28G 12G 70% /media/home_ubuntu /dev/sda1 100M 46M 55M 46% /media/rsv /dev/sda2 80G 70G 11G 88% /media/windows /dev/sda5 61G 49G 12G 82% /media/hard1 tmpfs 1.8G 116K 1.8G 1% /dev/shm /dev/sda6 80G 56G 25G 70% /media/hard2</code> Opcija **-h** potpuno razjašnjava koliko imamo raspoloživog prostora u svakom sistemu datoteke. Ako bi upotrebimo opciju **-l** dobićemo samo podatke o prostoru na disku koji se fizički nalazi na sistemu ali ne i za povezane mrežne sistemske datoteke niti za diskove kojima pristupamo daljinski. Kada želimo da utvrdimo koliki deo prostora na disku se koristi, upotrebićemo komandu **du**. Njena osnovna sintaksa je <code>du [opcija] datoteka</code> <code>sysadmin@server ~/backup # du -h 7.7G .</code> <code>sysadmin@server ~/backup # du -k 8015940 .</code> <code>sysadmin@server ~/backup # du -m 7829 .</code> <code>sysadmin@server ~/backup # du -s 8015940 .</code> **-h** - prikazuje izveštaj u jedinicama koje su najčitljiviji korisniku **-k** -prikazuje rezultate u kilobajtima **-m** -prikazuje rezultate u megamajtima **-s** -prikazuje samo zbirne vrednosti Ulazno-izlazne operacije sa diskom obično su usko grlo sistema. Operativna memorija i procesor rade više hiljada puta brže od najbržeg diska. Srećom, jezgro operativnog sistema i savremeni čvrsti diskovi koriste softversku i hardversku memorijsku ostavu, međumemoriju za predhodno učitavanje i odloženo zapisavinje na hard disk da bi prikrili i smajnili pomenutu razliku u brzini rada. Ipak, kao administrator sistema i dalje bi trebali znati da utvrdite probleme i izborite se sa njima kada se pojave na ulazno-izlaznim operacijama sa diskom. Korisno je da se upoznate sa sledećim frazama koje se često koriste za opisivanje performansi sistema: * **Srednje vreme pristupanja** (Average seek time) - procena prosečnog trajanja operacije pristupanja * **Maksimalno vreme pristupanja** (Maximum seek time) - trajanje kretanja glave diska između dve staze na disku koje su međusobno najviše udaljene * **Minimalno vreme pristupanja** (Minimum seek time) - trajanje kretanja glave diska izme￰u dve susedne staze * **Kašnjenje lociranja** (Queuing delay) - vreme potrebno kontroleru diska da utvrdi gde na disku treba da pročita/upiše podatke * **Rotaciono kašnjenje** (Rotational latency) - vreme potrebno da se pravo mesto na disku dovede ispod glave za čitanje/upisivanje, izraženo brojem obrta u minutu (RPM) * **Kašnjenje pristupanja** (Seek latency) - vreme potrebno glavi za čitanje/upisivanje da se pozicianira na odre￰đeni cilindar diska * **Vreme pristupanja** (Seek time) - Vreme potrebno glavi za čitanje/upisivanje da pre￰đe sa jedne staze diska na drugu Za utvrđivanje problema sa performansama ulazno-izlaznih operacija najčešće se koristi komanda **iostat**. Slično komandi **vmstat**, i komanda **iostat** se najjednostavnije zadaje na sledeći način <code>iostat [interval] [broj]</code> //Interval// definiše broj sekundi izme￰đu dva uzastopna izveštaja, a //broj// predstavlja ukupan broj izveštaja. <code> bash-4.1$ iostat 5 5 Linux 2.6.37.6-smp (brok) 03/01/2012 _i686_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 12.06 0.00 1.80 1.30 0.00 84.84 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 5.70 228.42 173.17 1433701 1086952 avg-cpu: %user %nice %system %iowait %steal %idle 3.10 0.00 0.70 0.30 0.00 95.90 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.80 0.00 16.00 0 80 avg-cpu: %user %nice %system %iowait %steal %idle 3.20 0.00 1.10 0.00 0.00 95.70 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 avg-cpu: %user %nice %system %iowait %steal %idle 3.30 0.00 1.00 0.00 0.00 95.70 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 avg-cpu: %user %nice %system %iowait %steal %idle 5.00 0.00 1.70 0.00 0.00 93.31 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 6.00 0.00 51.20 0 256</code> **tps** - broj operacija prenosa podataka (ili ulazno-izlaznih zahteva za prekid) u sekundi poslatih disku **Blk_read/s** - broj blokova podataka učitanih sa ure￰đaja u sekundi **Blk_wrtn/s** - broj blokova podataka učitanih na ure￰đaja u sekundi **Blk_read** - ukupan broj učitanih podataka **Blk_wrtn** - ukupan broj upisanih podataka Ako detaljnije želimo da ispitamo ulazno-izlazne performanse diska, upotrebićemo opciju **-x**, zadajući i disk odnosno particiju koja nas zanima. Opcija **-x** omogućava detaljniju statistiku ulazno-izlaznih operacija zadatih diskova ili pak svih diskova ako ne zadamo disk. Naredna komanda prikazuje snimak aktivnosti diska /dev/sda tokom prevođ￰enja jezgra operativnog sistema (takođe [interval=5] [broj=5]). Zbog opcije **-d** komanda iostat ne prikazuje zbirni izveštaj o korišćenu procesora <code> bash-4.1$ iostat -d -x /dev/sda 5 5 Linux 2.6.37.6-smp (brok) 03/01/2012 _i686_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 6.38 19.47 3.88 1.64 218.99 168.80 70.30 0.15 27.52 4.10 2.26 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.40 0.00 0.80 0.00 9.60 12.00 0.01 8.50 8.50 0.68 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.40 0.00 0.80 0.00 9.60 12.00 0.01 10.25 10.25 0.82 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.80 0.00 2.40 0.00 25.60 10.67 0.01 3.58 3.42 0.82</code> * **rrqm/s** - broj spojenih zahteva za čitanje podataka u sekundi * **wrqm/s** - broj spojenih zahteva za upisivanje podataka u sekundi * **r/s** - broj zahteva za čitanje podataka u sekundi * **w/s** - broj zahteva za upisivanje podataka u sekundi * **rsec/s** - broj učitanih sektora u sekundi * **wsec/s** - broj upisanih sektora u sekundi * **avgrq-sz** - prosečna veličina zahteva u sektorima * **avgqu-sz** - prosečna dužina reda za čekanje zahteva * **await** - prosečno vreme čekanja ulazno-izlazne operacije na izvršenje izraženo u milisekundama * **svctm** - prosečno vreme izvršavanja ulazno-izlazne operacije izraženo u milisekundama * **%util** - procenat zauzeća procesora zahtevima za ulazno-izlazne operacije ===== Korišćenje procesora ===== Najpoznatiji uslužni program za praćenje korišćenja procesora jeste **top**, koji prikazuje najzahtevnije procese. Program **top** prati rad procesora u realnom vremenu, što znači da prikazuje listu aktivnih procesa koji ga najviše koriste. Prikaz se podrazumevano ažurira na svake tri sekunde, mada je interval ažuriranja promenljiv u toku izvršavanja komande **top**, sa **d** ili **s** i zadatom vrednošću. //Primer zamene intervala ažuriranja na 6 sekunde// <code>top - 11:21:23 up 41 days, 21:09, 1 user, load average: 0.25, 0.18, 0.11 Tasks: 192 total, 2 running, 190 sleeping, 0 stopped, 0 zombie Cpu(s): 2.1%us, 0.2%sy, 0.0%ni, 97.3%id, 0.2%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 8190820k total, 7867744k used, 323076k free, 269440k buffers Swap: 2102456k total, 0k used, 2102456k free, 6435568k cached Change delay from 3.0 to: 6 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1488 mysql 20 0 455m 76m 4328 S 2 1.0 1032:25 mysqld 3487 root 20 0 19060 1320 916 R 2 0.0 0:00.01 top 1 root 20 0 8352 748 616 S 0 0.0 0:20.15 init 2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0 0.0 0:03.14 migration/0 4 root 20 0 0 0 0 S 0 0.0 0:03.61 ksoftirqd/0 5 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0 6 root RT 0 0 0 0 S 0 0.0 0:00.02 migration/1 7 root 20 0 0 0 0 S 0 0.0 0:04.69 ksoftirqd/1 8 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/1 9 root RT 0 0 0 0 S 0 0.0 0:00.01 migration/2 10 root 20 0 0 0 0 S 0 0.0 0:01.97 ksoftirqd/2 11 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/2 12 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/3 13 root 20 0 0 0 0 S 0 0.0 0:01.10 ksoftirqd/3 14 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/3 15 root RT 0 0 0 0 S 0 0.0 0:00.26 migration/4 </code> Prikaz komande **top** <code>sysadmin@server ~ # top - 11:47:56 up 40 days, 21:36, 2 users, load average: 0.05, 0.08, 0.08 Tasks: 179 total, 1 running, 178 sleeping, 0 stopped, 0 zombie Cpu(s): 0.8%us, 0.1%sy, 0.0%ni, 99.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8190820k total, 7840068k used, 350752k free, 275276k buffers Swap: 2102456k total, 0k used, 2102456k free, 6533588k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3371 www-data 20 0 216m 15m 3788 S 3 0.2 0:00.08 apache2 3370 www-data 20 0 217m 17m 3784 S 2 0.2 0:00.24 apache2 3374 www-data 20 0 211m 11m 3308 S 1 0.1 0:00.03 apache2 1488 mysql 20 0 455m 76m 4316 S 1 1.0 1011:09 mysqld 514 root 20 0 0 0 0 S 0 0.0 3:57.64 kjournald </code> <sub>//izlaz je poduži pa je zato skraćen//</sub> Prvi red prikazuje ukupno vreme rada sistema, slično rezultatu komande **uptime**. Sledeća dva reda rezultata komande **top** sumiraju korišćenje procesora (u apsolutnim brojevima, odnosno uprocentima) prikazujući aktivne procese, procese koji su privremeno zaustavljeni, zombije i trajno zaustavljene procese. //Zombi// (zombie) je proces koji se završio pre nego što je njegov roditeljski proces uspeo da to sazna. Oni se zovu //zombi-procesi// jer su "mrtvi" i ne zauzimaju resurse (osim odrednice u tabeli procesa jezgra operativnog sistema), ali se ipak pojavljuju pri izlistavanju procesa. U četvrtom i petom redu rezultata sumirano je aktueIno korišćenje memorije, na način kao što to prikazuje komanda **free**. Šesti red je u stvari zaglavlje za preostale podatke - procese koji najviše opterećuju procesor, podrazumevano prikazane po opadajućem redosledu prema zauzeću procesora. * **PID** - identifikator procesa * **USER** - ime korisnika koji je pokrenuo proces * **PRI** - prioritet izvršavanja procesa * **NI** - izmena prioriteta procesa (nice) * **SIZE** - veličina memorije potrebna za izvršavanje procesa * **RSS** - veličina fizičke memorije koju proces zauzima * **SHARE** ili **SHR** - veličina deljene memorije koju proces koristi * STAT ili S - aktuelno stanje procesa * **%CPU** - procenat ukupnog procesorskog vremena koji otpada na proces * **%MEM** - procenat ukupne fizičke memorije koju koristi proces * **TIME** - ukupno potrošeno vreme procesora na izvršenje procesa * **COMMAND** - komanda kojom je proces pokrenut, prikazana u zagradama ako je proces odložen u virtuelnu memoriju Željeni proces možemo "ubiti" u samom prikazu komande **top**, sa tipkom **k** ili **K** upisujući //PID// (identifikator procesa). <code>top - 12:22:32 up 41 days, 22:11, 1 user, load average: 0.38, 0.18, 0.11 Tasks: 197 total, 1 running, 195 sleeping, 0 stopped, 1 zombie Cpu(s): 1.9%us, 0.2%sy, 0.0%ni, 97.6%id, 0.3%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 8190820k total, 7552332k used, 638488k free, 272644k buffers Swap: 2102456k total, 0k used, 2102456k free, 6105384k cached PID to kill: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7773 www-data 20 0 218m 19m 4336 S 8 0.2 0:00.48 apache2 1488 mysql 20 0 455m 76m 4328 S 2 1.0 1033:17 mysqld 7839 www-data 20 0 211m 12m 3828 S 2 0.2 0:00.06 apache2 7610 www-data 20 0 218m 19m 4328 S 1 0.2 0:00.58 apache2 7658 www-data 20 0 226m 20m 5192 S 1 0.3 0:00.22 apache2 </code> Stanje procesa može da bude **D** (privremeno zaustavljen na određeno vreme), **R** (izvršava se), **S** (privremeno zaustavljen), **T** (zaustavljen ili praćen) ili **Z** (zombi). Ako se iza oznake stanja procesa nalazi znak **<**, proces ima negativnu izmenu prioriteta, a ako je znak **N**, njegova izmena prioriteta je pozitivna. Ukoliko tu stoji znak **W**, proces je odložen u virtuelnu memoriju. Inače, redosled prikazanih procesa možemo da promenimo tako što ćemo komandi **top** naložiti da osim zauzeća procesora uzme u obzir i neki drugi kriterijum. Dok program **top** radi pritisnite taster **o** ili **O**, a zatim taster u prikazu liste ispod da bi prikaz bio uređen po željenom kriterijumu. * **a** ili **A** - redosled pokretanja * **m** ili **M** - zauzeće fizičke memorije * **n** ili **N** - brojčana vrednost identifikatora * **p** ili **P** - zauzeće procesora * **t** ili **T** - utrošeno procesorsko vreme Od konzolnih programa za nadgledanje performansi sistema sličan programu //top// je **htop**. {{:saveti:htop.jpg?200|}} ===== Nadgledanje rada u mreži ===== Uska grla na mreži doživljavamo svakodnevno. Sama priroda mreže otežava otklanjanje problema sa performansama jer grešku ili zastoj može štošta da prouzrokuje . Krivci mogu da budu sve od mrežne kartice, preko razvodnih kablova, mosta, skretnica sve do mrežniih prolaza ili zaštitne barijere. Uglavnom, kada postoji problem s performansama na TCP/IP Ethernetu to svi mi osećamo, neko lakše neko teže. Ethernet tu ne pravi razliku recimo ako je mreža zagušena već tu svi podjednako trpimo. Što se tiče administratora, oni zagušenje mreže osećaju baš na sopstvenoj koži kroz brojne zahteve korisnika da se problem odmah otkloni. Kod ovakvih problema na prvom mestu treba proveriti saobraćaj sirovih paketa pomoću komande **netstat** i njene opcije **-i**, koje prikazuju TCP/IP saobraćaj na svim aktivnim mrežnim interfejsima. <code>sysadmin@server ~ # netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 626925421 0 0 0 1056722848 0 0 0 BMRU lo 16436 0 12469047 0 0 0 12469047 0 0 0 LRU </code> * **Iface** - ime mrežnog interfejsa * **MTU** - maksimalna jedinica prenosa (veličina paketa) interfejsa * **RX-OK** - broj dolaznih (primljenih) paketa od trenutka pokretanja interfejsa * **RX-ERR** - broj grešaka kod dolaznih paketa * **RX-DRP** - broj odbačenih dolaznih paketa * **RX-OVR** - broj dolaznih paketa koji su prepunili ulazni bafer * **TX-OK** - broj odlaznih (poslatih) paketa od trenutka pokretanja interfejsa * **TX-ERR** - broj grešaka kod odlaznih paketa od poslednjeg pokretanja interfejsa * **TX-DRP** - broj odbačenih odlaznih paketa * **TX-OVR** - broj odlaznih paketa koji su prepunili izlazni bafer Slikovni prikaz komande //netstat -i//, radi lakšeg uvida: {{:saveti:netstat_-i.jpg|}} U izveštaju iz gore navedenog primera, na preko 620 miliona dolaznih paketa i preko jedne milijarde odlaznih paketa predstavlja odličan rezultat. Kada se poveća broj grešaka pri slanju paketa, to znači da u sistemu postoji neki problem. Sa druge strane, greške kod dolaznih paketa retko ukazuju na problem u vašem sistemu već je problem "tamo negde" na drugom mestu. Da biste stekli bolju predstavu o zagušenju mreže, upotrebite komandu **netstat** bez opcija kao u narednom primeru: <code>bash-4.1$ netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.0.100:46719 static.204.106.4.4:http TIME_WAIT tcp 196 0 192.168.0.100:56761 192.168.0.1:netbios-ssn ESTABLISHED tcp 196 0 localhost:33750 localhost:netbios-ssn ESTABLISHED tcp 0 0 192.168.0.100:48171 fa-in-f17.1e100.n:https ESTABLISHED tcp 196 0 localhost:33747 localhost:netbios-ssn ESTABLISHED tcp 0 0 192.168.0.100:56271 95.180.93.153:39290 ESTABLISHED tcp 0 0 192.168.0.100:52553 fa-in-f101.1e100.:https TIME_WAIT tcp 0 0 192.168.0.100:48177 fa-in-f17.1e100.n:https ESTABLISHED tcp 196 0 localhost:33745 localhost:netbios-ssn ESTABLISHED tcp 0 0 192.168.0.100:52610 sync01.phx.servic:https ESTABLISHED tcp 0 0 192.168.0.100:46917 static.204.106.4.46:ssh ESTABLISHED tcp 0 0 localhost:netbios-ssn localhost:33750 ESTABLISHED tcp 0 0 localhost:netbios-ssn localhost:33747 ESTABLISHED tcp 0 0 localhost:netbios-ssn localhost:33745 ESTABLISHED tcp 0 0 ::ffff:192.:netbios-ssn ::ffff:192.168.0.:56761 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 13 [ ] DGRAM 4652 /dev/log unix 2 [ ] DGRAM 3704 @/org/kernel/udev/udevd unix 2 [ ] DGRAM 5727 @/org/freedesktop/hal/udev_event unix 3 [ ] STREAM CONNECTED 183148 @/tmp/dbus-aVfx2uQe69 unix 3 [ ] STREAM CONNECTED 183713 unix 3 [ ] STREAM CONNECTED 179317 unix 3 [ ] STREAM CONNECTED 179316 unix 3 [ ] STREAM CONNECTED 179315 /tmp/orbit-brok-a8e8c8d8/linc-45f1-0-681dc5142df8 unix 3 [ ] STREAM CONNECTED 179314 unix 3 [ ] STREAM CONNECTED 179312 /tmp/orbit-brok-a8e8c8d8/linc-8d9-0-2c5a29a8c4379</code> <sub>//izlaz je poduži pa je zato skraćen//</sub> Prikazan je samo deo veoma dugačkog izveštaja. Komanda **netstat** upotrebljena bez opcija prikazuje sve aktivne veze sa Internetom uspostavljene preko TCP, UDP i Unix priključaka. Možete da upotrebite opcije **-t** i **-u** da biste uklonili Unix priključke (//netstat -t -u//). Unix priključci služe samo za lokalni mrežni saobraćaj, ali ne i za povezivanje umreženih računara. U izveštaju treba da tražite vrednosti različite od nule u koloni **//Send-Q//**. Ako više priključaka ima takve vrednosti, pa one još i rastu, mreža je zagušena. Da biste proverili da li vrednosti u koloni **//Send-Q//** rastu, zadajte i opciju **-e** da bi se prikaz stalno ažurirao. Da biste proverili vezu s računarima u mreži, upotrebite komandu **ping**. Prvo pokušajte da se povežete s lokalnim računarom navodeći ime povratne petlje (//ping localhost//), a zatim navodeći IP adresu petlje (//ping 127.0.0.1//). Zatim proverite povezivanje s lokalnim računarom, navodeći njegovo stvarno ime i IP adresu na mreži. Ako se komanda **ping** uspešno završi, mreža radi na lokalnom sistemu. Sa druge strane ako se računar odazove na IP adresu ali ne i na ime, proverite odgovarajuću odrednicu u datoteci ///**etc/hosts**//. Posle toga, pokušajte da pozovete drugi sistem na mreži, opet služeći se njegovim imenom i IP adresom. U opštem slučaju ako se udaljen računar odazove kada ga pozovete služeći se IP adresom, ali ne i kada ga pozovete po imenu, problem je u serveru imena. U takvom slučaju proverite da li je server imena naznačen u datoteci **///ete/resolv.conf//**. Na kraju, pokušajte da pozovete sistem na drugoj mreži (služeći se imenom i IP adresom). Uspešno povezivanje sa sistemima koji nisu na lokalnoj mreži znači da barem možete da izađete na Internet. Ako neki udaljeni sistem nije dostupan, možda u tom trenutku nije ni uključen. Ako ne možete da se povežete sa udaljenim sistemima, proverite da li dobro rade server imena i mrežni prolaz, kao i to da li je interfejs na mreži koji želite da dosegnete uopšte aktivan. Slično tome komanda **netstat -nr** proverava tabele putanja i ističe nevažeće ili netačne odrednice DNS servera.


Navigation

* [[:pocetna_strana|Početna strana]] * [[playground:playground|Igralište]] * [[wiki:syntax|Pomoć]]

QR Code
QR Code saveti:pracenje_performansi_sistema (generated for current page)