Skip to main content
QUICK REVIEW

[논문 리뷰] Reuse, don't Recycle: Transforming Lock-free Algorithms that Throw Away Descriptors

Maya Arbel-Raviv, Trevor Brown|arXiv (Cornell University)|2017. 08. 05.
Parallel Computing and Optimization Techniques인용 수 4
한 줄 요약

이 논문은 잠금이 없는 알고리즘에서 디스크립터 할당 및 회수를 디스크립터 재사용으로 대체하는 변환 기법을 제안하며, 메모리 오버헤드를 크게 감소시키고 성능을 향상시킵니다. 약한 디스크립터 ADT를 설계하고 k-CAS 및 LLX/SCX와 같은 알고리즘에 적용함으로써 피크 메모리 사용량을 최대 1,000배 감소시키고 정확성과 잠금 없는 진행 보장을 유지하면서도 성능 향상을 달성합니다.

ABSTRACT

In many lock-free algorithms, threads help one another, and each operation creates a descriptor that describes how other threads should help it. Allocating and reclaiming descriptors introduces significant space and time overhead. We introduce the first descriptor abstract data type (ADT), which captures the usage of descriptors by lock-free algorithms. We then develop a weak descriptor ADT which has weaker semantics, but can be implemented significantly more efficiently. We show how a large class of lock-free algorithms can be transformed to use weak descriptors, and demonstrate our technique by transforming several algorithms, including the leading k-compare-and-swap (k-CAS) algorithm. The original k-CAS algorithm allocates at least k+1 new descriptors per k-CAS. In contrast, our implementation allocates two descriptors per process, and each process simply reuses its two descriptors. Experiments on a variety of workloads show significant performance improvements over implementations that reclaim descriptors, and reductions of up to three orders of magnitude in peak memory usage.

연구 동기 및 목표

  • 잠금이 없는 알고리즘에서 디스크립터 할당 및 회수로 인한 높은 공간 및 시간 오버헤드를 해결하기 위해.
  • 해저드 포인터나 DEBRA+와 같은 복잡한 잠금 없는 메모리 회수 메커니즘의 필요성을 제거하기 위해.
  • 정확성이나 진행 보장 없이도 넓은 범위의 잠금이 없는 알고리즘에서 효율적인 디스크립터 재사용을 가능하게 하기 위해.
  • 실제 동시성 데이터 구조에 적용 가능한 실용적이고 일반적인 변환 기법을 제공하기 위해.
  • k-CAS 및 LLX/SCX와 같이 디스크립터에 의존하는 알고리즘의 성능과 메모리 효율성을 향상시키기 위해.

제안 방법

  • 잠금이 없는 알고리즘에서 디스크립터 사용을 위한 추상 데이터 유형(ADT)을 도입하여, 불변 디스크립터와 가변 디스크립터를 구분합니다.
  • 메모리 회수를 필요로 하지 않으면서도 안전한 재사용을 허용하는 약한 디스크립터 ADT를 제안합니다.
  • 기존의 디스크립터를 버리는 알고리즘을 두 개의 재사용 가능한 디스크립터를 각 프로세스가 사용하도록 변환하는 프레임워크를 설계합니다.
  • 모든 실행 경로에서 원래 알고리즘의 의미를 유지함을 증명함으로써 정확성을 확보합니다.
  • k-CAS 및 LLX/SCX 알고리즘에 변환 기법을 구현하여 동적 할당을 디스크립터 재사용으로 대체합니다.
  • 다양한 워크로드에서 성능 및 메모리 사용량을 철저히 평가하기 위해 철저한 실험을 수행하며, 전통적인 디스크립터 회수 기법과 비교합니다.

실험 결과

연구 질문

  • RQ1현재 디스크립터를 폐기하는 광범위한 잠금이 없는 알고리즘에 대해 디스크립터 재사용을 안전하게 적용할 수 있는가?
  • RQ2전통적인 회수 기법과 비교했을 때 디스크립터 재사용이 피크 메모리 사용량을 얼마나 줄일 수 있는가?
  • RQ3k-CAS 및 LLX/SCX와 같은 동시성 데이터 구조에서 디스크립처 재사용이 측정 가능한 성능 향상을 이끌어내는가?
  • RQ4약한 디스크립터 ADT를 사용하여 복잡한 메모리 회수 메커니즘의 필요성을 제거하면서도 정확성을 유지할 수 있는가?
  • RQ5다양한 워크로드와 스레드 수에서 변환된 알고리즘의 성능은 어떻게 스케일링되는가?

주요 결과

  • 변환된 k-CAS 알고리즘은 다음으로 좋은 구현 대비 피크 메모리 사용량을 거의 세 자리 수 감소시켰습니다.
  • 디스크립터 재사용을 사용한 k-CAS 알고리즘은 특히 고도의 경쟁 상황에서 디스크립터를 회수하는 구현보다 뚜렷한 성능 향상을 달성합니다.
  • LLX/SCX의 변환된 구현은 많은 업데이트가 포함된 워크로드에서 뚜렷한 성능 이점을 보이며, 기반의 이진 탐색 트리의 효율성을 향상시킵니다.
  • 약한 디스크립터 ADT는 복잡한 메모리 회수 메커니즘 없이도 안전하고 효율적인 디스크립터 재사용을 가능하게 하여 해저드 포인터나 유사 기법의 필요성을 제거합니다.
  • 이 변환 기법은 현재 디스크립터를 할당하고 회수하는 알고리즘의 넓은 범위에 일반적으로 적용 가능한 것으로 밝혀졌습니다.
  • 실험 결과는 디스크립터 재사용이 하드웨어 트랜잭셔널 메모리 지원이 없는 시스템에서도 낮은 메모리 소비와 더 빠른 실행을 이끌어내는 것으로 확인되었습니다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.