Fix wording and typos

This commit is contained in:
Pavle Portic 2020-02-21 22:54:12 +01:00
parent c6ca7de9f0
commit 4636d73f68
Signed by: TheEdgeOfRage
GPG Key ID: 6758ACE46AA2A849
1 changed files with 88 additions and 58 deletions

View File

@ -62,28 +62,36 @@
\mainmatter{}
\chapter{Motivacija}
Na osnovu konfiguracije Linux jezgra prilikom prevođenja, određene operacije koje se izvršavaju nad sistemom mogu imati različito vreme izvršavanja. Pozivanjem sistemskih poziva ili programa koji aktivno koriste pojedine sistemske pozive sa različitim konfiguracijama jezgra i poređenjem vremena izvršavanja možemo da utvrdimo kako ti konfiguracioni parametri utiču na vreme izvršavanja pojedinačnih poziva, a samim tim i programa koje korisnik pokreće. U ovom projektu izdvojeni su kritični sistemski pozivi i poređeno je njihovo vreme izvršavanja sa različitim konfiguracijama Linux jezgra.
Na osnovu konfiguracije Linux jezgra prilikom prevođenja, određene operacije koje se izvršavaju nad sistemom mogu imati različito vreme izvršavanja. Pozivanjem sistemskih poziva ili programa koji aktivno koriste pojedine sistemske pozive, sa različitim konfiguracijama jezgra i poređenjem vremena izvršavanja može se utvrditi kako ti konfiguracioni parametri utiču na vreme izvršavanja pojedinačnih poziva, a samim tim i programa koje korisnik pokreće. U ovom projektu izdvojeni su kritični parametri i poređeno je vreme izvršavanja sistemskih poziva sa različitim konfiguracijama Linux jezgra.
\chapter{Metodologija merenja performansi}
Merenje performansi je proces poredjenja odabrane metrike između različitih sistema koji imaju sličnu namenu. Poređenje se može vršiti interno (u okviru jednog sistema, sa različitim vrednostima kongiguracionih parametara činilaca tog sistema) ili eksterno (poređenjem performansi sa sličnim sistemima, koje najčešće proizvodi konkurentna kompanija).
Merenje performansi je proces poređenja odabrane metrike između različitih sistema koji imaju sličnu namenu. Poređenje se može vršiti interno (u okviru jednog sistema, sa različitim vrednostima konfiguracionih parametara činilaca tog sistema) ili eksterno (poređenjem performansi sa sličnim sistemima, koje najčešće proizvodi konkurentna kompanija).
Metrike koje se najčešće koriste su:
Metrike koje se najčešće porede su:
\begin{samepage}
\begin{itemize}
\item cena po jedinici merenja
\item produktivnost po jedinici merenja
\item vreme izvršava po jedinici merenja
\item broj otkaza po jedinici merenja
\item Cena po jedinici merenja
\item Produktivnost po jedinici merenja
\item Vreme izvršava po jedinici merenja
\item Broj otkaza po jedinici merenja
\end{itemize}
\end{samepage}
Često se merenje performansi prepusti nekoj firmi koja je zadužena da sprovede ceo proces merenja. Metodologija merenja performansi~\cite{metodologija} sastoji se iz nekoliko koraka, koji će biti opisani u narednim sekcijama.
Često se merenje performansi prepusti nekoj trećoj firmi koja je zadužena da sprovede ceo proces merenja. Metodologija merenja performansi~\cite{metodologija} sastoji se iz nekoliko koraka, koji su opisani u narednim sekcijama.
\section{Planiranje}
Planiranje je proces koji se radi pre merenja performansi. On je zadužen da definiše način merenja performansi, kriterijume merenja, kriterijume poređenja itd. Sastoji se od 4 koraka: identifikacija funkcionalnosti čije se performanse mere, pronalaženje najboljih od najboljih u toj oblasti, biranje kriterijuma merenja performansi i izbor načina prikupljanja podataka.
Planiranje je proces koji se radi pre merenja performansi. On je zadužen da definiše način merenja performansi, kriterijume merenja, kriterijume poređenja itd. Sastoji se od četiri koraka:
\begin{samepage}
\begin{enumerate}
\item Identifikacija funkcionalnosti čije se performanse mere
\item Pronalaženje najboljih od najboljih u toj oblasti
\item Biranje kriterijuma merenja performansi
\item Izbor načina prikupljanja podataka
\end{enumerate}
\end{samepage}
\subsection{Identifikacija funkcionalnosti čije se performanse mere}
Ovaj korak je zadužen za uspostavljanje metrika koje se mere. Na osnovu metrika kasnije se utvrđuju funkcionalnosti koje su dovele do izmerenih vrednosti metrika i porede se sa drugim sistemima ili istim sistemima pri drugačijim uslovima merenja. Potrebno je definisati parametre koje je potrebno menjati da bi se izmerile performanse. Metrike se utvrđuju kroz praktično znanje ili istraživanje sistema čije se performanse mere.
Ovaj korak je zadužen za uspostavljanje metrika koje se mere. Na osnovu metrika kasnije se utvrđuju funkcionalnosti koje su dovele do izmerenih vrednosti metrika i porede se sa drugim sistemima ili istim sistemima pri drugačijim uslovima merenja. Potrebno je definisati parametre koji se menjaju da bi se izmerile performanse. Metrike se utvrđuju kroz praktično znanje ili istraživanje sistema čije se performanse mere.
Pored metrika, u ovom koraku se utvrđuju resursi koji su potrebni za merenje metrika odabranog sistema. U resurse spadaju ljudi koji vrše merenje, objekti čije se performanse mere, okruženje u kojem se vrši merenje i drugi potrebni resursi, ako postoje.
@ -95,28 +103,42 @@ Ako se merenje performansi vrši eksterno, onda je potrebno naći najbolje preds
Ovakvo merenje performansi se naziva i ``Takmičarsko merenje performansi''.
\subsection{Biranje kriterijuma merenja performansi}
U prvom koraku planiranja izabrane su metrike sistema koje će se meriti. Te metrike treba kalibrisati prema već postojećim metrikama ako postoje, ili treba osmisliti sistem kalibrisanja koji će se koristiti ako prethodna merenja ne postoje. Potrebno je razjasniti značenje brojeva koji se dobijaju kao rezultat merenja i pridružiti im merne jedinice. Takođe je potrebno razjasniti reči kojima se opisuje proces merenja.
U prvom koraku planiranja izabrane su metrike sistema koje će se meriti. Te metrike treba kalibrisati prema već postojećim metrikama ako postoje, ili treba osmisliti sistem kalibrisanja koji će se koristiti, ako prethodna merenja ne postoje. Potrebno je razjasniti značenje brojeva koji se dobijaju kao rezultat merenja i pridružiti im merne jedinice. Takođe je potrebno razjasniti reči kojima se opisuje proces merenja.
Rezultat ovog koraka je detaljan opis kvalitativnih ili kvantitativnih vrednosti koje opisuju reziltat merenja. Češće se koriste kvantitativne metrike zato što daju preciznije rezultate merenja.
\subsection{Izbor načina prikupljanja podataka}
\subsection{Izbor načina prikupljanja podataka}\label{sec:izbor_nacina_prikupljanja_podataka}
Kao poslednji korak planiranja potrebno je navesti sve postojeće podatke i podatke koje je potrebno izmeriti. U ovom koraku se opisuju objekti, metode i ljudi koji su uključeni u merenje. Ako je potrebno i moguće, prikupljaju se i postojeći podaci konkurentnih sistema radi poređenja. Za neke metrike se često definiše više načina merenja radi sigurnosti ispravnosti merenja. Naravno, očekuje se da rezultat u tom slučaju bude isti za iste ulazne parametre.
\section{Analiza}
Analiza je proces merenja performansi na način koji je definisan u koraku planiranja. U ovom procesu se prkupljaju i analiziraju podaci. Sastoji se od 3 koraka: prikupljanje podataka interno i eksterno, merenje i poređenje performansi sistema i nalaženje najboljeg načina za poboljšanje performansi sistema.
Analiza je proces merenja performansi na način koji je definisan u koraku planiranja. U ovom procesu se prkupljaju i analiziraju podaci. Sastoji se od tri koraka:
\begin{samepage}
\begin{enumerate}
\item Interno i eksterno prikupljanje podataka
\item Merenje i poređenje performansi sistema
\item Nalaženje najboljeg načina za poboljšanje performansi sistema
\end{enumerate}
\end{samepage}
\subsection{Prikupljanje podataka interno i eksterno}
U ovom koraku se prikupljaju podaci interno i eksterno (ako ima potrebe i ako su dostupni). Podaci se prikupljaju na način koji je definisan u tački 2.1.4.
\subsection{Interno i eksterno prikupljanje podataka}
U ovom koraku se prikupljaju podaci interno i eksterno (ako ima potrebe i ako su dostupni). Podaci se prikupljaju na način koji je definisan u \hyperref[sec:izbor_nacina_prikupljanja_podataka]{sekciji 2.1.4}.
\subsection{Merenje i poređenje performansi sistema}
Mere se performanse sistema na način koji je opisan u procesu planiranja. Ako ima potrebe, vrše se transformacije izmerenih podataka. Transformacije se rade da bi podaci mogli da se porede sa podacima sličnih sistema ili istih sistema sa različitim ulaznim parametrima.
Mere se performanse sistema na način koji je opisan u procesu planiranja. Ako ima potrebe, vrše se transformacije izmerenih podataka. Transformacije se rade kako bi podaci mogli da se porede sa podacima sličnih sistema ili istih sistema sa različitim ulaznim parametrima.
Poređenjem se nalaze razlike u performansama sistema. Razlike mogu biti negativne (sistem čije se performanse mere ima lošije performanse od sistema sa kojim se poredi), neutralne (sistem čije se performanse mere ima iste performanse kao sistem sa kojim se poredi) i pozitivne (sistem čije se performanse mere ima bolje performanse od sistema sa kojim se poredi).
Poređenjem se nalaze razlike u performansama sistema koje mogu biti:
\begin{samepage}
\begin{itemize}
\item Negativne --- sistem čije se performanse mere ima lošije performanse od sistema sa kojim se poredi
\item Neutralne --- sistem čije se performanse mere ima iste performanse kao sistem sa kojim se poredi
\item Pozitivne --- sistem čije se performanse mere ima bolje performanse od sistema sa kojim se poredi
\end{itemize}
\end{samepage}
Ako su razlike negativne (a ponekad i ako su neutralne ili pozitivne), isputuje se razlog koji dovodi do tih performansi.
Ako su razlike negativne (a ponekad i ako su neutralne ili pozitivne), isputuje se razlog koji dovodi do tih razlika.
\subsection{Nalaženje najboljeg načina za poboljšanje performansi sistema}
Ako ima potrebe za poboljšanjem sistema, procenjuje se da li se poboljšanje isplati i da li je ono uopsšte potrebno za slučaj korišćenja za koji je sistem namenjan.
Ako ima potrebe za poboljšanjem sistema, procenjuje se da li se poboljšanje isplati i da li je ono uopšte potrebno za slučaj korišćenja za koji je sistem namenjen.
Da bi se poboljšale performanse sistema, najčešće se radi na smanjenju negativnih razlika.
@ -130,36 +152,41 @@ Ova oblast objašnjava način merenja performansi sistemskih poziva koji zavise
\section{Planiranje}
\subsection{Identifikacija funkcionalnosti čije se performanse mere}
Na osnovu rada ``An Analysis of Performance Evolution of Linuxs Core Operations''~\cite{rad} i poznavanja Linux operativnog sistema, odlučili smo da merimo vreme izvršanja sledećih sistemskih poziva:
\begin{itemize}
\item thread
\item fork
\item read
\item write
\item mmap
\item munmap
\item page fault
\item send
\item recv
\end{itemize}
Detaljno objašnjenje pokretanja i uloge ovih sistemskih poziva biće objašnjeno u petom poglavlju.
\subsection{Identifikacija funkcionalnosti čije se performanse mere}\label{identifikacija_funkcionalnosti}
Na osnovu rada ``An Analysis of Performance Evolution of Linuxs Core Operations''~\cite{rad} i poznavanja Linux operativnog sistema, odlučeno je da se meri vreme izvršanja sledećih sistemskih poziva:
\begin{samepage}
\begin{itemize}
\item thread
\item fork
\item read
\item write
\item mmap
\item munmap
\item page fault
\item send
\item recv
\end{itemize}
\end{samepage}
Vreme izvršanja sistemskih poziva se meri pri promeni konfiugracionih parametara Linux jezgra, kao što su:
\begin{itemize}
\item CONFIG\_HARDENED\_USERCOPY
\item CONFIG\_MEMCG
\item CONFIG\_PAGE\_TABLE\_ISOLATION
\item CONFIG\_RETPOLINE
\item CONFIG\_TRANSPARENT\_HUGEPAGE\_ALWAYS
\item CONFIG\_USERFAULTFD
\end{itemize}
Detaljno objašnjenje pokretanja i uloge ovih sistemskih poziva su dati u petom poglavlju.
Vreme izvršanja sistemskih poziva se meri pri promeni konfiguracionih parametara Linux jezgra, kao što su:
\begin{samepage}
\begin{itemize}
\item CONFIG\_HARDENED\_USERCOPY
\item CONFIG\_MEMCG
\item CONFIG\_PAGE\_TABLE\_ISOLATION
\item CONFIG\_RETPOLINE
\item CONFIG\_TRANSPARENT\_HUGEPAGE\_ALWAYS
\item CONFIG\_USERFAULTFD
\end{itemize}
\end{samepage}
Resursi korišćeni za merenje ovih performansi su lični računari sa sledećim procesorima:
\begin{itemize}
\item AMD Ryzen 7 1700 @ 3.6 GHz
\item Intel Core i7-6500U @ 2.5 GHz
\item Intel Core i5-3320M @ 2.6 GHz
\item Intel Core i7--6500U @ 2.5 GHz
\item Intel Core i5--3320M @ 2.6 GHz
\end{itemize}
Verzija Linux jezgra je 5.5 i ista je na svim računarima. Merenje se vrši od strane autora ovog rada. Pošto su merenja jednostavna, merenju svakog sistemskog poziva se pristupa sa istim prioritetom.
@ -168,40 +195,43 @@ Verzija Linux jezgra je 5.5 i ista je na svim računarima. Merenje se vrši od s
Pošto cilj ovog rada nije unapređenje performansi nekog sistema, nije potrebno pronalaziti sistem sa kojim bi se ovaj sistem poredio. Poređenje se vrši između performansi koje sistem postigne pri različitim ulaznim parametrima.
\subsection{Biranje kriterijuma merenja performansi}
Kriterijum merenja performansi je brzina izvršanja sistemskih poziva koji su navedeni u sekciji 3.1.1. Brzina se izražava u milisekundama (0.001s) za sve sistemske pozive. Sistemski pozivi se izvršavaju više puta radi veće precinsosti merenja. Pri promeni ulaznih parametara (konfiguracije jezgra) broj izvršavanja sistemskih poziva se ne menja.
%\label{sec:hello}
Kriterijum merenja performansi je brzina izvršanja sistemskih poziva koji su navedeni u \hyperref[identifikacija_funkcionalnosti]{sekciji 3.1.1}. Brzina se izražava u milisekundama (1E-3 s) za sve sistemske pozive. Sistemski pozivi se izvršavaju više puta radi veće preciznosti merenja. Pri promeni ulaznih parametara (konfiguracije jezgra) broj izvršavanja sistemskih poziva se ne menja.
\subsection{Izbor načina prikupljanja podataka}
Podaci se prikupljaju tako što se isti program koji poziva sistemske pozive pokreće na jezgru operativnog sistemima sa različitim parametrima. Kao rezultat, program vraća vreme izvršavanja za svaki sistemski poziv.
Podaci se prikupljaju tako što se isti program koji poziva sistemske pozive pokreće na jezgru operativnog sistemima sa različitim parametrima. Kao rezultat, program vraća vreme izvršavanja za svaki sistemski poziv. Program se poziva deset puta i računa se prosečno vreme izvršavanja za svaki sistemski poziv.
\section{Analiza}
\subsection{Prikupljanje podataka interno i eksterno}
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{Interno i eksterno prikupljanje podataka}
Prikupljanje podataka izvršeno je na način koji je naveden u procesu planiranja. Detalji arhitekture sistema i programa koji su pokretani opisani su u naredna dva poglavlja.
\subsection{Merenje i poređenje performansi sistema}
Prikupljeni podaci prikazani su narednim tabelama. Merna jedinica svih vremenskih intervala su milisekunda:
Prikupljeni podaci prikazani su narednim tabelama. Merna jedinica svih vremenskih intervala je milisekunda:
% TODO Remove slab freelist randomization
\begin{figure}[H]
\includegraphics[width=\linewidth]{images/jelena.png}
\caption{Intel Core i7-6500U @ 2.5 GHz}
\includegraphics[width=\linewidth]{images/neon.png}
\caption{AMD Ryzen 7 1700 @ 3.6 GHz}
\end{figure}
\begin{figure}[H]
\includegraphics[width=\linewidth]{images/neon.png}
\caption{AMD Ryzen 7 1700 @ 3.6 GHzPAVLEE}
\includegraphics[width=\linewidth]{images/jelena.png}
\caption{Intel Core i7--6500U @ 2.5 GHz}
\end{figure}
\begin{figure}[H]
\includegraphics[width=\linewidth]{images/natrijum.png}
\caption{AMD Ryzen 7 1700 @ 3.6 GHzPAVLEE}
\caption{Intel Core i5--3320M @ 2.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.
% TODO analiza rezultata
Iz priloženog se primećuje da različite konfiguracije Linux jezgra znatno utiču na vreme izvršavanja pojedinih sistemskih poziva. Pošto je uzrok promene u vremenu paljenje i gašenje pojedinih funkcionalnosti jezgra, nije potrebno ispitivanje razloga koji dovodi do promene performansi.
\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.
Računari u današnje vreme imaju široki spektar primene i samim tim su im potrebna različite konfiguracije parametara jezgra. Neka podešavanja je moguće izmeniti, dok su druga neophodna za određene primene. Samim tim ne postoji savršeno rešenje za pitanje izbora parametara. Uloga svakog od testiranih konfiguracionih 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.
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 konfiguracione parametre Linux jezgra, prevesti ga i instalirati na računaru.
\chapter{Arhitektura} % TODO
\section{Linux jezgro}