119 research outputs found
Consistent state software transactional memory
Dissertação apresentada na Faculdade de
Ciências e Tecnologia da Universidade
Nova de Lisboa para a obtenção do Grau
de Mestre em Engenharia InformáticaAs the multicore CPUs start getting into everyone’s computers, concurrent programming
must start covering, not only the scientific and enterprise applications, but also
every computer application we all use in our daily lives.
Since the introduction of software transactional memory [ST95,HLMWNS03], this
topic has had a strong interest by the scientific community as it has the potential of
greatly facilitating concurrent programming by hiding the concurrency issues under
the transactional layer.
This thesis builds on the TL2 STM engine [DON06], which is one of the top performing
to date. We have explored different design alternatives focusing on performance
and safety. With our research we have achieved performance improvements and better
safety properties of the engine. We have also achieved a much better understanding of
the design alternatives and their impacts.
During the course of this thesis we have come across several tough concurrency
bugs and we have created a list of testing patterns, which proved to be useful in finding
and reproducing several problems.
This thesis describes the cutting edge of STM engine technology, elaborates on the
design of a new STM engine and reports on the experimental results obtained
Tuning the Level of Concurrency in Software Transactional Memory: An Overview of Recent Analytical, Machine Learning and Mixed Approaches
Synchronization transparency offered by Software Transactional Memory (STM) must not come at the expense of run-time efficiency, thus demanding from the STM-designer the inclusion of mechanisms properly oriented to performance and other quality indexes. Particularly, one core issue to cope with in STM is related to exploiting parallelism while also avoiding thrashing phenomena due to excessive transaction rollbacks, caused by excessively high levels of contention on logical resources, namely concurrently accessed data portions. A means to address run-time efficiency consists in dynamically determining the best-suited level of concurrency (number of threads) to be employed for running the application (or specific application phases) on top of the STM layer. For too low levels of concurrency, parallelism can be hampered. Conversely, over-dimensioning the concurrency level may give rise to the aforementioned thrashing phenomena caused by excessive data contention—an aspect which has reflections also on the side of reduced energy-efficiency. In this chapter we overview a set of recent techniques aimed at building “application-specific” performance models that can be exploited to dynamically tune the level of concurrency to the best-suited value. Although they share some base concepts while modeling the system performance vs the degree of concurrency, these techniques rely on disparate methods, such as machine learning or analytic methods (or combinations of the two), and achieve different tradeoffs in terms of the relation between the precision of the performance model and the latency for model instantiation. Implications of the different tradeoffs in real-life scenarios are also discussed
A simple deterministic algorithm for guaranteeing the forward progress of transactions
This paper describes a remarkably simple deterministic (not probabilistic) contention-management algorithm for guaranteeing the forward progress of transactions - avoiding deadlocks, livelocks, and other anomalies. The transactions must be finite (no infinite loops), but on each restart, a transaction may access different shared-memory locations. The algorithm supports irrevocable transactions as long as the transaction satisfies a simple ordering constraint. In particular, a transaction that accesses only one shared-memory location is never aborted. The algorithm is suitable for both hardware and software transactional-memory systems. It also can be used in some contexts as a locking protocol for implementing transactions "by hand."
Deploying active objects onto multicore
The performance of a program on multicore platform crucially depends on the
scheduling of its tasks; existing high-level programming languages, however,
offer limited control over scheduling. In this thesis, we develop Cacoj as an
extensible tool set to transform Creol’s active concurrent objects into Java to
be deployed on multicore through standard Java Runtime Environment. The
concurrent object paradigm is a promising trend for multicore programming
because each object may conceptually encapsulate a processor. Cacoj introduces
a higher-level abstraction of concurrency API and a Creol compiler in which
the translated object in Java takes control over the scheduling of the incoming
messages through a per-object approach in contrast with current mainstream
trend. Cacoj brings about the required grounds to extend Creol syntax to
additionally specify different levels of priority and integrate them into the notion
of active concurrent objects
- …