An Approach to Internal Domain-Specific Languages in Java
from author of Fest-Assert [here, here].
P.S. Fest-Assert is good example of Internal DSL in Java. In some sence is competitor of Hamcrest.
P.P.S. Yeep, i like Internal DSL and wrote about it: here about ApacheCamel, here about Hamcrest.
среда, 27 октября 2010 г.
понедельник, 11 октября 2010 г.
четверг, 7 октября 2010 г.
TPC history
Some notes on TPC history.
With tho articles:
1985: A Measure of Transaction Processing Power
2005: Thousands of DebitCredit Transactions-Per-Second: Easy and Inexpensive
P.S. TPC from tpc.org is the most popular transaction performance test.
With tho articles:
1985: A Measure of Transaction Processing Power
2005: Thousands of DebitCredit Transactions-Per-Second: Easy and Inexpensive
P.S. TPC from tpc.org is the most popular transaction performance test.
Ярлыки:
TPC,
Transaction
вторник, 5 октября 2010 г.
An Analysis of Linux Scalability to Many Cores
An Analysis of Linux Scalability to Many Cores
ABSTRACT
This paper analyzes the scalability of seven system applications (Exim, memcached, Apache, PostgreSQL, gmake, Psearchy, and MapReduce) running on Linux on a 48-core computer. Except for gmake, all applications trigger scalability bottlenecks inside a recent Linux kernel. Using mostly standard parallel programming techniques — this paper introduces one new technique, sloppy counters — these bottlenecks can be removed from the kernel or avoided by changing the applications slightly. Modifying the kernel required in total 3002 lines of code changes. A speculative conclusion from this analysis is that there is no scalability reason to give up on traditional operating system organizations just yet.
P.S. From MIT reseachers
ABSTRACT
This paper analyzes the scalability of seven system applications (Exim, memcached, Apache, PostgreSQL, gmake, Psearchy, and MapReduce) running on Linux on a 48-core computer. Except for gmake, all applications trigger scalability bottlenecks inside a recent Linux kernel. Using mostly standard parallel programming techniques — this paper introduces one new technique, sloppy counters — these bottlenecks can be removed from the kernel or avoided by changing the applications slightly. Modifying the kernel required in total 3002 lines of code changes. A speculative conclusion from this analysis is that there is no scalability reason to give up on traditional operating system organizations just yet.
P.S. From MIT reseachers
четверг, 30 сентября 2010 г.
Набираем программистов
Господа и дамы, GridDynamics в Харькове открыл несколько позиций по J2EE всех уровней (стажер, junior, middle, senior, architect).
Кто заинтересован встретится со мной за чаем и узнать на какие проекты берем, стек технологий и т.д. - пишите на Golovach.Ivan@gmail.com.
P.S. Все проекты под кластер(10-100 машин) и с использованием In Memory Data Grid.
P.P.S. Особо жду тех, кто осилил в прошлом году мои лекции:)
P.P.P.S. Стажеров и juniors менторить буду, скорее всего, я.
P.P.P.P.S. Большинство заказчиков из Штатов/Калифорнии (eBay, PayPal, Macys, Cisco, Bank of America), так что есть возможность передать привер Арни лично:)
Кто заинтересован встретится со мной за чаем и узнать на какие проекты берем, стек технологий и т.д. - пишите на Golovach.Ivan@gmail.com.
P.S. Все проекты под кластер(10-100 машин) и с использованием In Memory Data Grid.
P.P.S. Особо жду тех, кто осилил в прошлом году мои лекции:)
P.P.P.S. Стажеров и juniors менторить буду, скорее всего, я.
P.P.P.P.S. Большинство заказчиков из Штатов/Калифорнии (eBay, PayPal, Macys, Cisco, Bank of America), так что есть возможность передать привер Арни лично:)
понедельник, 20 сентября 2010 г.
воскресенье, 12 сентября 2010 г.
Размерность частично-упорядоченных множеств
Теорема
Порядковая и мультипликативная размерность частично-упорядоченного множества совпадают.
P.S. Размерность частично-упорядоченного множества можно интерпретировать
- как степень параллельности процессов в системе
- как размерность времени системы
(детальнее смотри в книге на стр. 58).
Порядковая и мультипликативная размерность частично-упорядоченного множества совпадают.
P.S. Размерность частично-упорядоченного множества можно интерпретировать
- как степень параллельности процессов в системе
- как размерность времени системы
(детальнее смотри в книге на стр. 58).
пятница, 10 сентября 2010 г.
[Book]: Великолепная книга по распределенным системам - "Distributed Computing - Principles, Algorithms, and Systems"
Великолепная книга по распределенным системам - "Distributed Computing - Principles, Algorithms, and Systems".
Ярлыки:
Book,
Distributed
Докладываю на IT Jam.
Докладываю на IT Jam в Guru section по теме "The principal limitations on the scalability of distributed systems".
Ярлыки:
Conference,
IT Jam
четверг, 9 сентября 2010 г.
Software Transactional Memory for Large Scale Clusters
Software Transactional Memory for Large Scale Clusters
Abstract
While there has been extensive work on the design of software transactional memory (STM) for cache coherent shared memory systems, there has been no work on the design of an STM system for very large scale platforms containing potentially thousands of nodes. In this work, we present Cluster-STM, an STM designed for high performance on large-scale commodity clusters. Our design addresses several novel issues posed by this domain, including aggregating communication, managing locality, and distributing transactional metadata onto the nodes. We also re-evaluate several STMdesign choices previously studied for cache-coherent machines and conclude that, in some cases, different choices are appropriate on clusters. Finally, we show that our design scales well up to 512 processors. This is because on a cluster, the main barrier to STMscalability is the remote communication overhead imposed by the STM operations, and our design aggregates most of that communication with the communication of the underlying data.
Abstract
While there has been extensive work on the design of software transactional memory (STM) for cache coherent shared memory systems, there has been no work on the design of an STM system for very large scale platforms containing potentially thousands of nodes. In this work, we present Cluster-STM, an STM designed for high performance on large-scale commodity clusters. Our design addresses several novel issues posed by this domain, including aggregating communication, managing locality, and distributing transactional metadata onto the nodes. We also re-evaluate several STMdesign choices previously studied for cache-coherent machines and conclude that, in some cases, different choices are appropriate on clusters. Finally, we show that our design scales well up to 512 processors. This is because on a cluster, the main barrier to STMscalability is the remote communication overhead imposed by the STM operations, and our design aggregates most of that communication with the communication of the underlying data.
Ярлыки:
STM
HPCS languages: X10(IBM), Fortress(Sun), Chapel(Cray)
Beyond Locks and Messages: The Future of Concurrent Programming
Conclusions
Here’s the tongue-in-cheek summary of the trends which, if you believe that the HPCS effort provides a glimpse of the future, will soon be entering the mainstream:
1. Threads are out (demoted to latency controlling status), tasks (and semi-implicit parallelism) are in.
2. Message passing is out (demoted to implementation detail), shared address space is in.
3. Locks are out (demoted to low-level status), transactional memory is in.
Conclusions
Here’s the tongue-in-cheek summary of the trends which, if you believe that the HPCS effort provides a glimpse of the future, will soon be entering the mainstream:
1. Threads are out (demoted to latency controlling status), tasks (and semi-implicit parallelism) are in.
2. Message passing is out (demoted to implementation detail), shared address space is in.
3. Locks are out (demoted to low-level status), transactional memory is in.
понедельник, 6 сентября 2010 г.
[PJP]: Web Services Are Not Distributed Objects
"Web Services Are Not Distributed Objects"
Werner Vogels, Cornell University
Abstract
Web services are frequently described as the latest incarnation of distributed object technology. This misconception, perpetuated by people from both industry and academia, seriously limits broader acceptance of the true Web services architecture. Although the architects of many distributed and Internet systems have been vocal about the differences between Web services and distributed objects, dispelling the myth that they are closely related appears difficult.
Many believe that Web services is a distributed systems technology that relies on some form of distributed object technology. Unfortunately, this is not the only common misconception about Web services. In this article, I seek to clarify several widely held beliefs about the technology that are partially or completely wrong.
Werner Vogels, Cornell University
Abstract
Web services are frequently described as the latest incarnation of distributed object technology. This misconception, perpetuated by people from both industry and academia, seriously limits broader acceptance of the true Web services architecture. Although the architects of many distributed and Internet systems have been vocal about the differences between Web services and distributed objects, dispelling the myth that they are closely related appears difficult.
Many believe that Web services is a distributed systems technology that relies on some form of distributed object technology. Unfortunately, this is not the only common misconception about Web services. In this article, I seek to clarify several widely held beliefs about the technology that are partially or completely wrong.
Ярлыки:
Distributed,
Web services
понедельник, 30 августа 2010 г.
SEDA: An Architecture for WellConditioned, Scalable Internet Services
SEDA: An Architecture for WellConditioned, Scalable Internet Services
Abstract
We propose a new design for highly concurrent Internet services, which we call the staged event-driven architecture (SEDA). SEDA is intended to support massive concurrency demands and simplify the construction of well-conditioned services. In SEDA, applications consist of a network of event-driven stages connected by explicit queues. This architecture allows services to be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity. SEDA makes use of a set of dynamic resource controllers to keep stages within their operating regime despite large fluctuations in load. We describe several control mechanisms for automatic tuning and load conditioning, including thread pool sizing, event batching, and adaptive load shedding. We present the SEDA design and an implementation of an Internet services platform based on this architecture. We evaluate the use of SEDA through two applications: a high-performance HTTP server and a packet router for the Gnutella peer-to-peer file sharing network. These results show that SEDA applications exhibit higher performance than traditional service designs, and are robust to huge variations in load.
Abstract
We propose a new design for highly concurrent Internet services, which we call the staged event-driven architecture (SEDA). SEDA is intended to support massive concurrency demands and simplify the construction of well-conditioned services. In SEDA, applications consist of a network of event-driven stages connected by explicit queues. This architecture allows services to be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity. SEDA makes use of a set of dynamic resource controllers to keep stages within their operating regime despite large fluctuations in load. We describe several control mechanisms for automatic tuning and load conditioning, including thread pool sizing, event batching, and adaptive load shedding. We present the SEDA design and an implementation of an Internet services platform based on this architecture. We evaluate the use of SEDA through two applications: a high-performance HTTP server and a packet router for the Gnutella peer-to-peer file sharing network. These results show that SEDA applications exhibit higher performance than traditional service designs, and are robust to huge variations in load.
Ярлыки:
architecture,
SEDA
четверг, 12 августа 2010 г.
List of important publications in theoretical computer science
List of important publications in theoretical computer science:
# 1 Computability
# 2 Computational complexity theory
# 3 Algorithms
# 4 Algorithmic information theory
# 5 Information theory
# 6 Formal verification
# 1 Computability
# 2 Computational complexity theory
# 3 Algorithms
# 4 Algorithmic information theory
# 5 Information theory
# 6 Formal verification
List of important publications in computer science
List of important publications in computer science:
# 1 Theoretical computer science
# 2 Numerical Analysis
# 3 Concurrent, parallel, and distributed computing
# 4 Networks and security
# 5 Computational linguistics
# 6 Operating systems
# 7 Databases
# 8 Information retrieval
# 9 Artificial intelligence
# 10 Machine learning
# 11 Computer vision
# 12 Compilers
# 13 Software engineering
# 14 Programming languages
# 15 Computer architecture
# 16 Computer graphics
# 17 History of computation
# 18 Teaching in Computer science
# 19 Computer science humor
# 20 Collaborative Networks
# 1 Theoretical computer science
# 2 Numerical Analysis
# 3 Concurrent, parallel, and distributed computing
# 4 Networks and security
# 5 Computational linguistics
# 6 Operating systems
# 7 Databases
# 8 Information retrieval
# 9 Artificial intelligence
# 10 Machine learning
# 11 Computer vision
# 12 Compilers
# 13 Software engineering
# 14 Programming languages
# 15 Computer architecture
# 16 Computer graphics
# 17 History of computation
# 18 Teaching in Computer science
# 19 Computer science humor
# 20 Collaborative Networks
List of important publications in concurrent, parallel, and distributed computing
List of important publications in concurrent, parallel, and distributed computing with links to original papers.
If no link - you can find document by using Google Academia Search.
Contents
- Consensus, synchronisation, and mutual exclusion
- Fault-tolerance
- Distributed graph algorithms
- Foundations of distributed systems
If no link - you can find document by using Google Academia Search.
Contents
- Consensus, synchronisation, and mutual exclusion
- Fault-tolerance
- Distributed graph algorithms
- Foundations of distributed systems
The Topological Structure of Asynchronous Computability
The Topological Structure of Asynchronous Computability
MAURICE HERLIHY
AND
NIR SHAVIT
Abstract.
We give necessary and sufficient combinatorial conditions characterizing the class of decision tasks that can be solved in a wait-free manner by asynchronous processes that communicate by reading and writing a shared memory.
We introduce a new formalism for tasks, based on notions from classical algebraic and combinatorial topology, in which a task’s possible input and output values are each associated with highdimensional geometric structures called simplicial complexes. We characterize computability in terms of the topological properties of these complexes. This characterization has a surprising geometric interpretation: a task is solvable if and only if the complex representing the task’s allowable inputs can be mapped to the complex representing the task’s allowable outputs by a function satisfying certain simple regularity properties.
MAURICE HERLIHY
AND
NIR SHAVIT
Abstract.
We give necessary and sufficient combinatorial conditions characterizing the class of decision tasks that can be solved in a wait-free manner by asynchronous processes that communicate by reading and writing a shared memory.
We introduce a new formalism for tasks, based on notions from classical algebraic and combinatorial topology, in which a task’s possible input and output values are each associated with highdimensional geometric structures called simplicial complexes. We characterize computability in terms of the topological properties of these complexes. This characterization has a surprising geometric interpretation: a task is solvable if and only if the complex representing the task’s allowable inputs can be mapped to the complex representing the task’s allowable outputs by a function satisfying certain simple regularity properties.
вторник, 27 июля 2010 г.
CustomConcurrentHashMap - A framework for concurrent hash map implementations.
com.google.inject.internal.CustomConcurrentHashMap:
"A framework for concurrent hash map implementations."
"Retrieval operations (including java.util.Map.get(java.lang.Object)) generally do not block, so may overlap with update operations (including java.util.Map.put(java.lang.Object, java.lang.Object) and java.util.Map.remove(java.lang.Object))."
"Retrievals reflect the results of the most recently completed update operations holding upon their onset."
"For example, the following strategy emulates the behavior of java.util.concurrent.ConcurrentHashMap: ..."
"A framework for concurrent hash map implementations."
"Retrieval operations (including java.util.Map.get(java.lang.Object)) generally do not block, so may overlap with update operations (including java.util.Map.put(java.lang.Object, java.lang.Object) and java.util.Map.remove(java.lang.Object))."
"Retrievals reflect the results of the most recently completed update operations holding upon their onset."
"For example, the following strategy emulates the behavior of java.util.concurrent.ConcurrentHashMap: ..."
Ярлыки:
CHM,
ConcurrentHashMap,
ConcurrentMap,
google,
Guice,
MapReduce
суббота, 24 июля 2010 г.
What Do High-Level Memory Models Mean for Transactions?
What Do High-Level Memory Models Mean for Transactions?
Abstract
Many people have proposed adding transactions, or atomic blocks, to type-safe high-level programming languages. However, researchers have not considered the semantics of transactions with respect to a memory model weaker than sequential consistency. The details of such semantics are more subtle than many people realize, and the interaction between compiler transformations and transactions could produce behaviors that many people find surprising. A language’s memory model, which determines these interactions, must clearly indicate which behaviors are legal, and which are not. These design decisions affect both the idioms that are useful for designing concurrent software and the compiler transformations that are legal within the language.
Cases where semantics are more subtle than people expect include the actual meaning of both strong and weak atomicity; correct idioms for thread safe lazy initialization; compiler transformations of transactions that touch only thread local memory; and whether there is a well-defined notion for transactions that corresponds to the notion of correct and incorrect use of synchronization in Java. Open questions for a high-level memory-model that includes transactions involve both issues of isolation and ordering.
Abstract
Many people have proposed adding transactions, or atomic blocks, to type-safe high-level programming languages. However, researchers have not considered the semantics of transactions with respect to a memory model weaker than sequential consistency. The details of such semantics are more subtle than many people realize, and the interaction between compiler transformations and transactions could produce behaviors that many people find surprising. A language’s memory model, which determines these interactions, must clearly indicate which behaviors are legal, and which are not. These design decisions affect both the idioms that are useful for designing concurrent software and the compiler transformations that are legal within the language.
Cases where semantics are more subtle than people expect include the actual meaning of both strong and weak atomicity; correct idioms for thread safe lazy initialization; compiler transformations of transactions that touch only thread local memory; and whether there is a well-defined notion for transactions that corresponds to the notion of correct and incorrect use of synchronization in Java. Open questions for a high-level memory-model that includes transactions involve both issues of isolation and ordering.
Ярлыки:
Memory Model,
Transaction Memory
вторник, 20 июля 2010 г.
Werner’s requirements
Job Opening for a Senior Research Engineer:
"You need to be able to dive deep on technology issues, use your analytical skills to reduce a problem to its fundamentals, and create solutions."
"... use computer science theory and knowledge of advanced research to design solutions that are fundamental in nature ..."
"...understanding of distributed storage systems, scalable database technologies and data stream processing."
"You need to be able to dive deep on technology issues, use your analytical skills to reduce a problem to its fundamentals, and create solutions."
"... use computer science theory and knowledge of advanced research to design solutions that are fundamental in nature ..."
"...understanding of distributed storage systems, scalable database technologies and data stream processing."
Подписаться на:
Сообщения (Atom)