Kako da testirate svoj Linux sistem
Ako vaš svakodnevni posao podrazumeva rad u Linux-u, onda je dobro da znate na koji način možete da uradite testiranje Linux sistema i proverite da li ima nekih slabih tačaka.
U slučaju da se pitate zašto biste uopšte radili tako nešto, važno je znati na koji način će se ponašati vaš sistem pod velikim opterećenjem, kada je istovremeno aktivan veliki broj procesa, kada postoji veliki mrežni saobraćaj, veliko opterećenje memorije i kada je sistem generalno preopterećen. Takva vrsta testa može da vam pomogne da budete sigurni da će vaš sistem biti stabilan kada se nađe u produkciji.
Takođe, ako je potrebno predvideti ponašanje neke nove aplikacije koja treba da bude puštena u produkciju, dobro je unapred znati kako će se ona ponašati u ekstremnim uslovima u produkciji.
Srećom, postoji način da se i bez nekih posebnih alata to testira i u okviru samog Linux sistema, pomoću komandi koje ćemo vam u ovom tekstu predstaviti.
Petlje
Za početak možete probati sa petljama. Pokrenite neku petlju iz komandne linije i gledajte kako se sistem ponaša. Pošto će petlja u značajnoj meri opteretiti CPU, videćete kako se on ponaša i kako to utiče na sistem u celosti. Rezultate lako možete pogledati koristeći komandu uptime.
U komandi ispod smo pokrenuli četiti beskonačne petlje. Možete povećati broj petlji dodavanjem brojeva ili korišćenjem bash izraza npr {1…6} na mesto “1,2,3,4“
for i in 1 2 3 4; do while : ; do : ; done & done
Kada ovu komandu unesete u konzolu, pokrenuće se četiri beskonačne petlje u pozadini.
$ for i in 1 2 3 4; do while : ; do : ; done & done
[1] 205012
[2] 205013
[3] 205014
[4] 205015
U ovom slučaju su pokrenute četiti komande, sa prikazanim brojevima i ID-jevima procesa koji su pokrenuti.
Da biste videli rezultate, koristite komandu prikazanu u liniji ispod. U ovom konkretnom slučaju komanda uptime će biti pokrenuta svakih 30 sekundi.
$ while true; do uptime; sleep 30; done
Ako nameravate da pokrenete ovaj test periodično, možete staviti loop komandu u skript.
#!/bin/bash
while true
do
uptime
sleep 30
done
Na izlazu ćete videti kako se opeterećenje postepeno povećava, a zatim sa završetkom petlje isto tako smanjuje.
11:25:34 up 5 days, 17:27, 2 users, load average: 0.15, 0.14, 0.08
11:26:04 up 5 days, 17:27, 2 users, load average: 0.09, 0.12, 0.08
11:26:34 up 5 days, 17:28, 2 users, load average: 1.42, 0.43, 0.18
11:27:04 up 5 days, 17:28, 2 users, load average: 2.50, 0.79, 0.31
11:27:34 up 5 days, 17:29, 2 users, load average: 3.09, 1.10, 0.43
11:28:04 up 5 days, 17:29, 2 users, load average: 3.45, 1.38, 0.54
11:28:34 up 5 days, 17:30, 2 users, load average: 3.67, 1.63, 0.66
11:29:04 up 5 days, 17:30, 2 users, load average: 3.80, 1.86, 0.76
11:29:34 up 5 days, 17:31, 2 users, load average: 3.88, 2.06, 0.87
11:30:04 up 5 days, 17:31, 2 users, load average: 3.93, 2.25, 0.97
11:30:34 up 5 days, 17:32, 2 users, load average: 3.64, 2.35, 1.04 <== loops
11:31:04 up 5 days, 17:32, 2 users, load average: 2.20, 2.13, 1.01 stopped
11:31:34 up 5 days, 17:33, 2 users, load average: 1.40, 1.94, 0.9
8
Da biste prekinuli izvršavanje petlje unesite komandu kill kako je prikazano na primeru ispod (pod pretpostavkom da su i vaši džobovi obeleženi kao 1,2,3 i 4.
$ kill %1 %2 %3 %4
Specijalizovani alati za testiranje Linux sistema
Drugi način da testirate kako vaš sistem reaguje na opterećenje jeste da koristite neke od specijalizovanih alata za tu namenu. Jedan od njih se zove Stress i može da optereti sistema na više načina. U principu ovaj alat opterećuje vaš CPU, memoriju i disk, testirajući na taj način kako se praktično ceo sistem ponaša pod opterećenjem.
Sa –cpu opcijom, stress komanda koristi funkciju kvadratnog korena da bi naterala CPU da se opetereti do maksimuma.
Takođe, watch-it skripta (watch-it-2) može biti korišćena da utiče na memoriju sistema. Obratite pažnju da se kod nje koristi free komanda da biste videli efekte stres testa.
$ cat watch-it-2
#!/bin/bash
while true
do
free
sleep 30
done
Pokretanje i posmatranje testa (slika ispod).
$ stress --cpu 2
$ ./watch-it 13:09:14 up 5 days, 19:10, 2 users, load average: 0.00, 0.00, 0.00 13:09:44 up 5 days, 19:11, 2 users, load average: 0.68, 0.16, 0.05 13:10:14 up 5 days, 19:11, 2 users, load average: 1.20, 0.34, 0.12 13:10:44 up 5 days, 19:12, 2 users, load average: 1.52, 0.50, 0.18 13:11:14 up 5 days, 19:12, 2 users, load average: 1.71, 0.64, 0.24 13:11:44 up 5 days, 19:13, 2 users, load average: 1.83, 0.77, 0.30
Stress komanda takođe može opteretiti sistem dodavanjem opterećenja memorije dodavanjem –io (input/output) i –vm (memorija) opcija.
Na sledećem primeru možemo videti kako je prvo pokrenuta upravo ova komada za pokretanje opterećenja memorije, a zatim je pokrenuta watch-it skripta.
$ stress --vm 2
$ watch-it-2
$ watch-it-2
total used free shared buff/cache available
Mem: 6087064 662160 2519164 8868 2905740 5117548
Swap: 2097148 0 2097148
total used free shared buff/cache available
Mem: 6087064 803464 2377832 8864 2905768 4976248
Swap: 2097148 0 2097148
total used free shared buff/cache available
Mem: 6087064 968512 2212772 8864 2905780 4811200
Swap: 2097148 0 2097148
Druga opcija je da koristite –io opciju da dodate I/O aktivnost. Tada bi komanda trebalo da izgleda ovako:
$ stress --io 4
A zatim možete posmatrati testirane I/O koristeći iotop opciju. Imajte samo u vidu da iotop zahteva da imate root privilegije.
Pre
$ sudo iotop -o
Total DISK READ: 0.00 B/s | Total DISK WRITE: 19.36 K/s Current DISK READ: 0.00 B/s | Current DISK WRITE: 27.10 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 269308 be/4 root 0.00 B/s 0.00 B/s 0.00 % 1.24 % [kworker~fficient] 283 be/3 root 0.00 B/s 19.36 K/s 0.00 % 0.26 % [jbd2/sda1-8]
Posle
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
270983 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 51.45 % stress --io 4
270984 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 51.36 % stress --io 4
270985 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 50.95 % stress --io 4
270982 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 50.80 % stress --io 4
269308 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.09 % [kworker~fficient]
Na kraju da napomenemo i to da je stress samo jednan od brojnih alata za testiranje. Drugi, noviji alat je stress-ng koji nije predmet ovog testa, a o kojem možete više pročitati ovde.
Zaključak
U današnjem tekstu smo vam predstavili na koji način možete da testirate svoj Linux sistem po principu DIY (do-it-yourself). Važno je imati na umu da je testiranje neophodno i da ga treba raditi kada god postoji neka konkretna potreba za tim, ali i periodično kako bi se preventivno delovalo i izbegle neprijatne situacije sa sistemom.
Da li ste do sada koristili neke slične metode za testiranje vašeg sistema? Ako jeste, podelite sa čitaocima svoje iskustvo. Možda će vaša informacija nekome pomoći da bude bolji administrator.