Tehtävä H8

Järjestelmätietojen tarkastelua sekä järjestelmän kuormittamista

Tein tehtävän kotona pöytäkoneellani, jossa oli mm. Intel i5-3570K prosessori, 8GB RAM-muistia ja Asus GTX 1060 (6GB) näytönohjain. Xubuntua (18.04.3) käytin USB-tikulta kokeilutilassa.

Aloitin tehtävien tekemisen 24.3.2020 klo 20:30 (UTC +2). Xubuntun kello näytti 18:30 (UTC +0).

Tehtävänanto:

Prosessinhallintaa ja lokeja.

a) Kuormitusta yli ajan. Tietysti palvelin hidastelee juuri silloin, kun olet nukkumassa. Seuraisipa joku kuormitusta tuolloin. Asenna heti aluksi jokin ohjelma seuraamaan kuormitusta, jotta voit tarkastella sitä koko tehtävän ajalta. Sopivia ohjelmia ovat esimerkiksi 'munin' ja sysstat ('sar').

b) Kuormita järjestelmän eri osa-alueita. Esim. 'stress'. Etsi prosessi toisesta ikkunasta 'top' tai 'htop', järjestystä voi vaihtaa "P" ja "M".

Kokeile käytännössä, selitä ja analysoi. Muista selittää, mitä komennolla halutaan selvittää ja tulkitse kokeilusi tulokset. Aiheuta tarvittaessa kuormaa tai muuta työkalulla näkyvää tulkittavaa.

c) iotop; iotop -oa

d) dstat

e) ss --listening --tcp --numeric; ss --listening --tcp; ss --tcp; ss --listening --udp; ss --listening --udp;

f) grep -i error /var/log/syslog; grep -ir error /var/log/

g) Load average näkyy esim 'uptime', 'top', 'htop'. Prosessoriydinten määrä näkyy 'nproc'. Miten load average tulkitaan? Miksi prosessoriydinten määrä on tässä kiinnostava? Vapaaehtoisena bonuksena voit miettiä, mitä hyötyä on kuormituslukemasta, joka voi mennä yli yhden eli yli 100%.

h) Analysoi lopuksi koko ajalta keräämäsi kuormitustiedot. Löydätkö esimerkiksi aiheuttamasi kuormituspiikin?

Alkuun laitoin suomalaisen näppäinasettelun, päivitin paketit ja laitoin palomuurin päälle:
setxkbmap fi
sudo apt-get update
sudo ufw enable

a) Asenna heti aluksi jokin ohjelma seuraamaan kuormitusta, jotta voit tarkastella sitä koko tehtävän ajalta. Sopivia ohjelmia ovat esimerkiksi ’munin’ ja sysstat (’sar’).

Asensin sysstatin komennolla sudo apt-get install -y sysstat. Annoin komennon sar 1 3 testatakseni ohjelman toimivuuden. Kyseinen komento antaa kolme kertaa, yhden sekunnin välein, prosessorin tiedot. Ohjelma näytti pelittävän, ja ytimet olivat enimmäkseen levossa (%idle):

$ sar 1 3
Linux 5.0.0-23-generic (xubuntu) 	03/24/2020 	_x86_64_	(4 CPU)

07:53:42 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07:53:43 PM     all      2.75      0.00      0.25      0.00      0.00     97.00
07:53:44 PM     all      2.51      0.00      0.25      0.00      0.00     97.24
07:53:45 PM     all      2.01      0.00      0.25      0.25      0.00     97.49
Average:        all      2.42      0.00      0.25      0.08      0.00     97.25

Avasin kaksi uutta terminaali-ikkunaa ja annoin kumpaankin eri komennon. Toisen terminaaliin kirjoitin sar -u 5 10000, jolloin terminaaliin päivittyy prosessorin kuormitus viiden sekunnin välein, 10000 kertaa. Tämän jälkeen annoin toiseen terminaali-ikkunaan komennon sar -r 5 10000, mikä puolestaan aloitti muistitietojen päivittämisen samanlaisissa sykleissä. Molempiin ikkunoihin alkoi päivittymään statistiikat. Tarkoituksenani oli kerätä muistin ja suorittimen rasitustietoja koko harjoituksen ajalta. Tarkastelen tuloksia harjoituksen lopussa.

b) Kuormita järjestelmän eri osa-alueita. Esim. ’stress’. Etsi prosessi toisesta ikkunasta ’top’ tai ’htop’, järjestystä voi vaihtaa ”P” ja ”M”.

Kokeile käytännössä, selitä ja analysoi. Muista selittää, mitä komennolla halutaan selvittää ja tulkitse kokeilusi tulokset. Aiheuta tarvittaessa kuormaa tai muuta työkalulla näkyvää tulkittavaa.

