mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 13:43:05 +02:00
feat: table fixes
This commit is contained in:
parent
eb2422c45c
commit
44c73f011e
BIN
latex/main.pdf
BIN
latex/main.pdf
Binary file not shown.
@ -140,7 +140,7 @@ Game development, Frame time, Engine architecture, Version control, GPU
|
|||||||
\input{tex/wywiady-analiza}
|
\input{tex/wywiady-analiza}
|
||||||
\input{tex/implementacja-gry} % Analiza wywiadów z deweloperami gier
|
\input{tex/implementacja-gry} % Analiza wywiadów z deweloperami gier
|
||||||
\input{tex/narzedzia-profilowania} % Narzędzia profilowania wydajności
|
\input{tex/narzedzia-profilowania} % Narzędzia profilowania wydajności
|
||||||
\input{tex/5-testy-wydajnosci} % Testy wydajności
|
% \input{tex/5-testy-wydajnosci} % Testy wydajności
|
||||||
% \input{tex/6-analiza-mozliwosci} % Analiza możliwości i funkcjonalności
|
% \input{tex/6-analiza-mozliwosci} % Analiza możliwości i funkcjonalności
|
||||||
% \input{tex/7-porownanie-wynikow} % Porównanie wyników i analiza
|
% \input{tex/7-porownanie-wynikow} % Porównanie wyników i analiza
|
||||||
% \input{tex/8-podsumowanie}
|
% \input{tex/8-podsumowanie}
|
||||||
|
|||||||
@ -160,6 +160,7 @@ renderującego na poziomie pojedynczych funkcji API. Podczas testu zarejestrowan
|
|||||||
\centering
|
\centering
|
||||||
\caption{Wywołania Vulkan API silnika Unity -- funkcje synchronizacji i prezentacji}
|
\caption{Wywołania Vulkan API silnika Unity -- funkcje synchronizacji i prezentacji}
|
||||||
\label{tab:unity-vulkan-sync}
|
\label{tab:unity-vulkan-sync}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|r|r|}
|
\begin{tabular}{|l|r|r|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Med. (ms)} & \textbf{Maks. (ms)} \\
|
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Med. (ms)} & \textbf{Maks. (ms)} \\
|
||||||
@ -225,9 +226,10 @@ odbywa się asynchronicznie na GPU.
|
|||||||
\centering
|
\centering
|
||||||
\caption{Wywołania Vulkan API silnika Unity -- bufory poleceń}
|
\caption{Wywołania Vulkan API silnika Unity -- bufory poleceń}
|
||||||
\label{tab:unity-vulkan-cmd}
|
\label{tab:unity-vulkan-cmd}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|r|}
|
\begin{tabular}{|l|r|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Wywołania} & \textbf{Śr. (\textmu{}s)} & \textbf{Med. (\textmu{}s)} & \textbf{Maks. (\textmu{}s)} \\
|
\textbf{Funkcja} & \textbf{Wywołania} & \textbf{Śr. ($\mu$s)} & \textbf{Med. ($\mu$s)} & \textbf{Maks. ($\mu$s)} \\
|
||||||
\hline
|
\hline
|
||||||
\texttt{vkBeginCommandBuffer} & 40\,679 & 2,53 & 1,76 & 2\,049 \\
|
\texttt{vkBeginCommandBuffer} & 40\,679 & 2,53 & 1,76 & 2\,049 \\
|
||||||
\texttt{vkEndCommandBuffer} & 40\,679 & 0,73 & 0,63 & 116 \\
|
\texttt{vkEndCommandBuffer} & 40\,679 & 0,73 & 0,63 & 116 \\
|
||||||
@ -295,9 +297,10 @@ systemu operacyjnego. Zarejestrowano \textbf{29\,383 wywołania} 65 różnych fu
|
|||||||
\centering
|
\centering
|
||||||
\caption{Wywołania systemowe silnika Unity -- synchronizacja wątków}
|
\caption{Wywołania systemowe silnika Unity -- synchronizacja wątków}
|
||||||
\label{tab:unity-osrt-sync}
|
\label{tab:unity-osrt-sync}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|r|r|}
|
\begin{tabular}{|l|r|r|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Med. (\textmu{}s)} & \textbf{Maks. (s)} \\
|
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Med. ($\mu$s)} & \textbf{Maks. (s)} \\
|
||||||
\hline
|
\hline
|
||||||
\texttt{futex} & 95,9 & 247 & 444,07 & 88,49 & 11,05 \\
|
\texttt{futex} & 95,9 & 247 & 444,07 & 88,49 & 11,05 \\
|
||||||
\texttt{pthread\_cond\_timedwait} & 2,7 & 85 & 35,91 & 7\,070,65 & 2,00 \\
|
\texttt{pthread\_cond\_timedwait} & 2,7 & 85 & 35,91 & 7\,070,65 & 2,00 \\
|
||||||
@ -325,7 +328,7 @@ Tak wysoki udział \texttt{futex} (109,69 sekundy łącznie) wskazuje na intensy
|
|||||||
architekturę wielowątkową z oddzielnymi wątkami dla: głównej pętli gry, renderowania, fizyki, audio, wczytywania zasobów oraz systemu zadań
|
architekturę wielowątkową z oddzielnymi wątkami dla: głównej pętli gry, renderowania, fizyki, audio, wczytywania zasobów oraz systemu zadań
|
||||||
(ang. \textit{job system}).
|
(ang. \textit{job system}).
|
||||||
|
|
||||||
Średni czas wywołania 444,07 ms przy medianie zaledwie 88,49 \textmu{}s wskazuje na silnie asymetryczny rozkład -- większość wywołań kończy się szybko
|
Średni czas wywołania 444,07 ms przy medianie zaledwie 88,49 $\mu$s wskazuje na silnie asymetryczny rozkład -- większość wywołań kończy się szybko
|
||||||
(wątek od razu uzyskuje blokadę lub jest natychmiast budzony), ale niektóre wywołania skutkują długim oczekiwaniem. Maksymalny czas 11,05 sekundy
|
(wątek od razu uzyskuje blokadę lub jest natychmiast budzony), ale niektóre wywołania skutkują długim oczekiwaniem. Maksymalny czas 11,05 sekundy
|
||||||
odpowiada najprawdopodobniej wątkowi oczekującemu na zakończenie długotrwałej operacji inicjalizacyjnej.
|
odpowiada najprawdopodobniej wątkowi oczekującemu na zakończenie długotrwałej operacji inicjalizacyjnej.
|
||||||
|
|
||||||
@ -347,7 +350,7 @@ robocze systemu zadań, sugeruje to pulę kilkudziesięciu wątków aktywnie ucz
|
|||||||
\label{tab:unity-osrt-io}
|
\label{tab:unity-osrt-io}
|
||||||
\begin{tabular}{|l|r|r|r|}
|
\begin{tabular}{|l|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Wywołania} & \textbf{Całk. czas (ms)} & \textbf{Śr. (\textmu{}s)} \\
|
\textbf{Funkcja} & \textbf{Wywołania} & \textbf{Całk. czas (ms)} & \textbf{Śr. ($\mu$s)} \\
|
||||||
\hline
|
\hline
|
||||||
\texttt{poll} & 349 & 314,33 & 900,66 \\
|
\texttt{poll} & 349 & 314,33 & 900,66 \\
|
||||||
\texttt{ioctl} & 1\,907 & 284,18 & 149,02 \\
|
\texttt{ioctl} & 1\,907 & 284,18 & 149,02 \\
|
||||||
@ -368,7 +371,7 @@ oczekiwania na zdarzenia z wielu deskryptorów plików -- w kontekście gry praw
|
|||||||
oraz urządzeniami wejścia.
|
oraz urządzeniami wejścia.
|
||||||
|
|
||||||
Duża liczba wywołań \texttt{openat64} (22\,155) wskazuje na intensywne operacje na systemie plików, prawdopodobnie związane z wczytywaniem zasobów
|
Duża liczba wywołań \texttt{openat64} (22\,155) wskazuje na intensywne operacje na systemie plików, prawdopodobnie związane z wczytywaniem zasobów
|
||||||
gry (tekstur, modeli, shaderów) z dysku. Średni czas 1,07 \textmu{}s potwierdza efektywne buforowanie przez system operacyjny.
|
gry (tekstur, modeli, shaderów) z dysku. Średni czas 1,07 $\mu$s potwierdza efektywne buforowanie przez system operacyjny.
|
||||||
|
|
||||||
\texttt{ioctl} (1\,907 wywołań) służy do kontroli urządzeń -- w kontekście grafiki Vulkan jest
|
\texttt{ioctl} (1\,907 wywołań) służy do kontroli urządzeń -- w kontekście grafiki Vulkan jest
|
||||||
używane do komunikacji ze sterownikiem GPU poprzez \\
|
używane do komunikacji ze sterownikiem GPU poprzez \\
|
||||||
@ -627,6 +630,7 @@ Dane podzielone na trzy fazy (0--30s, 30--60s, 60--90s) umożliwiają szczegół
|
|||||||
\centering
|
\centering
|
||||||
\caption{Porównanie wywołań Vulkan API silnika Unreal Engine między fazami}
|
\caption{Porównanie wywołań Vulkan API silnika Unreal Engine między fazami}
|
||||||
\label{tab:unreal-vulkan-phases}
|
\label{tab:unreal-vulkan-phases}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|}
|
\begin{tabular}{|l|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Metryka} & \textbf{Faza 1 (0--30s)} & \textbf{Faza 2 (30--60s)} & \textbf{Faza 3 (60--90s)} \\
|
\textbf{Metryka} & \textbf{Faza 1 (0--30s)} & \textbf{Faza 2 (30--60s)} & \textbf{Faza 3 (60--90s)} \\
|
||||||
@ -666,6 +670,7 @@ wskazuje na konsystentną architekturę potoku renderowania niezależną od obci
|
|||||||
\centering
|
\centering
|
||||||
\caption{Wywołania Vulkan API silnika Unreal Engine -- tworzenie potoków (wszystkie fazy)}
|
\caption{Wywołania Vulkan API silnika Unreal Engine -- tworzenie potoków (wszystkie fazy)}
|
||||||
\label{tab:unreal-vulkan-pipelines}
|
\label{tab:unreal-vulkan-pipelines}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|r|}
|
\begin{tabular}{|l|r|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Maks. (ms)} \\
|
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Maks. (ms)} \\
|
||||||
@ -715,9 +720,10 @@ Nsight Systems tworzy nową sesję dla każdej fazy.
|
|||||||
\centering
|
\centering
|
||||||
\caption{Wywołania Vulkan API silnika Unreal Engine -- synchronizacja i prezentacja (faza 2)}
|
\caption{Wywołania Vulkan API silnika Unreal Engine -- synchronizacja i prezentacja (faza 2)}
|
||||||
\label{tab:unreal-vulkan-sync}
|
\label{tab:unreal-vulkan-sync}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|r|}
|
\begin{tabular}{|l|r|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (\textmu{}s)} & \textbf{Maks. (ms)} \\
|
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. ($\mu$s)} & \textbf{Maks. (ms)} \\
|
||||||
\hline
|
\hline
|
||||||
\texttt{vkQueuePresentKHR} & 9,5 & 11\,531 & 77,05 & 0,90 \\
|
\texttt{vkQueuePresentKHR} & 9,5 & 11\,531 & 77,05 & 0,90 \\
|
||||||
\texttt{vkQueueSubmit} & 7,8 & 186\,589 & 3,92 & 1,64 \\
|
\texttt{vkQueueSubmit} & 7,8 & 186\,589 & 3,92 & 1,64 \\
|
||||||
@ -730,7 +736,7 @@ Nsight Systems tworzy nową sesję dla każdej fazy.
|
|||||||
\paragraph{Synchronizacja -- minimalne oczekiwanie na GPU}
|
\paragraph{Synchronizacja -- minimalne oczekiwanie na GPU}
|
||||||
|
|
||||||
W ostrzym kontraście z Unity (gdzie \texttt{vkWaitForFences} stanowił 95,2\% czasu), w Unreal Engine funkcja ta pochłonęła zaledwie
|
W ostrzym kontraście z Unity (gdzie \texttt{vkWaitForFences} stanowił 95,2\% czasu), w Unreal Engine funkcja ta pochłonęła zaledwie
|
||||||
\textbf{0,5\% czasu} ze średnim czasem oczekiwania 3,63 \textmu{}s. Tak niski czas oczekiwania wskazuje na:
|
\textbf{0,5\% czasu} ze średnim czasem oczekiwania 3,63 $\mu$s. Tak niski czas oczekiwania wskazuje na:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Efektywne wykorzystanie wielokrotnego buforowania (triple buffering)
|
\item Efektywne wykorzystanie wielokrotnego buforowania (triple buffering)
|
||||||
\item Asynchroniczne przesyłanie pracy do GPU bez blokowania
|
\item Asynchroniczne przesyłanie pracy do GPU bez blokowania
|
||||||
@ -747,9 +753,10 @@ wieloma przebiegami (deferred rendering, post-processing, UI).
|
|||||||
\centering
|
\centering
|
||||||
\caption{Wywołania Vulkan API silnika Unreal Engine -- bufory poleceń (wszystkie fazy łącznie)}
|
\caption{Wywołania Vulkan API silnika Unreal Engine -- bufory poleceń (wszystkie fazy łącznie)}
|
||||||
\label{tab:unreal-vulkan-cmd}
|
\label{tab:unreal-vulkan-cmd}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|}
|
\begin{tabular}{|l|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Wywołania} & \textbf{Śr. (\textmu{}s)} & \textbf{Maks. (\textmu{}s)} \\
|
\textbf{Funkcja} & \textbf{Wywołania} & \textbf{Śr. ($\mu$s)} & \textbf{Maks. ($\mu$s)} \\
|
||||||
\hline
|
\hline
|
||||||
\texttt{vkCmdBindPipeline} & 5\,771\,642 & 0,24 & 2\,722 \\
|
\texttt{vkCmdBindPipeline} & 5\,771\,642 & 0,24 & 2\,722 \\
|
||||||
\texttt{vkCmdPipelineBarrier2KHR} & 4\,090\,071 & 0,28 & 942 \\
|
\texttt{vkCmdPipelineBarrier2KHR} & 4\,090\,071 & 0,28 & 942 \\
|
||||||
@ -795,6 +802,7 @@ wielowątkowego Unreal Engine. Łącznie zarejestrowano ponad \textbf{9 milionó
|
|||||||
\centering
|
\centering
|
||||||
\caption{Wywołania systemowe silnika Unreal Engine -- synchronizacja wątków (wszystkie fazy)}
|
\caption{Wywołania systemowe silnika Unreal Engine -- synchronizacja wątków (wszystkie fazy)}
|
||||||
\label{tab:unreal-osrt-sync}
|
\label{tab:unreal-osrt-sync}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|r|}
|
\begin{tabular}{|l|r|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Maks. (s)} \\
|
\textbf{Funkcja} & \textbf{Czas (\%)} & \textbf{Wywołania} & \textbf{Śr. (ms)} & \textbf{Maks. (s)} \\
|
||||||
@ -831,6 +839,7 @@ inicjalizacyjnej w fazie 2.
|
|||||||
\centering
|
\centering
|
||||||
\caption{Porównanie wywołań synchronizacyjnych między fazami Unreal Engine}
|
\caption{Porównanie wywołań synchronizacyjnych między fazami Unreal Engine}
|
||||||
\label{tab:unreal-osrt-phases}
|
\label{tab:unreal-osrt-phases}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|r|}
|
\begin{tabular}{|l|r|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Metryka} & \textbf{Faza 1} & \textbf{Faza 2} & \textbf{Faza 3} \\
|
\textbf{Metryka} & \textbf{Faza 1} & \textbf{Faza 2} & \textbf{Faza 3} \\
|
||||||
@ -871,6 +880,7 @@ czasu klatki przy ~128 FPS, co może sugerować mechanizm regulacji tempa render
|
|||||||
\centering
|
\centering
|
||||||
\caption{Porównanie mechanizmów synchronizacji Unity i Unreal Engine (zaktualizowane)}
|
\caption{Porównanie mechanizmów synchronizacji Unity i Unreal Engine (zaktualizowane)}
|
||||||
\label{tab:sync-comparison}
|
\label{tab:sync-comparison}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|}
|
\begin{tabular}{|l|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Metryka} & \textbf{Unity} & \textbf{Unreal Engine} \\
|
\textbf{Metryka} & \textbf{Unity} & \textbf{Unreal Engine} \\
|
||||||
@ -1012,6 +1022,7 @@ uzyskania danych percentylowych dla Unreal Engine.
|
|||||||
\centering
|
\centering
|
||||||
\caption{Porównanie wykorzystania GPU między silnikami}
|
\caption{Porównanie wykorzystania GPU między silnikami}
|
||||||
\label{tab:gpu-comparison}
|
\label{tab:gpu-comparison}
|
||||||
|
\footnotesize
|
||||||
\begin{tabular}{|l|r|r|}
|
\begin{tabular}{|l|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Metryka} & \textbf{Unity} & \textbf{Unreal Engine} \\
|
\textbf{Metryka} & \textbf{Unity} & \textbf{Unreal Engine} \\
|
||||||
@ -1045,6 +1056,7 @@ z wieloma wariantami shaderów, co wprowadza znaczący narzut zmian stanu GPU.
|
|||||||
\centering
|
\centering
|
||||||
\caption{Porównanie mechanizmów synchronizacji między silnikami}
|
\caption{Porównanie mechanizmów synchronizacji między silnikami}
|
||||||
\label{tab:threading-comparison}
|
\label{tab:threading-comparison}
|
||||||
|
\small
|
||||||
\begin{tabular}{|l|r|r|}
|
\begin{tabular}{|l|r|r|}
|
||||||
\hline
|
\hline
|
||||||
\textbf{Metryka} & \textbf{Unity} & \textbf{Unreal Engine} \\
|
\textbf{Metryka} & \textbf{Unity} & \textbf{Unreal Engine} \\
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user