mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 13:43:05 +02:00
175 lines
7.7 KiB
TeX
175 lines
7.7 KiB
TeX
\clearpage
|
|
\section{Narzędzia profilowania wydajności}
|
|
\label{sec:narzedzia-profilowania}
|
|
|
|
|
|
\label{subsec:wbudowane-narzedzia}
|
|
|
|
Zarówno Unity, jak i~Unreal Engine oferują własne, wbudowane narzędzia do analizy wydajności. Każde z~nich posiada unikalne cechy dostosowane do specyfiki danego silnika.
|
|
|
|
|
|
Unity dostarcza rozbudowany profiler dostępny bezpośrednio w~edytorze \\ (Window $\rightarrow$ Analysis $\rightarrow$ Profiler)~\cite{unity_profiler}. \\ Narzędzie to oferuje:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{CPU Profiler} -- analiza czasu wykonania poszczególnych funkcji, z podziałem na kategorie (rendering, skrypty, fizyka, animacje)
|
|
\item \textbf{GPU Profiler} -- pomiar czasu renderowania na karcie graficznej
|
|
\item \textbf{Memory Profiler} -- szczegółowa analiza alokacji pamięci, wykrywanie wycieków
|
|
\item \textbf{Audio Profiler} -- monitorowanie obciążenia systemu dźwiękowego
|
|
\item \textbf{Physics Profiler} -- analiza wydajności silnika fizyki
|
|
\item \textbf{Frame Debugger} -- krokowa analiza procesu renderowania \\ pojedynczej klatki
|
|
\end{itemize}
|
|
|
|
Unity Profiler umożliwia również zdalne profilowanie aplikacji uruchomionej na urządzeniu
|
|
docelowym (np.~smartfonie), co jest szczególnie przydatne przy optymalizacji gier mobilnych.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.9\textwidth]{tex/img/unity_profiler.png}
|
|
\caption{Interfejs Unity Profiler z~widokiem analizy wydajności CPU i~GPU.}
|
|
\label{fig:unity-profiler}
|
|
\end{figure}
|
|
|
|
|
|
Unreal Engine oferuje narzędzie Unreal Insights, które zastąpiło starszy system
|
|
Session Frontend~\cite{unreal_insights}. Kluczowe funkcjonalności obejmują:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Timing Insights} -- precyzyjny pomiar czasu wykonania poszczególnych systemów silnika
|
|
\item \textbf{Asset Loading Insights} -- analiza czasu ładowania zasobów
|
|
\item \textbf{Memory Insights} -- monitorowanie alokacji i~dealokacji pamięci
|
|
\item \textbf{Animation Insights} -- profilowanie systemu animacji
|
|
\item \textbf{Network Insights} -- analiza ruchu sieciowego w~grach multiplayer
|
|
\end{itemize}
|
|
|
|
Dodatkowo Unreal Engine udostępnia komendy konsolowe \\
|
|
(np.~\texttt{stat fps}, \texttt{stat unit}, \texttt{stat gpu}) pozwalające na szybki \\
|
|
podgląd podstawowych metryk wydajności podczas \\ rozgrywki~\cite{unreal_docs}.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\textwidth]{tex/img/unreal_profiler.png}
|
|
\caption{Interfejs Unreal Insights z~widokiem analizy wydajności.}
|
|
\label{fig:unreal-profiler}
|
|
\end{figure}
|
|
|
|
|
|
Pomimo rozbudowanych możliwości, wbudowane profilery silników posiadają istotne ograniczenia
|
|
w~kontekście porównawczych badań wydajnościowych:
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Brak standaryzacji metryk} -- każdy silnik definiuje i~mierzy parametry
|
|
w~odmienny sposób, co utrudnia bezpośrednie porównania
|
|
\item \textbf{Różna granularność danych} -- poziom szczegółowości raportów różni się \\ między silnikami
|
|
\item \textbf{Narzut profilowania} -- wbudowane profilery same generują \\ obciążenie, które może być różne dla każdego silnika
|
|
\item \textbf{Nieporównywalność formatów wyjściowych} -- dane \\ eksportowane przez różne profilery mają odmienne struktury
|
|
\end{enumerate}
|
|
|
|
Z~powyższych powodów zdecydowano się na zastosowanie zewnętrznego, niezależnego od silnika narzędzia profilowania.
|
|
|
|
\subsection{NVIDIA Nsight Graphics}
|
|
\label{subsec:nvidia-nsight}
|
|
|
|
NVIDIA Nsight Graphics to narzędzie do profilowania i~debugowania
|
|
aplikacji graficznych, oferujące wgląd w~działanie GPU
|
|
niezależnie od używanego silnika czy API graficznego~\cite{nvidia_nsight}.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.9\textwidth]{tex/img/nvidia_nsight.jpg}
|
|
\caption{Interfejs NVIDIA Nsight Graphics z~widokiem analizy GPU.}
|
|
\label{fig:nvidia-nsight}
|
|
\end{figure}
|
|
|
|
|
|
Wybór NVIDIA Nsight jako głównego narzędzia pomiarowego podyktowany
|
|
był następującymi czynnikami:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Niezależność od silnika} -- Nsight analizuje aplikację na poziomie wywołań API graficznego (DirectX, Vulkan, OpenGL), co zapewnia porównywalność wyników między Unity a~Unreal Engine
|
|
\item \textbf{Standaryzowane metryki} -- narzędzie dostarcza zunifikowany zestaw metryk sprzętowych (GPU utilization, memory bandwidth, shader throughput)
|
|
\item \textbf{Minimalny narzut} -- profilowanie na poziomie sterownika generuje mniejsze zakłócenia niż profilery działające wewnątrz silnika
|
|
\item \textbf{Dostęp do danych niskopoziomowych} -- możliwość analizy \\ poszczególnych wywołań draw call, shaderów, transferów pamięci
|
|
\item \textbf{Spójny format danych} -- wyniki z~obu silników mają identyczną strukturę, co ułatwia automatyzację analizy
|
|
\end{itemize}
|
|
|
|
|
|
NVIDIA Nsight Graphics oferuje szereg funkcjonalności istotnych dla badań wydajnościowych:
|
|
Główny moduł analizy wydajności, umożliwiający:
|
|
\begin{itemize}
|
|
\item Przechwycenie i~analizę pojedynczej klatki (frame capture)
|
|
\item Hierarchiczny widok wszystkich wywołań GPU
|
|
\item Pomiar czasu wykonania każdego etapu renderowania
|
|
\item Identyfikację wąskich gardeł (bottlenecks)
|
|
\item Analizę wykorzystania jednostek obliczeniowych GPU
|
|
\end{itemize}
|
|
|
|
Moduł do długoterminowej analizy wydajności:
|
|
\begin{itemize}
|
|
\item Rejestrowanie metryk przez określony czas (nie tylko pojedyncza klatka)
|
|
\item Wykrywanie spadków wydajności i~ich przyczyn
|
|
\item Analiza zmienności czasów klatek (frame time variance)
|
|
\item Korelacja obciążenia GPU z~wydarzeniami w~grze
|
|
\end{itemize}
|
|
|
|
Narzędzie do optymalizacji shaderów:
|
|
\begin{itemize}
|
|
\item Analiza wydajności poszczególnych shaderów
|
|
\item Identyfikacja nieefektywnych instrukcji
|
|
\item Pomiar occupancy (wykorzystania jednostek obliczeniowych)
|
|
\end{itemize}
|
|
|
|
\subsection{Przetwarzanie danych z~Nsight}
|
|
\label{subsec:przetwarzanie-nsight}
|
|
|
|
Dane zebrane przez NVIDIA Nsight wymagają odpowiedniego przetworzenia w~celu uzyskania porównywalnych metryk.
|
|
|
|
|
|
Nsight umożliwia eksport danych w~kilku formatach:
|
|
\begin{itemize}
|
|
\item \textbf{CSV} -- tabularyczne dane liczbowe
|
|
\item \textbf{JSON} -- strukturalne dane z~pełną hierarchią wywołań
|
|
\item \textbf{HTML Report} -- graficzny raport z~wykresami
|
|
\end{itemize}
|
|
|
|
W~niniejszej pracy wykorzystano format CSV ze względu na łatwość importu do narzędzi analizy statystycznej.
|
|
|
|
|
|
Z~danych eksportowanych przez Nsight wyodrębniono następujące metryki:
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{Kluczowe metryki wydajnościowe z~NVIDIA Nsight}
|
|
\label{tab:metryki-nsight}
|
|
\begin{tabular}{|>{\raggedright\arraybackslash}p{4cm}|>{\raggedright\arraybackslash}p{3cm}|>{\raggedright\arraybackslash}p{5.5cm}|}
|
|
\hline
|
|
\textbf{Metryka} & \textbf{Jednostka} & \textbf{Opis} \\
|
|
\hline
|
|
Frame Time & ms & Całkowity czas renderowania klatki \\
|
|
\hline
|
|
GPU Duration & ms & Czas pracy GPU (bez CPU overhead) \\
|
|
\hline
|
|
Draw Calls & liczba & Ilość wywołań rysowania na klatkę \\
|
|
\hline
|
|
Triangles Rendered & liczba & Liczba wyrenderowanych trójkątów \\
|
|
\hline
|
|
GPU Memory Used & MB & Zużycie pamięci VRAM \\
|
|
\hline
|
|
SM Occupancy & \% & Wykorzystanie jednostek obliczeniowych \\
|
|
\hline
|
|
Memory Bandwidth & GB/s & Przepustowość pamięci GPU \\
|
|
\hline
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\subsection{Podsumowanie wyboru narzędzi}
|
|
\label{subsec:podsumowanie-narzedzi}
|
|
|
|
Zastosowanie NVIDIA Nsight jako głównego narzędzia profilowania zapewnia:
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Obiektywność} -- pomiary wykonywane na tym samym poziomie abstrakcji dla obu silników
|
|
\item \textbf{Porównywalność} -- identyczne metryki i~format danych
|
|
\item \textbf{Powtarzalność} -- standaryzowana procedura pomiarowa
|
|
\end{enumerate}
|
|
|