Ignore:
Timestamp:
Jun 27, 2023, 4:45:40 PM (12 months ago)
Author:
caparsons <caparson@…>
Branches:
master
Children:
a1f0cb6
Parents:
917e1fd
Message:

first draft of full waituntil chapter and conclusion chapter. Lots of graph/plotting utilities cleanup. Reran all CFA actor benchmarks after recent changes. Small changes to actor.tex in performance section

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/colby_parsons_MMAth/text/actors.tex

    r917e1fd r14e1053  
    55% ======================================================================
    66
    7 % C_TODO: add citations throughout chapter
    87Actors are an indirect concurrent feature that abstracts threading away from a programmer, and instead provides \gls{actor}s and messages as building blocks for concurrency, where message passing means there is no shared data to protect, making actors amenable in a distributed environment.
    98Actors are another message passing concurrency feature, similar to channels but with more abstraction, and are in the realm of \gls{impl_concurrency}, where programmers write concurrent code without dealing with explicit thread creation or interaction.
     
    423422Push operations are amortized $O(1)$ since pushes may cause doubling reallocations of the underlying dynamic-sized array (like \CC @vector@).
    424423
    425 % C_TODO: maybe make copy_queue diagram
    426 
    427424Since the copy queue is an array, envelopes are allocated first on the stack and then copied into the copy queue to persist until they are no longer needed.
    428425For many workload, the copy queues grow in size to facilitate the average number of messages in flight and there is no further dynamic allocations.
     
    834831In another example, if the average gulp size is very high, it could indicate that the executor could use more queue sharding.
    835832
    836 % C_TODO cite poison pill messages and add languages
    837833Another productivity feature that is included is a group of poison-pill messages.
    838 Poison-pill messages are common across actor systems, including Akka and ProtoActor \cite{}.
     834Poison-pill messages are common across actor systems, and are used in actor libraries Akka and ProtoActor~\cite{Akka,ProtoActor}.
    839835Poison-pill messages inform an actor to terminate.
    840836In \CFA, due to the allocation of actors and lack of garbage collection, there needs to be a suite of poison-pills.
     
    881877        & \multicolumn{1}{c|}{\CFA (100M)} & \multicolumn{1}{c|}{CAF (10M)} & \multicolumn{1}{c|}{Akka (100M)} & \multicolumn{1}{c|}{\uC (100M)} & \multicolumn{1}{c@{}}{ProtoActor (100M)} \\
    882878        \hline
    883         AMD             & \input{data/pykeSendStatic} \\
     879        AMD             & \input{data/nasusSendStatic} \\
    884880        \hline
    885         Intel   & \input{data/nasusSendStatic}
     881        Intel   & \input{data/pykeSendStatic}
    886882\end{tabular}
    887883
     
    894890        & \multicolumn{1}{c|}{\CFA (20M)} & \multicolumn{1}{c|}{CAF (2M)} & \multicolumn{1}{c|}{Akka (2M)} & \multicolumn{1}{c|}{\uC (20M)} & \multicolumn{1}{c@{}}{ProtoActor (2M)} \\
    895891        \hline
    896         AMD             & \input{data/pykeSendDynamic} \\
     892        AMD             & \input{data/nasusSendDynamic} \\
    897893        \hline
    898         Intel   & \input{data/nasusSendDynamic}
     894        Intel   & \input{data/pykeSendDynamic}
    899895\end{tabular}
    900896\end{table}
     
    916912The results from the static/dynamic send benchmarks are shown in Figures~\ref{t:StaticActorMessagePerformance} and \ref{t:DynamicActorMessagePerformance} respectively.
    917913\CFA leads the charts in both benchmarks, largely due to the copy queue removing the majority of the envelope allocations.
     914Additionally, the receive of all messages sent in \CFA is statically known and is determined via a function pointer cast, which incurrs a compile-time cost.
     915All the other systems use their virtual system to find the correct behaviour at message send.
     916This requires two virtual dispatch operations, which is an additional runtime send cost that \CFA does not have.
     917Note that Akka also statically checks message sends, but still uses their virtual system at runtime.
    918918In the static send benchmark all systems except CAF have static send costs that are in the same ballpark, only varying by ~70ns.
    919919In the dynamic send benchmark all systems experience slower message sends, as expected due to the extra allocations.
     
    10841084
    10851085Figure~\ref{t:ExecutorMemory} shows the high memory watermark of the actor systems when running the executor benchmark on 48 cores.
    1086 \CFA has a high watermark relative to the other non-garbage collected systems \uC, and CAF.
     1086\CFA has a high watermark relative to the other non-garbage-collected systems \uC, and CAF.
    10871087This is a result of the copy queue data structure, as it will over-allocate storage and not clean up eagerly, whereas the per envelope allocations will always allocate exactly the amount of storage needed.
     1088Despite having a higher watermark, the \CFA memory usage remains comparable to other non-garbage-collected systems.
    10881089
    10891090\subsection{Matrix Multiply}
Note: See TracChangeset for help on using the changeset viewer.