Professional Documents
Culture Documents
Andreea-Carmen Ifrim
Grupa 342C5
VMSTAT
Memory:
swpd: indică numărul de blocuri evacuate pe disk (swapped out); echivalent cu totalul memoriei
virtuale folosite;
free: memoria liberă ;
Swap:
si: numărul de blocuri pe secundă pe care sistemul de operare le mapează din memoria virtuală
(swap in);
so: numărul de blocuri pe secundă pe care sistemul de operare le evacuează (swap out);
I/O:
System:
CPU:
Valorile acestor parametrii au măsurate în timpul rulării codului temei (timp de 30secunde), cu patru
limitări a memoriei virtuale diferite.
1
Limitare 1024MB
În cazul limitării memoriei virtuale la 1024MB, programul funcționează corespunzător, generându-se
fișierul cu N = 10^8 numere pe baza cărora se determină mediana și abaterea standard.
Memorie
Din graficul generat pe baza parametrilor pentru memorie (swpd și free), se poate observa că:
- dimensiunea memoriei libere scade deoarece pe parcursul rulării programului se fac alocări
suplimentare pe stivă;
- numărul de pagini virtuale mapate este constant pe toată durata monitorizării.
Swap
Pe parcursul rulării programului nu a fost mapată (swap in) sau evacuată (swap out) nicio pagină de
memorie virtuală, astfel valoarea parametrilor si și so a fost 0 pe toată durata monitorizării.
2
I/O
Din graficul generat pe baza valorilor înregistrate pentru parametrii I/O (bi și bo), se poate observa că:
- numărul de blocuri de intrare (bi) este foarte mic deoarece programul nu face cereri de citire în
memoria de pe disk;
- numărul de blocuri de ieșire (bo) este foarte mare, fapt datorat generării unui fișier foarte mare
și scrierea a N = 10^8 numere pe hard-disk.
3
Sistem
Din graficul generat pe baza parametrilor pentru sistem (in și cs), se poate observa că:
- numărul întreruperilor de sistem (is) este foarte mare și variază mult pe parcursul rulării
programului;
- numărul schimbărilor de context (cs) este de asemenea mare pe întreaga durată a procesului de
monitorizare
4
CPU
Din graficul generat pe baza parametrilor pentru monitorizarea CPU (us,sy,id,wa), se poate observa că:
- procesorul este folosit mai mult timp în user-mode pentru a rula codul non-kernel, lucru
remarcat din valorile parametrului us;
- programul folosește un timp scurt procesorul în system-mode (în interiorul kernelului), lucru
remarcat prin valorile paremtrului sy. Timpul petrecut de procesor în system-mode se datorează
alocării dinamice a memoriei, la apelul funcției malloc și accesării hardware-ului, în cazul nostru
pentru scrierea în fișier, moment când se înregistrează o creștere considerabilă a acestuia;
- timpul de neutilizare a procesorului este foarte mic (id);
- procesorul așteaptă doar în procente foarte mici după operații IO, înregistrându-se un singur
spike notabil.
5
Limitare 512MB
În cazul limitării memoriei virtuale la 512MB, programul funcționează corespunzător, generându-se
fișierul cu N = 10^8 numere pe baza cărora se determină mediana și abaterea standard.
Memorie
Din graficul generat pe baza parametrilor pentru memorie (swpd și free), se poate observa că, la fel ca în
primul caz:
- dimensiunea memoriei libere scade deoarece pe parcursul rulării programului se fac alocări
suplimentare pe stivă;
- numărul de pagini virtuale mapate este constant pe toată durata monitorizării.
Swap
La fel ca în cazul primei monitorizări, pe parcursul rulării programului nu a fost mapată (swap in) sau
evacuată (swap out) nicio pagină de memorie virtuală, astfel valoarea parametrilor si și so a rămas 0.
6
I/O
Din graficul generat pe baza parametrilor pentru I/O (bi și bo), se poate observa că:
- numărul de blocuri de intrare (bi) este aproape întotdeauna 0 deoarece programul nu face
cereri de citire în memoria de pe disk;
- numărul de blocuri de ieșire (bo) este foarte mare, fapt datorat generării unui fișier foarte mare
și scrierea a N = 10^8 numere pe hard-disk.
7
Sistem
La fel ca în cazul limitării memoriei virtuale la 1024MB, din graficul generat pe baza parametrilor pentru
sistem (in și cs), se poate observa că:
- numărul întreruperilor de sistem (is) este foarte mare și variază mult pe parcursul rulării
programului;
- numărul schimbărilor de context (cs) este de asemenea mare pe întreaga durată a procesului de
monitorizare;
- cei doi parametrii variază direct proporțional.
8
CPU
Din graficul generat pe baza parametrilor pentru monitorizarea CPU (us, sy, id, wa), se poate observa că:
- procesorul este folosit mai mult timp în user-mode pentru a rula codul non-kernel, lucru
remarcat din valorile parametrului us;
- programul folosește un timp scurt procesorul în system-mode (în interiorul kernelului), lucru
remarcat prin valorile paremtrului sy. Timpul petrecut de procesor în system-mode se datorează
alocării dinamice a memoriei, la apelul funcției malloc și accesării hardware-ului, în cazul nostru
pentru scrierea în fișier, moment când se înregistrează o creștere considerabilă a acestuia.
- timpul de neutilizare a procesorului este foarte mic (id);
- procesorul așteaptă doar în procente foarte mici după operații IO, înregistrându-se un singur
spike notabil.
9
Limitare 256MB
În cazul limitării memoriei virtuale la 256MB, programul nu mai funcționează corespunzător și dă
segmentation fault.
Memorie
Din graficul generat pe baza parametrilor pentru memorie (swpd și free), se poate observa că:
- spre deosebire de primele două cazuri, dimensiunea memoriei libere crește, ajungând la o
valoare constantă. Acest lucru se întâmplă deoarece, după terminarea programului (la secunda
2), memoria alocată anterior este eliberată.
- numărul de pagini virtuale mapate este constant pe toată durata monitorizării
Swap
La fel ca și la celelalte două rulări anteriore, nu a fost mapată (swap in) sau evacuată (swap out) nicio
pagină de memorie virtuală, astfel valoarea parametrilor si și so a fost 0 pe toată durata monitorizării.
10
I/O
Din graficul generat pe baza parametrilor pentru I/O (bi și bo), se poate observa că:
- numărul de blocuri de intrare (bi) este foarte mic deoarece programul nu face cereri de citire în
memoria de pe disk;
- numărul de blocuri de ieșire (bo) este de asemenea mic, comparativ cu valorile obținute în
primele două cazuri. Întrucât programul nu mai rulează, nu se vor mai genera cele N = 10 ^8
numere în fișier și în consecința nu vor mai exista scrieri pe disk.
11
Sistem
Din graficul generat pe baza parametrilor pentru sistem (in și cs), se poate observa că:
- numărul întreruperilor de sistem (is) rămâne la fel de mare ca în primele două cazuri;
- numărul schimbărilor de context (cs) rămâne de asemenea la fel de mare ca în primele două
cazuri;
- variația ambilor parametrii se menține asemănătoare cu cea observată la primele două rulări ale
programului.
12
CPU
Din graficul generat pe baza parametrilor pentru monitorizarea CPU (us, sy, id, wa), se poate observa că:
- spre deosebire de primele rulările anterioare ale programului, procesorul rămâne aproape
neutilizat, fiind aproape 100% idle;
- există doar un timp foarte scurt al procesorului utilizat în user-mode și system-mode, înainte de
apariția erorii segmentation fault;
- nici în acest caz nu se așteaptă după operații I/O.
13
Limitare 128MB
În cazul limitării memoriei virtuale la 128MB, programul nu mai funcționează corespunzător și dă
segmentation fault.
Memorie
La fel ca în cazul limitării anterioare, valorile parametrilor swpd și free rămân constate pe întreagă
monitorizare.
Swap
La fel ca și în cazul rulărilor anteriore, nu a fost mapată (swap in) sau evacuată (swap out) nicio pagină
de memorie virtuală, astfel valoarea parametrilor si și so a fost 0 pe toată durata monitorizării.
14
I/O
- numărul de blocuri de intrare (bi) este foarte mic deoarece programul nu face cereri de citire în
memoria de pe disk;
- numărul de blocuri de ieșire (bo) este de asemenea mic, comparativ cu valorile obținute în
primele două cazuri. Întrucât programul nu mai rulează, nu se vor mai scrie cele N = 10 ^8
numere în fișier și în consecința nu vor mai exista scrieri pe disk
15
Sistem
Din graficul generat pe baza parametrilor pentru sistem (in și cs), se poate observa că:
16
CPU
Din graficul generat pe baza parametrilor pentru monitorizarea CPU (us, sy, id, wa), se poate observa că:
- la fel ca în cazul rulării anterioare a programului, procesorul rămâne aproape neutilizat, fiind
aproape 100% idle;
- există doar un timp foarte scurt al procesorului utilizat în user-mode și system-mode, înainte de
apariția erorii segmentation fault
- nici în acest caz nu se așteaptă după operații I/O, valoarea parametrului wa fiind 0.
17
MPSTAT
Valorile acestor parametrii au măsurate în timpul rulării codului temei (timp de 30secunde). În
continuare se vor prezenta valorile înregistrate la fiecare limitare a memoriei.
18
Limitare 1024MB
Din graficul generat pe baza parametrilor pentru monitorizarea CPU (%user, %system, %idle), se poate
observa că:
- Procesorul rulează cea mai mare parte a timpului în user-mode pentru a executa codul non-
kernel, lucru remarcat din valorile parametrului %user; acestea sunt mult mai mari decât cele
ale la parametrului %system;
- Programul folosește doar un procent mic din timp procesorul în system-mode (în interiorul
kernelului), lucru remarcat prin valorile parametrului %system. Timpul petrecut de procesor în
system-mode se datorează alocării dinamice a memoriei, la apelul funcției malloc și accesării
hardware-ului, în cazul nostru pentru scrierea în fișier;
- Parametrii %nice, %irq, %soft, %iowait au pe durata întregii monitorizări valoarea 0, astfel că
procesorul rulează doar în user-mode sau system-mode (de aceea am ales să nu îi reprezint pe
grafic);
- În restul timpului de rulare a programului, procesorul este idle, deoarece acesta nu este ocupat
cereri I/O sau întreruperi.
19
Limitare 512MB
În cazul limitării memoriei virtuale la 512MB, programul funcționează corespunzător, generându-se
fișierul cu N = 10^8 numere pe baza cărora se determină mediana și abaterea standard.
Parametrii monitorizați rămân aproximativ la fel ca în cazul primei rulări. Astfel, din graficul generat pe
baza lor, se poate observa, asemănător primului caz:
- procesorul rulează cea mai mare parte a timpului în user-mode pentru a executa codul non-
kernel; valorile parametrului %user sunt mult mai mari decât cele ale la parametrului %system;
- programul folosește doar un procent mic din timp procesorul în system-mode (în interiorul
kernelului), lucru remarcat prin valorile parametrului %system. Timpul petrecut de procesor în
system-mode se datorează alocării dinamice a memoriei, la apelul funcției malloc și accesării
hardware-ului, în cazul nostru pentru scrierea în fișier;
- parametrii %nice, %irq, %soft, %iowait rămân pe durata întregii monitorizări la valoarea 0, astfel
că procesorul rulează doar în user-mode sau system-mode;
- în restul timpului de rulare a programului, procesorul este idle, deoarece acesta nu este ocupat
cereri I/O sau întreruperi.
20
Limitare 256MB
Din graficul generat pe baza parametrilor pentru monitorizarea CPU (%user, %system, %idle), se poate
observa că:
- spre deosebire de primele rulările ale programului, procesorul rămâne aproape neutilizat, fiind
aproape 100% idle;
- există doar un timp foarte scurt al procesorului utilizat în user-mode și system-mode, înainte de
apariția erorii segmentation fault
- și în acest caz parametrii %nice, %irq, %soft, %iowait rămân pe durata întregii monitorizări la
valoarea 0, astfel că procesorul rulează doar în user-mode sau system-mode;
21
Limitare 128MB
În cazul limitării memoriei virtuale la 128MB, programul nu mai funcționează corespunzător și dă
segmentation fault.
Din graficul generat pe baza parametrilor pentru monitorizarea CPU (%user, %system, %idle), se poate
observa că:
- la fel ca în cazul rulării anterioare a programului, procesorul rămâne aproape neutilizat, fiind
aproape 100% idle;
- există doar un timp foarte scurt al procesorului utilizat în user-mode și system-mode, înainte de
apariția erorii segmentation fault;
- și în acest caz parametrii %nice, %irq, %soft, %iowait rămân pe durata întregii monitorizări la
valoarea 0, astfel că procesorul rulează doar în user-mode sau system-mode;
22
IOSTAT
Valorile acestor parametrii au măsurate în timpul rulării codului temei (timp de 30secunde), cu patru
limitări de memorie diferite. De asmenea, datele au fost înregistrate pentru partiția sda.
23
Limitare 1024MB
kB_read/s și kB_wrtn/s
Din graficul generat pe baza parametrilor kb_read/s și kb_wrtn/s, se poate observa că:
- numărul de kilobytes citiți per secunda este foarte mic deoarece programul nu face cereri de
citire în memoria de pe disk; astfel valoarea parametrului kb_read/s rămâne aproape de 0 pe
întreaga durată a monitorizării (valorile sale sunt insesizabile pe grafic);
- numărul de kilobytes scriși per secunda este foarte mare; valorile mari înregistrate pentru
parametrul kb_wrtn/s sunt astfel fapt datorate generării unui fișier foarte mare și scrierea a N =
10^8 numere pe hard-disk.
24
kB_read și kB_wrtn
Din graficul generat pe baza parametrilor kb_read și kb_wrtn, se poate observa că:
- totalul numărului de kilobytes citiți este foarte mic deoarece programul nu face cereri de citire
în memoria de pe disk; astfel valoarea parametrului kb_read rămâne aproape 0;
- totalul numărului de kilobytes scriși este foarte mare; valorile mari înregistrate pentru
parametrul kb_wrtn se datoreaza generării unui fișier foarte mare și scrierea a N = 10^8 numere
pe hard-disk.
25
Limitare 512MB
kB_read/s și kB_wrtn/s
Datale obținute pentru rularea programului cu limitarea memoriei virtuale la 512MB sunt asemănătoare
cu cele anterioare. Astfel, din graficul generat pe baza parametrilor kb_read/s și kb_wrtn/s, se poate
observa că:
- numărul de kilobytes citiți per secunda este foarte mic deoarece programul nu face cereri de
citire în memoria de pe disk;
- numărul de kilobytes scriși per secunda este foarte mare;
26
kB_read și kB_wrtn
La fel ca în cazul parametrilor kb_read/s și kb_wrtn/s, datale obținute pentru rularea programului cu
limitarea memoriei virtuale la 512MB sunt asemănătoare cu cele anterioare și au aceeași interpretare.
27
Limitare 256MB
kB_read/s și kB_wrtn/s
Din graficul generat pe baza parametrilor kb_read/s și kb_wrtn/s, se poate observa că:
- numărul de kilobytes citiți per secunda este foarte mic deoarece programul nu face cereri de
citire în memoria de pe disk;
- numărul de kilobytes scriși per secunda este de asemenea mic, comparativ cu valorile obținute
în primele două cazuri. Întrucât programul nu mai rulează, nu se vor mai scrie cele N = 10 ^8
numere în fișier și în consecința nu vor mai exista scrieri pe disk.
28
kB_read și kB_wrtn
Din graficul generat pe baza parametrilor kb_read și kb_wrtn, se poate observa că:
- totalul numărului de kilobytes citiți este foarte mic deoarece programul nu face cereri de citire
în memoria de pe disk; astfel valoarea parametrului kb_read rămâne aproape 0.
- partiția sda înregistrează totuși de scriere mari la început, înainte de încetarea funcționării
programului.
29
Limitare 128MB
kB_read/s și kB_wrtn/s
Datale obținute pentru rularea programului cu limitarea memoriei virtuale la 128MB sunt asemănătoare
cu cele anterioare. Astfel, din graficul generat pe baza parametrilor kb_read/s și kb_wrtn/s, se poate
observa că:
- numărul de kilobytes citiți per secunda este foarte mic deoarece programul nu face cereri de
citire în memoria de pe disk;
- numărul de kilobytes scriși per secunda este de asemenea mic, comparativ cu valorile obținute
în primele două cazuri.
30
kB_read și kB_wrtn
La fel ca în cazul parametrilor kb_read/s și kb_wrtn/s, datale obținute pentru rularea programului cu
limitarea memoriei virtuale la 128MB sunt asemănătoare cu cele anterioare și au aceeași interpretare.
Concluzie
Folosind cele trei comenzi, vmstat, mpstat și iostat, am putut analiza comportamentul și performanțele
sistemului de calcul, în timpul rulării unui program ce solicită numeroase resurse.
Deoarece programul a fost rulat pe o mașina virtuală, cu capacitatea RAM de 4GB și un singur nucleu,
rezultatele nu au fost întocmai cele așteptate, iar performanțele sistemului nu au fost întotdeauna bune.
De asemenea, codul programului nu a fost optimizat special pentru a putea observa și cazurile în care se
generează o eroare de memorie. Astfel, în cazul limitării memoriei virtuale la 512MB, respectiv 128MB,
se pot observa valorile înregistrate pentru un program ce generează segmentation fault.
31