From 517953c329aaeca73219f7a6aca338f928e1c45b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Tue, 10 May 2011 10:37:25 +0200 Subject: [PATCH] Changed chap 5 --- .report.lyx.swp | Bin 200704 -> 217088 bytes report.lyx | 131 ++++++++++++++++++++++++++++-------------------- 2 files changed, 77 insertions(+), 54 deletions(-) diff --git a/.report.lyx.swp b/.report.lyx.swp index 7146e010dd07066cc90eda4945bd0329dda115cc..1dc3d161b4cf5b654c1aa548107c200b5eb064b2 100644 GIT binary patch delta 48026 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 delta 35333 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 diff --git a/report.lyx b/report.lyx index 169a0d4..f490db7 100644 --- a/report.lyx +++ b/report.lyx @@ -7488,13 +7488,21 @@ Messages per second \series default is used to see how many incoming and outgoing messages the server can process each second. - The results of the messages per second testing are shown in figure + The results of the messages per second testing are shown for a high demanding + application in figure \begin_inset CommandInset ref LatexCommand ref reference "fig:msg-per-sec-MNESIA" \end_inset +, and for a low demanding application in +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:msg-per-sec-NOMNESIA" + +\end_inset + . \end_layout @@ -7798,6 +7806,12 @@ end{centering} \begin_inset Caption \begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:msg-per-sec-NOMNESIA" + +\end_inset + The graph shows messages per second for intervals of clients connected. No database is connected. \end_layout @@ -7817,11 +7831,32 @@ Future improvements \end_layout \begin_layout Standard -The specification of the GGS prototype is huge and like many other software - projects relying on outside technologies, in time it would require a lot - of maintenance. - Therefore there is a lot of areas in which the GGS could be improved such - as performance, compatibility, ease of setup and usage. +There are several things in the GGS that can be improved. + In this section the most important additions to the GGS are described, + along with a motivation as to why these additions are not found in the + GGS prototype. +\end_layout + +\begin_layout Subsection +Distribution +\end_layout + +\begin_layout Standard +The GGS was originally intended to be a distributed application, running + on several machines at once. + The design of the GGS should support this, it has however not been tested. + The technologies, such as supervisor trees and the servers supplied by + the OTP which are used in the GGS all support the development of distributed + applications. +\end_layout + +\begin_layout Standard +Distribution was however not implemented in the GGS. + Other parts of the GGS were prioritized. + A futute improvement is therefore to implement distribution in the GGS. + A simple way to achieve this is to keep one GGS instance as a coordinating + instance, and to keep clients on other instances of the GGS, which can + be dynamically added as new clients connect. \end_layout \begin_layout Subsection @@ -7830,6 +7865,17 @@ Performance \begin_layout Subsubsection Protocols +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Need references for assertions about UDP being nicer on the CPU. + Motivate why UDP is not implemented. +\end_layout + +\end_inset + + \end_layout \begin_layout Standard @@ -7857,10 +7903,30 @@ Database Currently Mnesia is used for game data storage. During stress tests, Mnesia has turned out to be the bottleneck due to data losses when too many games are played on the GGS simultaneously. - This could be prevented by replacing Mnesia with another database management - system or use Mnesia in combination with the ETS module of erlang. - ETS provides fast access to the RAM and thus Mnesia could be used less - frequently. + +\end_layout + +\begin_layout Standard +The usage of Mnesia in the GGS is not the usage originally intended. + Originally a cache was to be placed before Mnesia. + The cache could be either Erlang Term Storage (ETS) or an Erlang process + which keeps track of all database actions. + The cache periodically flushes its contents to Mnesia, thereby reducing + the Mnesia transactions overall. +\end_layout + +\begin_layout Standard +The cache was never implemented in the prototype due to other parts of the + GGS being prioritized. + The current implementation of the database backend is not optimal, however + it functions reliably, therefore it was deemed sufficient for the prototype. +\end_layout + +\begin_layout Standard +A possible future addition to the GGS could be to add this cache in the + database module. + The API would not need to change, as this could be implemented internally + in the database module. \begin_inset ERT status open @@ -7880,49 +7946,6 @@ textbf{ETS}}{Erlang Term Storage} \end_layout \begin_layout Subsection -Compatibility -\end_layout - -\begin_layout Standard -GGS relies on modern technologies. - This includes the virtual machines(VM) that the GGS uses for communication - between Erlang and the GDLs. - These specific VMs are crucial for game developers to be able to write - games in other languages than Erlang. - Therefore it would be best for the GGS to have as many of these VMs implemented - as possible. - The VMs considered so far have been unstable or incomplete and it is possible - to search for more VMs, testing them and integrate them into the GGS prototype. -\end_layout - -\begin_layout Subsection -Setup -\end_layout - -\begin_layout Standard -The GGS prototype installation procedure requires different configuration - and building steps and thus it is not in an acceptable release state. - An executable installation file for each supported platform would be optimal. -\end_layout - -\begin_layout Subsection* -5.3.4 Usage -\end_layout - -\begin_layout Subsubsection -Programming languages -\end_layout - -\begin_layout Standard -The GGS does not support many programming languages. - For a programming language to be compatible with the GGS, not only does - it require a VM for that specific language, but the VM must have the ability - to communicate to Erlang. - More research is needed to find VMs with this built in functionality. - -\end_layout - -\begin_layout Subsubsection Documentation \end_layout @@ -7956,7 +7979,7 @@ addcontentsline{toc}{section}{Glossary} \backslash - +printnomenclature \end_layout \end_inset