Dependability issues of parallel programming in measurement systems

In the design and development of industrial measurement systems several aspects have to be addressed, e.g.: performance, dependability, maintainability, evolution. Measurement systems have to accept all incoming signals and process them in a limited time. Time constraints are often very difficult to fulfil and one of possible solutions could be parallelism. It can also address the scalability requirement. As the system evolves, some new features may have critical impact on the performance, so, the software architecture should be suitable for vertical and horizontal scalability. Unfortunately, parallelism itself may also cause many problems.
The paper presents the experiences of the design and development of an industrial measurement system. The architecture of our system is parallel and highly scalable. In parallel systems, it is easier to introduce errors than in sequential ones. Errors may be in synchronization, data sharing and can, sometimes, hinder processing within time limits acceptable for a measurement system. So, the performance problems may also appear as dependability ones.
We have implemented a multi-channel signal processing system in the C# language (managed code). C# facilitates the implementation of a parallel program, but, as we have shown in other paper, can significantly decrease processing performance. Therefore, the language features and the software architecture should be carefully selected.
In this paper, the problems met during the implementation of a measurement system as well as theirs solutions are presented. One of them was unpredictable behavior of garbage collector decreasing system performance. Some deadlock situations have also been identified, which may occur if the measurement device (i.e. hardware) would experience a specific failure mode. It is shown, how substantially performance increase and very effective and scalable code was achieved.

Author: Piotr Gawkowski
Conference: Title