Googlettamalla löysin tällaiset ohjeet. Asensin kuormitussovelluksen komennolla sudo apt-get install stress. Testasin sovelluksen toiminnan antamalla komennon uptime, jolla näin tämän hetkisen keskimääräisen kuormitustason.

$ uptime
 20:27:23 up  4:35,  1 user,  load average: 0.36, 0.32, 0.28

Googletin, mitä load average tarkoittaa ja löysin tällaiset ohjeet. Ensimmäinen load average arvo kertoo keskimääräisen rasituksen kuluneen minuutin ajalta, toinen arvo viimeisen viiden minuutin ajalta ja viimeinen arvo keskimääräisen rasituksen viimeisen 15 minuutin ajalta.

Mikäli ymmärsin oikein, niin rasituksen taso riippuu prosessoriydinten lukumäärästä. Minun koneessani oli neliydinprosessori, joten minun tulisi huolestua rasituksesta vasta, kun keskimääräinen rasitustaso nousisi lähelle arvoa neljä. Mikäli et tiedä prosessoriydintesi lukumäärää, niin voit tarkistaa sen komennolla nproc. Lisätietoja nprocista.

Ajoin komennon stress -c 2 -i 1 -m 1 –vm-bytes 256M -t 15s. C-arvo rasittaa suoritinta, i-arvo I/O:ta ja m-arvo muistia. lopussa oleva -t 15s tarkoittaa rasituksen kestoa sekunneissa. Seurasin rasituksen aikana toisessa terminaali-ikkunassa mahdollisia muutoksia, kirjoittamalla komennon watch uptime. Ensimmäinen load average arvo asettui rasituksen jälkeen arvoon 1.28. Rasitus näkyi selkeästi, mutta suorittimelleni jäi vielä pelivaraa.

Pientä rasitusta havaittavissa

Avasin uuden terminaali-ikkunan, johon annoin komennon top. Käsittääkseni kyseisellä komennolla näkee käynnissä olevat prosessit. Annoin uudelleen aiemman stess-komennon ja seurasin samalla toisesta ikkunasta prosessilistausta. Ikkunaan ilmestyi merkinnät stressiprosesseista, joiden suoritinkäyttö oli melkein 100% (%CPU). Muistin käyttö oli olematonta (%MEM).

Prosesseja top-komennon takana. Ylimpänä valkoisella tekstillä stressitestin prosessit.



c) iotop; iotop -oa

Iotop on sovellus, joka näyttää järjestelmän levyliikenteen määrän.

Asensin sovelluksen komennolla sudo apt-get install iotop ja käynnistin sen omassa ikkunassa komennolla sudo iotop -oa. Jos ymmärsin oikein, niin komennossa -o näyttää vain ne prosessit, jotka vaikuttavat I/O:n. -a määritettä en oikein ymmärtänyt, mutta eri komennoista voi lukea lisätietoa täältä. Komento sudo iotop ei rajaa mitään prosessia pois, vaan näyttää kaikki prosessit.

Iotop -oa

Ajoin taas erillisessä ikkunassa rasitustestin komennolla stress -c 2 -i 1 -m 1 –vm-bytes 256M -t 15s, mutta en huomannut iotopissa muutoksia. Selailin muiden kurssilaisten tehtäväratkaisuja, ja huomasin Arttu Kesannon lisänneen komentoon -d -määreen, jolloin myös levyä rasitetaan. En osannut lisätä d:tä oikeaan kohtaan komennossa, eikä Googlekaan antanut kunnollisia hakutuloksia yrityksistä huolimatta.

Asensin Spotifyn ja käynnistin sen. Nyt iotopissa näkyi Spotifyyn liittyviä prosesseja. DISK READ -kohdassa näkyi luetun datan määrä, mutta mitä se käytännössä tarkoitti, jäi minulle hiukan epäselväksi.

Luetun datan määrä näkyvissä ja I/O-prosenteissa pientä kasvua.



d) dstat

Dstatin avulla voit seurata järjestelmän osien tilaa. Asensin sovelluksen komennolla sudo apt-get install -y dstat ja käynnistin sen komennolla dstat. Ohjelma näyttää mm. suorittimen ja kovalevyn rasituksen. Ajoin jälleen saman stressitestin komennolla stress -c 2 -i 1 -m 1 –vm-bytes 256M -t 15s ja seurasin mahdollisia muutoksia dstatista. Prosessorin siirtymisen levosta rasitukseen näki jälleen selvästi.

Halusin nähdä myös verkon kuormituksen ja avasin Youtubesta 4K-videon. Videon katseleminen näkyi verkon kuormituksessa hyvin.

Keskellä recv- ja send -arvot kertovat vastaanotetun ja lähetetyn datan määrän. Ylhäällä ennen videon avaamista. Videon katselun aikana datan vastaanotto nousi jopa 10 megaan (vihreällä keskellä)



