This commit is contained in:
Jelena Dokic 2020-02-12 12:34:07 +01:00
parent f0bb3fa7c2
commit 8babcdfaae
1 changed files with 13 additions and 9 deletions

View File

@ -49,7 +49,7 @@
\makeatother
\raggedbottom{}
\title{\textbf{Merenje performansi sistemskih poziva u zavisnosti od konfiguracije Linux jezgra} \protect\\ Računarstvo visokih performansi}
\title{\textbf{Merenje performansi sistemskih poziva u zavisnosti od konfiguracije Linux jezgra} \protect\\ Računarski sistemi visokih performansi}
\date{2020\\ Februar}
\author{Jelena Dokić, Pavle Portić}
@ -143,7 +143,7 @@ Na osnovu rada ``An Analysis of Performance Evolution of Linuxs Core Operatio
\item send
\item recv
\end{itemize}
Detaljno objašnjenje pokretanja i uloge ovih sistemskih poziva biće objašnjeno u poglavlju JELENAAA
Detaljno objašnjenje pokretanja i uloge ovih sistemskih poziva biće objašnjeno u petom poglavlju.
Vreme izvršanja sistemskih poziva se meri pri promeni konfiugracionih parametara Linux jezgra, kao što su:
\begin{itemize}
@ -179,19 +179,21 @@ Podaci se prikupljaju tako što se isti program koji poziva sistemske pozive pok
Prikupljanje podataka izvršeno je na način koji je naveden u procesu planiranja. Detalji arhitekture PAVLEEE i programa koji su pokretani prikazani su u naredna dva poglavlja.
\subsection{Merenje i poređenje performansi sistema}
Prikupljeni podaci prikazani su narednoj tabeli. JELENAAAmnozina? Merna jedinica svih vremenskih intervala su mikrosekunda:
Prikupljeni podaci prikazani su narednim tabekama. Merna jedinica svih vremenskih intervala su mikrosekunda:
TABELAAA
\begin{figure}[H]
\includegraphics[width=\linewidth]{images/pavle.png}
\caption{PAVLEEE}
\caption{AMD Ryzen 7 1700 @ 3.6 GHz}
\end{figure}
JELENAAA detalji
Iz priloženog se vidi da različite konfiguracije parametara jezgra Linux operativnog sistema znatno utiču na vreme izvršavanja pojedinih sistemskih poziva. Pošto je uzrok promene u vremenu paljenje i gašenje tih parametara, ispitivanje razloga koji dovodi do promene performansi nije potrebno.
\subsection{Nalaženje najboljeg načina za poboljšanje performansi sistema}
Računari u današnje vreme imaju veliki spektar primene i samim tim su im potrebna različita podešavanja parametara jezgra. Neke je moguće ugasiti, dok su neki neophodni za neke od primena. Samim tim ne postoji savršeno rešenje po pitanju izbora parametara i to se ostavlja čitaocima na izbor. Uloga svakog od parametara je objašnjena u četvrtom poglavlju.
\section{Integracija}
Pošto ovo merenje performansi nije takmičarsko merenje i ne služi za kreiranje komercijalnog proizvoda, integracija se znatno olakšava. Potrebno je podesiti parametre jezgra Linux operativnog sistema, kompajlirati ga i instalirati na računaru.
\chapter{Arhitektura} % TODO
\section{Linux jezgro}
Linux jezgro operativnog sistema je softver otvorenog koda, što znači da svaki korisnik može da preuzme celokupan kod sa interneta i prevede ga za lični računar. Pored toga što se neke funkcionalnosti Linux jezgra mogu kontrolisati tokom vremena izvršavanja, nudi i mnoštvo konfiguracionih parametara tokom prevođenja. Ti parametri ne utiču samo na mogućnosti jezgra, već mogu i menjati način rada internih komponenti (modula). Shodno tome, menjaju se i performanse jezgra, tj vreme izvršavanja koda tih modula.
@ -219,7 +221,9 @@ Transparentne podrazumevane velike stranice dozvoljavaju jezgru da uvek odvoji v
Rukovanje \textit{pagefault} greškom u korisničkom prostoru ima primena za virtuelne mašine, ali sa sobom nosi i smanjene performanse nekih sistemskih poziva, najiviše za \texttt{fork}. Razlog je što prilikom kreiranja procesa, sistemski poziv mora proveriti za svaku memorijsku regiju roditlja da li ima informacije o rukovanju \textit{pagefault} grešaka u korisničkom prostoru.
\chapter{Sistemski pozivi}
Sistemski pozivi su pozivani pomoću programskog jezika c i odgovarajućih biblioteka za neke od poziva, što je prikazano u nastavku teksta. Svaki sistemski poziv se testira u okviru različitog programa, a za pokretanje tih programa i prikazivanje rezultata zadužena je python skripta koja je takođe opisana u ovom poglavlju. JELENAAA
Sistemski pozivi su način na koji programi zahtevaju razne servise od jezgra operativnog sistema. To uključuje servise za komunikaciju sa eksternim uređajima (na primer: pristup disku), kreiranje i izvršavanje novih procesa, komunikaciju sa servisima koje samo jezgro pruža (na primer: raspoređivanje procesa), itd. Sistemski pozivi čine neophodan interfejs između procesa i operativnog sistema.
U ovom projektu, sistemski pozivi su pozivani pomoću programskog jezika c i odgovarajućih biblioteka za neke od poziva, što je prikazano u nastavku teksta. Svaki sistemski poziv se testira u okviru različitog programa, a za pokretanje tih programa i prikazivanje rezultata zadužena je python skripta koja je takođe opisana u ovom poglavlju.
Za merenje vremena koje je potrebno za izvršavanje sistemskih poziva koristi se biblioteka \texttt{sys/time.h} koja pokrene merenje vremena pre pozivanja sistemskog poziva:
\begin{minted}{c}
@ -234,7 +238,7 @@ i zaustavi merenje vremena nakon izvršenja sistemskog poziva:
Oduzimanjem ova dva intervala, dobija se vreme koje je bilo potrebno za izvršavanje koda koji se nalazi između ovih naredbi.
\section{Fork}
Ova sekcija prikazuje merenje vremena koje je potrebno za kreiranje novoih procesa. Program kao argument komandne linije prima broj \texttt{n} koji označava broj poziva sistemskog poziva fork. Nakon n poziva, postojaće 2\textasciicircum{n} procesa. Poziv sistemskog poziva izgleda ovako: % TODO jelena
Ova sekcija prikazuje merenje vremena koje je potrebno za kreiranje novoih procesa. Program kao argument komandne linije prima broj \texttt{n} koji označava broj poziva sistemskog poziva fork. Nakon n poziva, postojaće $ 2^n $ procesa. Poziv sistemskog poziva izgleda ovako:
\begin{minted}{c}
syscall(SYS_fork);
\end{minted}
@ -260,7 +264,7 @@ gde je \texttt{fileno(f)} deskriptor fajla u koji se piše, \texttt{text} tekst
Povratna vrednost sistemskog poziva write je broj upisanih bajtova ako je pisanje uspešo ili -1 ako pisanje nije uspešno.
\section{Mmup i munmap}
Ova sekcija je zadužena da prikaže način merenja vremena koje je potrebno za pozivanje mmap i munmap sistemskih poziva. Mmap povezuje adresni prostor procesa sa objektom u RAM JELENAAA memoriji. Munmap sistemski poziv je zadužen da ukloni vezu koju mmap kreira. Pošto su operacije usko povezane, njihovo vreme izvršavanja se meri zajedno. Program kao argument komandne linije prima broj izvršavanja sistemskih poziva mmap i munmap, \texttt{n} i broj memorijskih stranica koje se mapiraju, \texttt{pages}. Svaki od n poziva prvo izvršava mmap, pa nakon njega munmap sistemski poziv.
Ova sekcija je zadužena da prikaže način merenja vremena koje je potrebno za pozivanje mmap i munmap sistemskih poziva. Mmap povezuje adresni prostor procesa sa objektom u RAM memoriji. Munmap sistemski poziv je zadužen da ukloni vezu koju mmap kreira. Pošto su operacije usko povezane, njihovo vreme izvršavanja se meri zajedno. Program kao argument komandne linije prima broj izvršavanja sistemskih poziva mmap i munmap, \texttt{n} i broj memorijskih stranica koje se mapiraju, \texttt{pages}. Svaki od n poziva prvo izvršava mmap, pa nakon njega munmap sistemski poziv.
Mmap:
\begin{minted}{c}