Papers/Multi_Core기반 테스트

Software Enablement For Multicore Architecture

tomato13 2008. 6. 29. 11:33

ce.et.tudelft.nl/~carlo/File_index/Symposium/02_Bernstein_%5BVassiliadis_Symposium_2007%5D.pdf

 

.......

The focus of this overview paper is on how CMPs affect the software development processes, i.e. how we program for multicore architectures, how we test and evaluate the performance of multithreaded application, etc.

........

So, there are two main directions to pursue programming for multiprocessors: explicit manual programming and exploitation of the combination of the software compiler optimization, the build tool chains, and the run-time subsystems.

........

In the last five years a new community of consurrent testing was created (see PADTAD workshop)

........

One of the reasons that concurrency problems is load testing. This is very late in the process and consequently very expensive as well as not terribly efficient. In addition, when a bug is found recreating it is a very difficult problem dut to the nondeterministic characteristics of the problem.

........

The approach is composed of the following steps:

- Teach develepers how to write concurrent code. The focus is not on concurrent algorithms of data structures but on practical issues needed to get the application to work. We teach concurrent bug patterns, explain the concurrent programming constructs, and teach genral concurrency design patterns.

- once the code is written it needs to be reviewed, Regular review/inspection is meant for sequential code. We have developed a specialized review technique for concurrent code which we teach in review workshops in many places in IBM.

- Teach developers how to do unit testing. Without proper tool unit testing can not find multi-threaded issues as there is no enough contention. First we developed synchronization coverage, a tool supported method for measuring contention.

 

In addition to this early bug detection and removal techniques we also enhance the later phases of testing(function, system and stress) by making the tests a lot more likely to exhibit bugs that exist in the code. This is done by changing the interval timing of the executions in a way that is more likely to show abnormal behaviors.