Skip to main content
QUICK REVIEW

[논문 리뷰] Delay-Free Concurrency on Faulty Persistent Memory

Naama Ben-David, Guy E. Blelloch|arXiv (Cornell University)|2018. 06. 12.
Distributed systems and fault tolerance참고 문헌 28인용 수 4
한 줄 요약

이 논문은 읽기, 왤기, CAS 연산을 사용하는 임의의 동시 프로그램을 일정한 계산 및 복구 지연을 가지는 지속성 있고 장애 내성적인 버전으로 변환하는 일반적인 시뮬레이터를 제시한다. 캡슐 기반 체크포인팅과 국소 변수 사용 및 메모리 장벽 최적화를 통해 고성능을 달성하였으며, 수동 최적화된 지속성 데이터 구조와 유사한 성능을 보이며 시스템 장애 후에도 정확성을 보장한다.

ABSTRACT

Non-volatile memory (NVM) promises persistent main memory that remains correct despite loss of power. This has sparked a line of research into algorithms that can recover from a system crash. Since caches are expected to remain volatile, concurrent data structures and algorithms must be redesigned to guarantee that they are left in a consistent state after a system crash, and that the execution can be continued upon recovery. However, the prospect of redesigning every concurrent data structure or algorithm before it can be used in NVM architectures is daunting. In this paper, we present a construction that takes any concurrent program with reads, writes and CASs to shared memory and makes it persistent, i.e., can be continued after one or more processes fault and have to restart. Importantly the converted algorithm has constant computational delay (preserves instruction counts on each process within a constant factor), as well as constant recovery delay (a process can recover from a fault in a constant number of instructions). We show this first for a simple transformation, and then present optimizations to make it more practical, allowing for a tradeoff for better constant factors in computational delay, for sometimes increased recovery delay. We also provide an optimized transformation that works for any normalized lock-free data structure, thus allowing more efficient constructions for a large class of concurrent algorithms. We experimentally evaluate our transformations by applying them to a queue.

연구 동기 및 목표

  • 비휘발성 메모리(NVM) 아키텍처에서 시스템 장애 후에도 지속성 있고 복구 가능한 동시 프로그램을 만드는 데 도전한다.
  • 지속성 트랜잭션 메모리나 보편적 구성과 같은 기존 접근 방식의 한계를 극복한다. 이러한 접근 방식은 높은 오버헤드 또는 일반성 부족으로 인해 문제가 된다.
  • 성능을 유지하면서도 알고리즘 특화 재설계 없이도 빠른 복구를 가능하게 하는 일반 목적의 변환을 제공한다.
  • 기존 동시 알고리즘을 지속성 메모리로 자동으로 재사용 가능한 방식으로 이식할 수 있도록 한다.
  • 가변 캡슐 경계와 코드 수준 최적화를 통해 계산 지연과 복구 지연 사이의 균형을 맞추어 실용적인 성능을 최적화한다.

제안 방법

  • 정기적으로 프로세서 상태를 비휘발성 메모리에 저장함으로써 장애 복구를 가능하게 하는 캡슐 기반 체크포인팅 메커니즘을 사용한다.
  • 계산 지연과 복구 지연이 프로그램 크기와 관계없이 일정한 요소로 제한되는 일정 지연 시뮬레이터를 구현한다.
  • 계산 오버헤드를 줄이기 위해 캡슐 크기를 늘림으로써 계산 지연을 최소화하는 저계산 지연 시뮬레이터를 도입한다. 이는 복구 시간이 약간 증가하는 대가를 치르지만 성능 향상을 얻는다.
  • 불필요한 국소 변수 제거, 불필요한 메모리 패널 제거, 캐시 라인 왤기 순서 활용 등을 통해 플러시 횟수를 줄이고 성능을 향상시키는 최적화를 적용한다.
  • 락-프리 데이터 구조를 위한 지속성 정규화 시뮬레이터를 설계하여 알고리즘의 구조적 특성을 활용해 더 효율적인 변환을 가능하게 한다.
  • Attiya 등이 제안한 복구 가능한 CAS 원자 연산을 통합하여 원자 연산의 정확하고 효율적인 복구를 보장한다.

실험 결과

연구 질문

  • RQ1읽기, 왤기, CAS 연산을 사용하는 임의의 동시 프로그램을 일정한 지연을 가지는 지속성이고 장애 복구 가능한 버전으로 변환할 수 있는 일반 목적의 시뮬레이터를 구축할 수 있는가?
  • RQ2지속성 시뮬레이션 프레임워크에서 계산 오버헤드와 복구 시간 사이의 트레이드오프를 어떻게 최적화할 수 있는가?
  • RQ3국소 변수 감소 및 패널 제거와 같은 코드 수준 최적화를 통해 성능을 얼마나 향상시킬 수 있는가?
  • RQ4자동으로 변환된 지속성 데이터 구조의 성능은 수동 최적화된 또는 트랜잭션 메모리 기반 대안과 비교해 어떻게 되는가?
  • RQ5큐와 같은 실제 동시 데이터 구조에 대해 시뮬레이터를 효과적으로 적용할 수 있으며, 경쟁 가능한 성능과 낮은 복구 비용을 유지할 수 있는가?

주요 결과

  • 일정 지연 시뮬레이터는 계산 지연과 복구 지연 모두 일정한 요소로 제한되어 있으며, 고장 조건에서도 예측 가능한 성능을 보장한다.
  • 저계산 지연 시뮬레이터는 더 큰 캡슐을 사용함으로써 계산 오버헤드를 줄여 일반 큐의 경우 최대 1.28배, 정규화 큐의 경우 최대 1.57배의 성능 향상을 달성한다.
  • 불필요한 국소 변수 제거 및 CAS 연산 뒤 불필요한 메모리 패널 제거 최적화는 플러시 횟수를 크게 줄이고 처리량을 향상시킨다.
  • 큐의 정규화 최적화 버전은 최대 5개 스레드까지 RomulusLR를 능가하며, 단일 스레드에서는 1.42배 높은 처리량을 기록하며 LogQueue와 비교해도 경쟁력 있는 성능을 보인다.
  • 제안된 시스템의 복구는 마지막 캡슐을 로드하고 복구 가능한 CAS를 복구하는 것만으로 효율적으로 이루어지며, 스레드 수에 비례하여 선형적으로 복구 시간이 증가한다.
  • 실험 결과에 따르면 일반성과 빠른 복구의 성능 비용은 기준 비지속성 큐에 비해 극히 미미하며, 고도의 경쟁 조건에서도 처리량 저하가 낮게 유지된다.

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

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

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

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