-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexperimental_part.tex
94 lines (81 loc) · 4.58 KB
/
experimental_part.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
\chapter{Исследовательская часть}
Для работы с разработанным загружаемым модулем ядра была использована электронная вычислительная машина, обладающая следующими характеристиками:
\begin{itemize}
\item операционная система Manjaro Linux x86\_64~\cite{manjaro};
\item процессор Intel i7-10510U 4.900 ГГц~\cite{cpu};
\item оперативная память DDR4, 2400 МГц, 8 ГБ~\cite{ram}.
\end{itemize}
Для проверки работы разработанного программного обеспечения был реализован загружаемый модуль ядра exp\_md, осуществляющий создание и уничтожение SLAB-кэшей, а также выделение и освобождение объектов в SLAB-кэшах.
Исходный код загружаемого модуля ядра exp\_md представлен в приложении Б.
Во время загрузки загружаемого модуля ядра exp\_md в SLAB-кэше выделяются объекты следующих структур:
\begin{itemize}
\item struct s1,
\item struct s2,
\item struct s3.
\end{itemize}
Объявления данных структур представлены в листинге~\ref{test_structs}.
\begin{figure}[H]
\begin{lstlisting}[label=test_structs,caption=Структуры для проведения проверки работы загружаемого модуля ядра для мониторинга SLAB-кэша,language=Caml]
struct s1
{
int a;
char b;
struct file arr[100];
};
struct s2
{
int a;
char b;
};
struct s3
{
size_t a;
size_t b;
size_t c;
size_t d;
struct file f;
};
\end{lstlisting}
\end{figure}
Для объектов выше описанных структур создаются SLAB-кэши s1\_cache, s2\_cache и s3\_cache соответственно.
На рисунках~\ref{exp1}~--~\ref{exp6} представлены данные об использовании SLAB-кэша во время инициализации загружаемого модуля ядра exp\_md.
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{exp1}
\caption{Данные об использовании SLAB-кэша после выделения 200 объектов структуры struct~s1, 200 объектов структуры struct~s2 и 200 объектов структуры struct~s3}
\label{exp1}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{exp2}
\caption{Данные об использовании SLAB-кэша после выделения 800 объектов структуры struct~s1, 800 объектов структуры struct~s2 и 800 объектов структуры struct~s3}
\label{exp2}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{exp3}
\caption{Данные об использовании SLAB-кэша после выделения 1500 объектов структуры struct~s2 с помощью системного вызова kmalloc}
\label{exp3}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{exp4}
\caption{Данные об использовании SLAB-кэша после освобождения 1500 объектов структуры struct~s2 с помощью системного вызова kfree}
\label{exp4}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{exp5}
\caption{Данные об использовании SLAB-кэша после освобождения 1000 объектов структуры struct~s1, 1000 объектов структуры struct~s2 и 1000 объектов структуры struct~s3}
\label{exp5}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{exp6}
\caption{Данные об использовании SLAB-кэша после уничтожения кэшей s1\_cache, s2\_cache и s3\_cache}
\label{exp6}
\end{figure}
\section{Вывод}
Была проведена проверка работы разработанного загружаемого модуля ядра для мониторинга использования SLAB-кэша процессами в операционной системе Linux.
Реализованный загружаемый модуль ядра работает исправно.
\clearpage