멀티쓰레드 프로그램 평가기준

유명하신 Doug Lea 교수님의 멀티 쓰레드 프로그램의 평가기준에 대한 내용이다. “Java 언어로 배우는 디자인 패턴 입문 멀티 쓰레드편, Yuki Hiroshi” 의 Introduction 2 챕터에 나오는 내용이다.

아래의 기준들은 Doug Lea 분류를 기준으로 한 것이며, 이런 류의 평가 기준은 대개 상반(trade-off)되는 경우가 있다.

필 수
– 안전성 (safety) – 객체를 망가트리지 않을 것
– “망가 진다”는 것은 비유적 표현으로 객체의 필드가 예상 외의 값을 취하는 것을 의미합니다.
– 복수의 스레드가 이용해도 안전성이 유지되는 클래스를 스레드 세이프(thread-safe)한 클래스라고 하며 자바 API에는 명시되어 있습니다.
– 생존성 (liveness) – 필요한 처리가 이뤄질 것

옵 션
재사용성 (resuability) – 클래스를 다시 사용할 수 있는 것
– 멀티 스레드 프로그램에서는 스레드 배타제어, 구조, 방침을 캡슐화 하는 것이 관건이며 Java SE 5.0의 java.util.concurrent 패키지에서 이를 잘 구현하고 있다.
– 수행 능력(performance) – 고속 / 대량으로 처리할 수 있을 것
– throughput – 단위 시간 당 처리 수
– 응답성 (responsiveness) – 요청을 한 뒤 반응이 나타날 때까지 걸리는 시간
– GUI 프로그램에서는 요청의 완료까지 걸리는 시간보다 처리 시작까지의 시간을 중요하게 생각하기도 합니다. 여기서 완료는 요청 -> 처리 -> 응답 까지의 시간이며 처 리 시작은 완료까지의 시간은 좀 더 걸리더라도 클라이언트에게 먼저 응답(~을 처리 중입니다 등)을 보내는 것을 말합니다.
– 응답성이 높은 프로그램은 대기 시간(latency)이 짧다고 표현한다.
– 용량 (capacity) – 동시에 처리할 수 있는 수
– 그 밖에 효율(efficiency), 확장성(scalability), 저하(degradation) 등이 있다.

평가기준 정리
멀티 스레드 시스템에서 안전성과 생존성이 지켜지지 않으면 제대로된 프로그램이라고 할 수 없습니다.
따라서 이 필수 조건을 만족한 상태에서 재사용성과 수행 능력을 어떻게 높이느냐가 관건이 되겠습니다.

* Reference
– http://ethdemor.springnote.com/pages/4349969

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.