-
Notifications
You must be signed in to change notification settings - Fork 0
/
projekt.tex
374 lines (340 loc) · 19.5 KB
/
projekt.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
%==============================================================================
% tento soubor pouzijte jako zaklad
% this file should be used as a base for the thesis
% Autoři / Authors: 2008 Michal Bidlo, 2016 Jaroslav Dytrych
% Kontakt pro dotazy a připomínky: [email protected]
% Contact for questions and comments: [email protected]
%==============================================================================
% kodovani: UTF-8 (zmena prikazem iconv, recode nebo cstocs)
% encoding: UTF-8 (you can change it by command iconv, recode or cstocs)
%------------------------------------------------------------------------------
% zpracování / processing: make, make pdf, make clean
%==============================================================================
% Soubory, které je nutné upravit: / Files which have to be edited:
% projekt-20-literatura-bibliography.bib - literatura / bibliography
% projekt-01-kapitoly-chapters.tex - obsah práce / the thesis content
% projekt-30-prilohy-appendices.tex - přílohy / appendices
%==============================================================================
%\documentclass[]{fitthesis} % bez zadání - pro začátek práce, aby nebyl problém s překladem
%\documentclass[english]{fitthesis} % without assignment - for the work start to avoid compilation problem
%\documentclass[zadani]{fitthesis} % odevzdani do wisu - odkazy jsou barevné
\documentclass[english,zadani]{fitthesis} % for submission to the IS FIT - links are color
%\documentclass[zadani,print]{fitthesis} % pro tisk - odkazy jsou černé
%\documentclass[zadani,cprint]{fitthesis} % pro barevný tisk - odkazy jsou černé, znak VUT barevný
%\documentclass[english,zadani,print]{fitthesis} % for the color print - links are black
%\documentclass[english,zadani,cprint]{fitthesis} % for the print - links are black, logo is color
% * Je-li práce psaná v anglickém jazyce, je zapotřebí u třídy použít
% parametr english následovně:
% If thesis is written in english, it is necessary to use
% parameter english as follows:
% \documentclass[english]{fitthesis}
% * Je-li práce psaná ve slovenském jazyce, je zapotřebí u třídy použít
% parametr slovak následovně:
% If the work is written in the Slovak language, it is necessary
% to use parameter slovak as follows:
% \documentclass[slovak]{fitthesis}
% * Je-li práce psaná v anglickém jazyce se slovenským abstraktem apod.,
% je zapotřebí u třídy použít parametry english a enslovak následovně:
% If the work is written in English with the Slovak abstract, etc.,
% it is necessary to use parameters english and enslovak as follows:
% \documentclass[english,enslovak]{fitthesis}
% Základní balíčky jsou dole v souboru šablony fitthesis.cls
% Basic packages are at the bottom of template file fitthesis.cls
% zde můžeme vložit vlastní balíčky / you can place own packages here
\usepackage{listings}
% Kompilace po částech (rychlejší, ale v náhledu nemusí být vše aktuální)
% Compilation piecewise (faster, but not all parts in preview will be up-to-date)
% \usepackage{subfiles}
% Nastavení cesty k obrázkům
% Setting of a path to the pictures
\graphicspath{{obrazky-figures/}{./obrazky-figures/}}
%\graphicspath{{obrazky-figures/}{../obrazky-figures/}}
%---rm---------------
\renewcommand{\rmdefault}{lmr}%zavede Latin Modern Roman jako rm / set Latin Modern Roman as rm
%---sf---------------
\renewcommand{\sfdefault}{qhv}%zavede TeX Gyre Heros jako sf
%---tt------------
\renewcommand{\ttdefault}{pcr}% zavede Courier tt font
% vypne funkci šablony, která automaticky nahrazuje uvozovky,
% aby nebyly prováděny nevhodné náhrady v popisech API apod.
% disables function of the template which replaces quotation marks
% to avoid unnecessary replacements in the API descriptions etc.
\csdoublequotesoff
% =======================================================================
% balíček "hyperref" vytváří klikací odkazy v pdf, pokud tedy použijeme pdflatex
% problém je, že balíček hyperref musí být uveden jako poslední, takže nemůže
% být v šabloně
% "hyperref" package create clickable links in pdf if you are using pdflatex.
% Problem is that this package have to be introduced as the last one so it
% can not be placed in the template file.
\ifWis
\ifx\pdfoutput\undefined % nejedeme pod pdflatexem / we are not using pdflatex
\else
\usepackage{color}
\usepackage[unicode,colorlinks,hyperindex,plainpages=false,pdftex]{hyperref}
\definecolor{links}{rgb}{0.4,0.5,0}
\definecolor{anchors}{rgb}{1,0,0}
\def\AnchorColor{anchors}
\def\LinkColor{links}
\def\pdfBorderAttrs{/Border [0 0 0] } % bez okrajů kolem odkazů / without margins around links
\pdfcompresslevel=9
\fi
\else % pro tisk budou odkazy, na které se dá klikat, černé / for the print clickable links will be black
\ifx\pdfoutput\undefined % nejedeme pod pdflatexem / we are not using pdflatex
\else
\usepackage{color}
\usepackage[unicode,colorlinks,hyperindex,plainpages=false,pdftex,urlcolor=black,linkcolor=black,citecolor=black]{hyperref}
\definecolor{links}{rgb}{0,0,0}
\definecolor{anchors}{rgb}{0,0,0}
\def\AnchorColor{anchors}
\def\LinkColor{links}
\def\pdfBorderAttrs{/Border [0 0 0] } % bez okrajů kolem odkazů / without margins around links
\pdfcompresslevel=9
\fi
\fi
% Řešení problému, kdy klikací odkazy na obrázky vedou za obrázek
% This solves the problems with links which leads after the picture
\usepackage[all]{hypcap}
% Informace o práci/projektu / Information about the thesis
%---------------------------------------------------------------------------
\projectinfo{
%Prace / Thesis
project={BP}, %typ práce BP/SP/DP/DR / thesis type (SP = term project)
year={2019}, % rok odevzdání / year of submission
date=\today, % datum odevzdání / submission date
%Nazev prace / thesis title
title.cs={Výkonnostní testování plánovače linuxového kernelu}, % název práce v češtině či slovenštině (dle zadání) / thesis title in czech language (according to assignment)
title.en={Performance Testing of Linux Kernel Scheduler}, % název práce v angličtině / thesis title in english
title.length={13.2cm}, % nastavení délky bloku s titulkem pro úpravu zalomení řádku (lze definovat zde nebo níže) / setting the length of a block with a thesis title for adjusting a line break (can be defined here or below)
%Autor / Author
author.name={Jiří}, % jméno autora / author name
author.surname={Vozár}, % příjmení autora / author surname
%author.title.p={Bc.}, % titul před jménem (nepovinné) / title before the name (optional)
%author.title.a={Ph.D.}, % titul za jménem (nepovinné) / title after the name (optional)
%Ustav / Department
department={UITS}, % doplňte příslušnou zkratku dle ústavu na zadání: UPSY/UIFS/UITS/UPGM / fill in appropriate abbreviation of the department according to assignment: UPSY/UIFS/UITS/UPGM
% Školitel / supervisor
supervisor.name={Viktor}, % jméno školitele / supervisor name
supervisor.surname={Malík}, % příjmení školitele / supervisor surname
supervisor.title.p={Ing.}, %titul před jménem (nepovinné) / title before the name (optional)
%supervisor.title.a={}, %titul za jménem (nepovinné) / title after the name (optional)
% Klíčová slova / keywords
keywords.cs={Linux, jádro, plánovač úloh, CFS, testování, měření výkonu, vizualiace, strojové učení}, % klíčová slova v českém či slovenském jazyce / keywords in czech or slovak language
keywords.en={Linux, kernel, task scheduler, CFS, testing, performance measurement, visualization, machine learning}, % klíčová slova v anglickém jazyce / keywords in english
% Abstrakt / Abstract
abstract.cs={Výkon plánovače procesů v jádře operačního systému značně
ovlivňuje rychlost a odezvu všech aplikací, které na něm běží. Jakýkoli
propad výkonu pak může mít kritické důsledky na běhu aplikací. S příchodem
každé nové technologie (např. symetrický multiprocesing) se kód plánovače vyvíjí
a rozšiřuje. Proto jsou potřeba regresní testy nejen na jeho fukčnost, ale i
výkon. Tato práce mapuje metody testování plánovače operačního systému Linux
ve firmě Red Hat. Popisuje způsoby měření výkonu plánovače, sbírání
informací o jeho chování, ukládání sesbíraných dat a jejich vizualizaci.
Hlavním cílem práce je pak návrh a implementace nového způsobu vizualizace
dlouhodobých měření a využití strojového učení pro automatické rozpoznání
degradace výkonu mezi dvěma výsledky.}, % abstrakt v českém či slovenském jazyce / abstract in czech or slovak language
abstract.en={Performance of process scheduler in a kernel of an operating
system significantly influences throughput and latency of all applications
running above it. Any performance drop can have critical consequences on the
applications. With the arrival of every new technology (e.g. symetric
multiprocesing) the code of the scheduler evolves and grows. This requires
not only functional, but also performance regression testing. This work
presents methods of performance testing used in the Red Hat, Inc. company.
It describes how one can measure performance of the Linux process scheduler
in the Linux kernel, collect statistics about its behavior, store the
collected data, and visualize them. The goal of this work is to
design and implement a new technique of visualization of long-term
measurements and utilization of machine learning for automatic
classification of performance degradation between different results.}, % abstrakt v anglickém jazyce / abstract in english
%abstract.en={An abstract of the work in English will be written in this paragraph.},
% Prohlášení (u anglicky psané práce anglicky, u slovensky psané práce slovensky) / Declaration (for thesis in english should be in english)
% declaration={Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana X...
% Další informace mi poskytli...
% Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal.},
declaration={Hereby I declare that this bachelor's thesis was prepared as an
original author’s work under the supervision of Ing. Viktor Malík.
The supplementary information was provided by Ing. Pavel Tišnovský, Ph.D.from
Red Hat Czech s.r.o. and Ing. Tomáš Fiedor.
All the relevant information sources, which were used during preparation of
this thesis, are properly cited and included in the list of references.},
% Poděkování (nepovinné, nejlépe v jazyce práce) / Acknowledgement (optional, ideally in the language of the thesis)
% acknowledgment={V této sekci je možno uvést poděkování vedoucímu práce a těm, kteří poskytli odbornou pomoc
% (externí zadavatel, konzultant, apod.).},
acknowledgment={I would like to thank to my supervisor Ing. Viktor Malík and
consultants Ing. Pavel Tišnovský, Ph.D.from Red Hat Czech s.r.o. and Ing.
Tomáš Fiedor for for guidance, useful revisions of the text and consultations.
Also I would like to thank my manager RNDr. Jiří Hladký and collegue Bc.
Kamil Kolakowski for insight to scheduler testing and ideas for proposed
work.},
% Rozšířený abstrakt (cca 3 normostrany) - lze definovat zde nebo níže / Extended abstract (approximately 3 standard pages) - can be defined here or below
%extendedabstract={Do tohoto odstavce bude zapsán rozšířený výtah (abstrakt) práce v českém (slovenském) jazyce.},
%faculty={FIT}, % FIT/FEKT/FSI/FA/FCH/FP/FAST/FAVU/USI/DEF
faculty.cs={Fakulta informačních technologií}, % Fakulta v češtině - pro využití této položky výše zvolte fakultu DEF / Faculty in Czech - for use of this entry select DEF above
faculty.en={Faculty of Information Technology}, % Fakulta v angličtině - pro využití této položky výše zvolte fakultu DEF / Faculty in English - for use of this entry select DEF above
department.cs={Ústav matematiky}, % Ústav v češtině - pro využití této položky výše zvolte ústav DEF nebo jej zakomentujte / Department in Czech - for use of this entry select DEF above or comment it out
department.en={Institute of Mathematics} % Ústav v angličtině - pro využití této položky výše zvolte ústav DEF nebo jej zakomentujte / Department in English - for use of this entry select DEF above or comment it out
}
% Rozšířený abstrakt (cca 3 normostrany) - lze definovat zde nebo výše / Extended abstract (approximately 3 standard pages) - can be defined here or above
\extendedabstract{Plánovač procesů v operačním systému se stará o přidělování procesorového času
běžícím procesům a jejich rovnoměrné rozložení mezi procesorové jádra. Výkon
plánovače procesů pak silně ovlivňuje i výkon samotných aplikací běžících na
daném operačním systému. Jakýkoli propad výkonu pak může mít v komerční sféře
za následky vysoké finanční ztráty.
Plánovač procesů funguje velmi jednoduše pro systémy s jedním jádrem, ovšem s
příchodem vícejádrových procesorů se plánování zkomplikovalo vyvažováním front
procesů mezi jádry a trvalo, než se všechny problémy vyladily. Nové komplikace
plánování pak přinesly víceprocesorové systémy s neuniformní dobou přístupu do
paměti. Plánování na této architektuře je stále ve vývoji a tím i náchylné k
chybám způsobujícím propad výkonu. Proto je potřeba regresní testování výkonu
nových verzí jádra pro včasné odhalení těchto chyb.
Na rozdíl od funkčního testování není výkonové testování není jednoznačný
výsledek, jestli test doběhl. Pro zjištění změny výkonu je potřeba relativní
porovnání naměřených hodnot s referenčním výsledkem z předchozí verze nebo
jiné konfigurace a určení prahu mezi odchylkou měření a skutečným propadem
výkonu. Propady výkonu plánovače navíc nejsou způsobeny pomalým kódem, ale
chybným přemisťováním procesů a jejich dat mezi jádry a fyzickými procesory.
Tato práce popisuje výkonové testování plánovače procesů Red Hat Enterprise
Linuxu ve společnosti Red Hat, Inc. Běžný způsob zjišťování výkonu plánovače
je měření benchmarkem, který simuluje reálnou zátěž. Benchmarků je více s
různými způsoby zátěže, především však pomocí většího množství procesů nebo
vláken s vnitřní komunikací. Výsledky jsou pak systematicky ukládány pro
snažší tvorbu porovnání výkonu. Pro efektivní analýzu výkonu je pak nutná
volba správné vizualizace pro rychlé odhalení zdroje problému.
Práce navrhuje a implementuje novou metodu zobrazování dlouhodobých výsledků
měření výkonu nazvanou \emph{timelines}. Výstupem je pak HTML stránka
obsahující krabicové (box plot) grafy a shrnující tabulky znázorňující změnu
výkonu a přesnost měření v průběhu verzí jádra operačního systému. Tento
výstup již pomohl s redukcí nestabilních částí benchmarků a průběžně slouží
pro sledování změn výkonu a dohledávání verzí, kde výkon změnil.
Dále práce navrhuje použití strojového učení pro automatickou klasifikaci
porovnání dvou výsledků, zda se mezi nimi i přes nepřesnost měření a šum
projevuje propad výkonu. Práce navrhuje předzpracování výsledků měření pro
učení klasifikátorů a porovnává různé klasifikátory pro budoucí začlenění do
generátoru zpráv s porovnáním nových výsledků pro urychlení jejich analýzy.}
% nastavení délky bloku s titulkem pro úpravu zalomení řádku - lze definovat zde nebo výše / setting the length of a block with a thesis title for adjusting a line break - can be defined here or above
%\titlelength{14.5cm}
% řeší první/poslední řádek odstavce na předchozí/následující stránce
% solves first/last row of the paragraph on the previous/next page
\clubpenalty=10000
\widowpenalty=10000
\begin{document}
% Vysazeni titulnich stran / Typesetting of the title pages
% ----------------------------------------------
\maketitle
% Obsah
% ----------------------------------------------
\setlength{\parskip}{0pt}
{\hypersetup{hidelinks}\tableofcontents}
% Seznam obrazku a tabulek (pokud prace obsahuje velke mnozstvi obrazku, tak se to hodi)
% List of figures and list of tables (if the thesis contains a lot of pictures, it is good)
\ifczech
\renewcommand\listfigurename{Seznam obrázků}
\fi
\ifslovak
\renewcommand\listfigurename{Zoznam obrázkov}
\fi
% \listoffigures
\ifczech
\renewcommand\listtablename{Seznam tabulek}
\fi
\ifslovak
\renewcommand\listtablename{Zoznam tabuliek}
\fi
% \listoftables
\ifODSAZ
\setlength{\parskip}{0.5\bigskipamount}
\else
\setlength{\parskip}{0pt}
\fi
% vynechani stranky v oboustrannem rezimu
% Skip the page in the two-sided mode
\iftwoside
\cleardoublepage
\fi
% Text prace / Thesis text
% ----------------------------------------------
\input{projekt-01-kapitoly-chapters}
% Kompilace po částech (viz výše, nutno odkomentovat)
% Compilation piecewise (see above, it is necessary to uncomment it)
%\subfile{projekt-01-uvod-introduction}
% ...
%\subfile{chapters/projekt-05-conclusion}
% Pouzita literatura / Bibliography
% ----------------------------------------------
\ifslovak
\makeatletter
\def\@openbib@code{\addcontentsline{toc}{chapter}{Literatúra}}
\makeatother
\bibliographystyle{bib-styles/slovakiso}
\else
\ifczech
\makeatletter
\def\@openbib@code{\addcontentsline{toc}{chapter}{Literatura}}
\makeatother
\bibliographystyle{bib-styles/czechiso}
\else
\makeatletter
\def\@openbib@code{\addcontentsline{toc}{chapter}{Bibliography}}
\makeatother
\bibliographystyle{bib-styles/englishiso}
% \bibliographystyle{alpha}
\fi
\fi
\begin{flushleft}
\bibliography{projekt-20-literatura-bibliography}
\end{flushleft}
% vynechani stranky v oboustrannem rezimu
% Skip the page in the two-sided mode
\iftwoside
\cleardoublepage
\fi
% Prilohy / Appendices
% ---------------------------------------------
\appendix
\ifczech
\renewcommand{\appendixpagename}{Přílohy}
\renewcommand{\appendixtocname}{Přílohy}
\renewcommand{\appendixname}{Příloha}
\fi
\ifslovak
\renewcommand{\appendixpagename}{Prílohy}
\renewcommand{\appendixtocname}{Prílohy}
\renewcommand{\appendixname}{Príloha}
\fi
% \appendixpage
% vynechani stranky v oboustrannem rezimu
% Skip the page in the two-sided mode
%\iftwoside
% \cleardoublepage
%\fi
\ifslovak
% \section*{Zoznam príloh}
% \addcontentsline{toc}{section}{Zoznam príloh}
\else
\ifczech
% \section*{Seznam příloh}
% \addcontentsline{toc}{section}{Seznam příloh}
\else
% \section*{List of Appendices}
% \addcontentsline{toc}{section}{List of Appendices}
\fi
\fi
\startcontents[chapters]
\setlength{\parskip}{0pt}
% seznam příloh / list of appendices
% \printcontents[chapters]{l}{0}{\setcounter{tocdepth}{2}}
\ifODSAZ
\setlength{\parskip}{0.5\bigskipamount}
\else
\setlength{\parskip}{0pt}
\fi
% vynechani stranky v oboustrannem rezimu
\iftwoside
\cleardoublepage
\fi
% Přílohy / Appendices
\input{projekt-30-prilohy-appendices}
% Kompilace po částech (viz výše, nutno odkomentovat)
% Compilation piecewise (see above, it is necessary to uncomment it)
%\subfile{projekt-30-prilohy-appendices}
\end{document}