Author: Remi Meier <remi.me...@inf.ethz.ch> Branch: extradoc Changeset: r5211:94a4f114fe63 Date: 2014-05-02 09:31 +0200 http://bitbucket.org/pypy/extradoc/changeset/94a4f114fe63/
Log: minor changes diff --git a/talk/icooolps2014/position-paper.tex b/talk/icooolps2014/position-paper.tex --- a/talk/icooolps2014/position-paper.tex +++ b/talk/icooolps2014/position-paper.tex @@ -123,15 +123,15 @@ \section{Discussion} -\paragraph{dynamic language VM problems} -XXX: -- high allocation rate (short lived objects)\\ -- (don't know anything about the program that runs until it actually runs: arbitrary atomic block size) +%% \paragraph{dynamic language VM problems} +%% XXX: +%% - high allocation rate (short lived objects)\\ +%% - (don't know anything about the program that runs until it actually runs: arbitrary atomic block size) \subsection{Why is there a GIL?} The GIL is a very simple synchronisation mechanism for supporting -multi-threading in the interpreter. The basic guarantee is that the +multithreading in the interpreter. The basic guarantee is that the GIL may only be released in-between bytecode instructions. The interpreter can thus rely on complete isolation and atomicity of these instructions. Additionally, it provides the application with a @@ -139,7 +139,7 @@ on certain operations to be atomic and that they will always be executed in the order in which they appear in the code. While depending on this may not always be a good idea, it is done in -practice. A solution replacing the GIL should therefore uphold these +practice. A GIL-replacement should therefore uphold these guarantees, while preferably also be as easily implementable as a GIL for the interpreter. [xxx mention that the interpreter is typically very large and maintained @@ -151,7 +151,7 @@ thread-safe can voluntarily release the GIL themselves in order to still provide some parallelism. This is done for example for potentially long I/O operations. Consequently, I/O-bound, -multi-threaded applications can actually parallelise to some +multithreaded applications can actually parallelise to some degree. Again, a potential solution should be able to integrate with external libraries with similar ease. We will however focus our argumentation more on running code in the interpreted language in @@ -277,9 +277,7 @@ recently gained a lot of popularity by its introduction in common desktop CPUs from Intel (Haswell generation). -\paragraph{HTM} - -HTM provides us with transactions like any TM system does. It can +\paragraph{HTM} provides us with transactions like any TM system does. It can be used as a direct replacement for the GIL. However, as is common with hardware-only solutions, there are quite a few limitations that can not be lifted easily. For this comparison, we look at @@ -304,16 +302,14 @@ synchronisation mechanism for the application. It is not possible in general to expose the hardware-transactions to the application in the form of atomic blocks because that would require much -longer transactions. +longer transactions. %% - false-sharing on cache-line level\\ %% - limited capacity (caches, undocumented)\\ %% - random aborts (haswell)\\ %% - generally: transaction-length limited (no atomic blocks) -\paragraph{STM} - -STM provides all the same benefits as HTM except for its performance. +\paragraph{STM} provides all the same benefits as HTM except for its performance. It is not unusual for the overhead introduced by STM to be between 100\% to even 1000\%. While STM systems often scale very well to a big number of threads and eventually overtake the single-threaded @@ -347,9 +343,9 @@ & \textbf{GIL} & \textbf{Fine-grained locking} & \textbf{Shared-nothing} & \textbf{HTM} & \textbf{STM}\\ \hline - Performance (single-threaded) & ++ & + & ++ & ++ & -{-} \\ + Performance (single threaded) & ++ & + & ++ & ++ & -{-} \\ \hline - Performance (multi-threaded) & -{-} & + & + & + & + \\ + Performance (multithreaded) & -{-} & + & + & + & + \\ \hline Existing applications & ++ & ++ & -{-} & ++ & ++ \\ \hline @@ -357,7 +353,7 @@ \hline Implementation & ++ & - & ++ & ++ & ++ \\ \hline - External libra\-ries & ++ & ++ & ++ & ++ & ++ \\ + External libraries & ++ & ++ & ++ & ++ & ++ \\ \hline \end{tabular} \caption{Comparison between the approaches (-{-}/-/o/+/++)} @@ -405,7 +401,7 @@ \acks -Acknowledgments... +Acknowledgements... % We recommend abbrvnat bibliography style. @@ -423,4 +419,3 @@ \end{document} - _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit