From: Tarik Nesh-Nash (tarikn_at_microsoft.com)
Date: Mon Jan 26 2004 - 00:22:15 PST
This paper discusses performance implication of five different threads implementations. Both experimental and analytical comparisons are presented. The document also discuss methods to workaround the latency caused by threads contention.
The document starts with an introduction section that describes some implications of using threads in uniprocessors and multiprocessors and briefly discusses the latency throughput tradeoff.
The next section briefly discusses the data structure of a thread. As far as I know, threads implementations in current OSs are very close to the abstract definition described in this document. This section ends with some known performance and optimization issues.
The third paragraph describes five thread management alternatives and states some potential advantages and disadvantages of every alternative. The section concludes with experimental and analytical analysis of their performance. I would argue that the "null threads" experiment is a realistic sample of a real multithreading application.
The next chapter discusses alternatives to mitigate the performance hit of spin waiting and compares its performances. An interesting implementation was the Ethernet-style backoff, however, the potential starvation and its "unfairness" make it a risky solution. A variation to this suggestion may however be considered. Unfortunately, the performance graphs do not include this method in the comparison. "Jacketing" seems the favorite implantation in current OS, I will be interested to learn more about its implementation and its performance advantage.
The paper finishes with a threading design model to the issues of bus and lock contentions.
This paper is a gread introduction to the world of threads, a good follow up will be an analysis of the state of the art on this field.
This archive was generated by hypermail 2.1.6 : Mon Jan 26 2004 - 00:22:58 PST