e) ss –listening –tcp –numeric; ss –listening –tcp; ss –tcp; ss –listening –udp; ss –listening –udp;

Kyseessä on useamman komennon ketjutus. Tarkemmin eri komennoista voi lukea täältä.

ss –listening –tcp –numeric
Näyttää kuunneltavat TCP-portit (numeroina esim. :80).

ss –listening –tcp
Näyttää kuunneltavat TCP-portit (niminä, esim. :http).

ss –tcp
Näyttää TCP-portit. Ilmeisesti muodostetut yhteydet (ESTAB)?

ss –listening –udp
Näyttää kuunneltavat UDP-portit.

Kokeilin, saisinko näkymään SSH-yhteyden listauksessa. Avasin SSH-yhteyden koneeseeni, ja kappas kummaa, yhteys näkyi myös porttilistauksessa:

SSH-yhteys keskimmäisenä.

f) grep -i error /var/log/syslog; grep -ir error /var/log/



Komennolla grep -i error /var/log/syslog voit etsiä kyseisestä tiedostosta kaikki rivit, joissa on sana error. Sanan kirjoitusasulla ei ole väliä, mikäli komennossa käytetään -i -määritettä. Terminaalissa hakusana on korostettu punaisella värillä, mikä helpottaa rivien lukemista. Erroreita näkyi, mutta eivät aiheuttaneet ongelmia tehtäviä tehdessä:

$ grep -i error /var/log/syslog
Mar 24 15:52:36 xubuntu kernel: [    6.244415] RAS: Correctable Errors collector initialized.
Mar 24 15:52:36 xubuntu gpu-manager[1427]: Error: can't open /lib/modules/5.0.0-23-generic/updates/dkms
Mar 24 15:52:36 xubuntu gpu-manager[1427]: Error: can't open /lib/modules/5.0.0-23-generic/updates/dkms
Mar 24 15:52:36 xubuntu NetworkManager[1417]: <warn>  [1585065156.8887] Error: failed to open /run/network/ifstate
Mar 24 15:52:36 xubuntu snapd[1409]: helpers.go:146: error trying to compare the snap system key: system-key missing on disk
Mar 24 15:52:40 xubuntu snapd[1409]: stateengine.go:102: state ensure error: cannot decode new commands catalog: got unexpected HTTP status code 429 via GET to "https://api.snapcraft.io/api/v1/snaps/names?confinement=strict%2Cclassic"
Mar 24 15:53:18 xubuntu pulseaudio[4094]: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.TimedOut: Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)
Mar 24 15:53:23 xubuntu systemd-resolved[1351]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
Mar 24 22:26:04 xubuntu snapd[19322]: helpers.go:104: error trying to compare the snap system key: system-key versions not comparable



Komento grep -ir error /var/log/ on muuten sama kuin edellinen, mutta siihen on lisätty -r -määre. Se tarkoittaa sitä, että sanaa error etsitään kohdekansiosta, ja kaikista sen alikansioista. Haku siis kattaa useita tiedostoja, kun edellisessä haussa tarkasteltiin vain yhtä tiedostoa:

