위키득계정 ↗
기술

Loom 동시성 테스트

Loom 동시성 테스트기술
주요 언어
Rust
검사 대상
동시성 코드
검사 방식
실행 순서의 체계적 탐색
기반 모델
C11 메모리 모델의 일부
Loom은 Rust 동시성 코드의 실행 순서를 바꾸어 검사하는 테스트 도구다. 같은 테스트를 여러 번 실행하면서 가능한 동시 실행을 탐색하고 상태 축소 기법으로 탐색량을 줄인다.

실행 순서를 바꾸는 검사

동시성 오류는 여러 작업이 어떤 순서로 진행되는지에 따라 나타날 수 있다. Loom은 테스트의 가능한 실행을 바꾸어 반복 검사한다. 한 번의 실행에서 우연히 선택된 순서만 확인하는 대신 다양한 동시 실행을 탐색하는 방식이다.

모델 안에서의 구성

검사할 코드를 모델 실행 안에 두고 Loom이 제공하는 스레드와 동기화 형식을 이용한다. 상태 축소 기법은 가능한 조합이 지나치게 많아지는 문제를 줄이기 위한 수단이다. 실제 실행을 단순히 오래 반복하는 방식과 탐색 구성이 다르다.

지원 범위의 한계

전체 C11 메모리 모델을 모두 구현하는 것은 아니다. 일부 원자적 접근의 순서를 더 약하게 취급해 실제 오류가 아닌 경고를 만들 수 있고 탐색하지 못하는 실행 때문에 오류를 놓칠 수도 있다. 검사 통과를 모든 동시 실행의 완전한 보장으로 해석할 수는 없다.

관련 문서

Crossbeam / Rayon / Rust / 동시성 / 소프트웨어 테스트 / Proptest