/var/log/apt/term.log:Enabling conf localized-error-pages.
/var/log/bootstrap.log:Selecting previously unselected package libgpg-error0:amd64.
/var/log/bootstrap.log:Preparing to unpack .../libgpg-error0_1.27-6_amd64.deb ...
/var/log/bootstrap.log:Unpacking libgpg-error0:amd64 (1.27-6) ...
/var/log/bootstrap.log:Setting up libgpg-error0:amd64 (1.27-6) ...
grep: /var/log/btmp: Permission denied
/var/log/dpkg.log:2019-08-05 18:57:44 install libgpg-error0:amd64 <none> 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:44 status half-installed libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:44 status unpacked libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:44 status unpacked libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:46 configure libgpg-error0:amd64 1.27-6 <none>
/var/log/dpkg.log:2019-08-05 18:57:46 status unpacked libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:46 status half-configured libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:46 status installed libgpg-error0:amd64 1.27-6
Binary file /var/log/journal/40af2bd02340436792345e8c86eb1f80/system.journal matches
grep: /var/log/lightdm/x-0.log: Permission denied
grep: /var/log/lightdm/lightdm.log: Permission denied
grep: /var/log/speech-dispatcher: Permission denied
grep: /var/log/tallylog: Permission denied
/var/log/Xorg.0.log:	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
/var/log/Xorg.0.log.old:	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
/var/log/installer/dm:	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
/var/log/installer/dm:(panel:1825): Gtk-WARNING **: 15:52:41.070: Theme parsing error: <data>:6:33: The style property GtkWidget:focus-line-width is deprecated and shouldn't be used anymore. It will be removed in a future version
/var/log/installer/dm:(panel:1825): Gtk-WARNING **: 15:52:41.070: Theme parsing error: <data>:7:30: The style property GtkWidget:focus-padding is deprecated and shouldn't be used anymore. It will be removed in a future version
/var/log/installer/dm:xfsettingsd: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.
/var/log/installer/dm:XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
/var/log/kern.log:Mar 24 15:52:36 xubuntu kernel: [    6.244415] RAS: Correctable Errors collector initialized.
/var/log/syslog:Mar 24 15:52:36 xubuntu kernel: [    6.244415] RAS: Correctable Errors collector initialized.
/var/log/syslog:Mar 24 15:52:36 xubuntu gpu-manager[1427]: Error: can't open /lib/modules/5.0.0-23-generic/updates/dkms
/var/log/syslog:Mar 24 15:52:36 xubuntu gpu-manager[1427]: Error: can't open /lib/modules/5.0.0-23-generic/updates/dkms
/var/log/syslog:Mar 24 15:52:36 xubuntu NetworkManager[1417]: <warn>  [1585065156.8887] Error: failed to open /run/network/ifstate
/var/log/syslog:Mar 24 15:52:36 xubuntu snapd[1409]: helpers.go:146: error trying to compare the snap system key: system-key missing on disk
/var/log/syslog:Mar 24 15:52:40 xubuntu snapd[1409]: stateengine.go:102: state ensure error: cannot decode new commands catalog: got unexpected HTTP status code 429 via GET to "https://api.snapcraft.io/api/v1/snaps/names?confinement=strict%2Cclassic"
/var/log/syslog:Mar 24 15:53:18 xubuntu pulseaudio[4094]: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.TimedOut: Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)
/var/log/syslog:Mar 24 15:53:23 xubuntu systemd-resolved[1351]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
/var/log/syslog:Mar 24 22:26:04 xubuntu snapd[19322]: helpers.go:104: error trying to compare the snap system key: system-key versions not comparable
grep: /var/log/boot.log: Permission denied

Ilmeisesti joidenkin tiedostojen/pakettien asentamisen kanssa oli jossain vaiheessa ongelmia:

/var/log/dpkg.log:2019-08-05 18:57:44 install libgpg-error0:amd64 <none> 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:44 status half-installed libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:44 status unpacked libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:44 status unpacked libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:46 configure libgpg-error0:amd64 1.27-6 <none>
/var/log/dpkg.log:2019-08-05 18:57:46 status unpacked libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:46 status half-configured libgpg-error0:amd64 1.27-6
/var/log/dpkg.log:2019-08-05 18:57:46 status installed libgpg-error0:amd64 1.27-6

Tehtäviä tehdessä en kuitenkaan törmännyt ongelmiin. Kaikki toimi niin kuin pitikin. Mikäli ongelmia kuitenkin ilmenisi, olisi niitä hyvä lähteä ratkomaan logien kautta. Grepistä voi lukea lisää esimerkiksi täältä.



h) Analysoi lopuksi koko ajalta keräämäsi kuormitustiedot. Löydätkö esimerkiksi aiheuttamasi kuormituspiikin?

Lopuksi tarkastelin keräämiäni kuormitustietoja. Kaksi erillistä ikkunaa olivat keränneet koko harjoituksen ajan tietoja suorittimen sekä muistin käytöstä.

Tässä vaiheessa tajusin tehneeni virheen. Ikkunat olivat taustalla kyllä keränneet dataa, mutta sitä dataa näkyi vain viimeiseltä vajaalta kahdelta tunnilta (tai sitten en osannut selata oikein). Olin kuitenkin tehnyt rasitustestit jo useita tunteja aiemmin. Minun olisi pitänyt saada kerättyä data johonkin tiedostoon.

/var/log/sysstat/ sijainnissa oli kaksi sa -tiedostoa, mutta niihin oli tallentunut tietoa vain kahden minuutin välein ja rasitustestin pituudeksi olin höhlänä laittanut vain 15 sekuntia, joten rasitusta oli vaikea todeta. Tulipahan tästäkin virheestä otettua opiksi.

Ajoin kuitenkin lopuksi vielä stressitestin komennolla stress -c 4 -i 3 -m 3 –vm-bytes 256M -t 30s. Suorittimen rasitus näkyi selkeästi, kun idle tippui nollaan. Muistin rasitus nousi vain hieman.

Lopetin tehtävien tekemisen 25.3.2020 klo 3:30 (UTC +2). Aikaa tähän kaikkeen meni noin 6,5 tuntia.

Lähteet

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s

Create your website with WordPress.com
Aloitus
%d bloggaajaa tykkää tästä: