Burst Buffer?
버스트 버퍼는 무엇인가? 우리는 이름을 통해서 버스트 버퍼라는 것이 직관적으로 burst한 무언가를 위한 버퍼라는 것을 알 수 있다. 그렇다, 버스트 버퍼는 고성능 컴퓨팅 환경에서 bursty I/O 즉, 순간적으로 높은 대역폭을 요구하는 I/O를 효과적으로 처리하기 위한 고성능 스토리지 티어 또는 I/O 미들웨어로 볼 수 있다.
Emerging the Burst Buffer
먼저 Burst Buffer가 등장한 배경을 알아보자.
컴퓨팅 파워의 비약적인 증가는 스토리지 성능과의 상당한 성능 gap을 유발시켰으며, 시간당 생성되는 데이터의 양을 증가시켰다. 특히, 고성능 컴퓨팅(HPC) 시스템과 같이 상당한 컴퓨팅 리소스를 가지고 있는 시스템에서는 이러한 특성이 더욱 두드러지게 나타나면서 스토리지 단에서의 병목현상이 문제가 되고 있다.———(1)
HPC 시스템은 일반적으로 응용의 계산을 위한 컴퓨팅 노드, 데이터 처리를 위한 I/O 노드 그리고 데이터들을 저장하기 위한 Parallel File System(PFS)로 구성되는데, 대부분의 HPC 시스템에서는 HDD 기반의 PFS를 사용한다. HDD를 통한 I/O 성능요건을 만족시키는 것은 상당한 비용이 유발되며, 비용대비 매우 비효율적이다. ———(2)
(1),(2)와 같은 배경에서, “Burst Buffer“ 라는 기술이 등장하게되었다. Burst Buffer는 고성능 스토리지를 기반으로 구성되어 컴퓨팅 성능과 I/O 성능간의 gap을 줄여주며, SSD와 같은 고성능 스토리지는 대역폭을 제공하는데 HDD와 비교하여 비용대비 매우 효율적이다.
Burst Buffer는 컴퓨팅 노드와 HDD-based PFS 사이에 위치하며, 수많은 응용으로부터 발생되는 I/O를 고속으로 처리해준다. 또한 데이터 필터링 및 PFS의 접근 제어를 통해, PFS로의 I/O congestion을 줄여주는 역할을 한다.
Burst Buffer Architectures
Burst Buffer(BB)의 구조는 대표적으로 Node-local BB 그리고 Remote shared BB가 있다. Remote shared BB에 경우, 위치에 따라 I/O node기반의 BB 그리고 dedicated node기반 BB로 나뉜다. 최적의 Burst Buffer 구조는 시스템의 목적 및 요구사항 따라 달라지며, 이는 각 구조의 장단점을 기반으로 선택되어진다. 다음은 각 구조의 특징 및 장단점을 기술한다.
Node-local BB
Node-local BB는 컴퓨팅 노드에 위치한 Burst Buffer로 로컬 노드의 스토리지 스택, 즉 로컬 파일시스템을 사용한다. 또한 PFS로의 데이터 flushing을 위해서는 별도의 전용 스레드 또는 데몬을 통한 관리가 필요하며 기본적으로 노드간의 데이터 공유가 어렵다는 특징을 가진다.
Advantages
- Performance Scalability
: 컴퓨팅 노드 수 증가에 따라 BB의 전체 성능이 선형적으로 증가 - Consistent and Predictable Performance
: 대부분 고유하게 로컬 스토리지 사용 - No Network traffic
: 로컬 I/O 수행
- Performance Scalability
Disadvantages
- Not support N-1 pattern : 노드간 공유 네임스페이스를 지원하지 않음
- No Data resiliency : 컴퓨팅 노드의 failure에 따른 복구 방안 제공하지 않음
Node-local BB 구조는 데이터가 생성되는 컴퓨팅 노드에 위치하여 가질 수 있는 데이터 지역성의 장점 및 쉬운 성능 확장성 그리고 네트워크 트래픽을 유발하지 않는 등 상당히 컴팩트하면서 장점이 확실한 구조이다. 하지만 그만큼 제약사항도 많아, Node-local BB를 general-purpose한 목적으로 사용하기에는 어려운점이 있다.
Node-local BB 구조를 개선시키기 위한 작업으로는 네트워크 파일시스템 도입을 통한 공유 네임스페이스 지원, SCR 라이브러리를 활용한 data resiliency 제공, 그리고 노드 로컬 형태의 특수 목적 파일시스템 개발을 통한 개선 작업들이 있다.
관련 파일시스템으로 PLFS 파일시스템을 간단히 소개한다.
PLFS(Parallel Log-structure File System)는 N-1 형태의 파일을 N-N 형태로 재배치 시킴으로써 HDD 기반의 PFS에서 N-1으로 인해 발생할 수 있는 랜덤쓰기를 제거해 N-1 체크포인팅에 대한 성능을 최적화시킨 파일시스템으로 사실 초기 버전에서는 Node-local BB와는 관련이 없었다. 하지만 PLFS2.0부터 데이터 저장 위치를 자유롭게 지정할 수 있게되면서, PLFS는 Node-local BB 형태로 활용할 수 있게 되었다. PLFS를 통하여 N-N 패턴뿐 아니라 N-1 패턴까지 N-N과 같은 성능을 제공받을 수 있지만, PLFS 구조 특성상 읽기 성능이 매우 느리고 노드간 데이터가 공유 기능을 지원하지 않아 general-purpose한 형태로 사용하기에는 한계를 가지고있다.
Remote shared BB
Remote shared BB는 컴퓨팅 노드가 아닌 I/O 노드 또는 BB 전용 노드에 위치한 Burst Buffer 구조를 의미한다. 대부분 동일한 네임스페이스를 제공하는 형태로 구현되어지며, 컴퓨팅 노드에서 BB 네임스페이스를 직접 마운트하는 형태로 사용되어진다.
Advantages
- Support data access between nodes
- Support N-1 pattern
: 노드간 데이터 접근 지원을 통한 N-1 패턴 지원 - Isolation resource for BB from an applications
: 리소스 공유로 인한 응용 간섭 x
Disadvantages
- Performance degradation from BB sharing
: BB 공유로 인한 데이터 섞임 및 리소스 경쟁 - Limited BB performance
: 네트워크 대역폭, 노드 수, 그리고 슬롯 수의 따른 성능 한계 - I/O node based-BB : Performance degradation from sharing network with PFS
- Dedicated node based-BB : Cost for dedicated node
- Performance degradation from BB sharing
Remote shared BB 구조는 현재 일반적으로 사용되는 구조로 많은 슈퍼컴퓨터 시스템에서 채택되어 사용되고 있으며 대표적으로 NERSC의 Cori 슈퍼컴퓨터에서 전용 BB노드에 Burst Buffer를 구축하여 사용되고 있다. 노드간 데이터 접근 및 가시성을 제공하고 BB와 응용의 리소스 사용이 분리되어 있다는 점에서 Remote shared BB는 general-purpose한 형태로 사용하기 적합하다. 해당 구조를 사용하기 위해서는 일반적으로 전용의 노드를 구축해야 된다는 점, 더불어 BB의 성능 확장성이 비용과 비례한다는 점에서 해당 구조는 비용대비 효율이 좋은 모델은 아니다. 하지만, 비용의 문제에서 어느정도 자유롭다면 전용 노드 기반의 Burst Buffer를 구축하여 운영하는 것이 일반적으로 좋은 선택이다.
Discussion
Nand-flash의 가격이 점점 저렴해지면서 모든 스토리지 디바이스를 flash기반의 스토리지로 사용하자는 “All-flash”라는 트랜드가 나타났다. 그에 따라 HPC 시스템에서 PFS가 HDD 기반이 아닌 SSD 기반의 PFS로 대체될 수 있다. 그랬을때 Burst Buffer는 사용가치가 있을까란 의문이 생길 수 있다. 더 나아가 all-flash 환경에서 Burst Buffer는 어떤 구조를 가져야 할까란 생각이 들 수 있다. 개인적인 견해로는 Remote shared BB 구조는 앞으로 사용되지 않고 주로 Node-local 형태의 BB 구조가 사용될 것이라 생각한다. SSD-based PFS는 이미 충분한 I/O 성능을 제공해 줄 수 있는 상황에서 Burst Buffer는 데이터 지역성을 활용할 수 있는 것, 그리고 필터링 역할을 통한 불필요한 PFS 접근 및 네트워크 사용을 줄이는 역할이 주요해 질 것이라 본다. 따라서 앞으로의 Burst Buffer는 Node-local BB 구조 기반으로 연구가 활발히 진행되지 않을가란 생각을 해본다.
Burst Buffer Use Cases
- Checkpoint/Restart
- Staging area (stage in/out)
- Write-through Cache
- Data sharing
- Layer for optimization by reshaping writes
Burst Buffer Papers
BB standard 논문
- “On the role of burst buffers in leadership-class storage systems”
Node-local BB 관련 논문
- “An Ephemeral Burst-Buffer File System for Scientific Applications”
- “오픈소스 파일시스템을 활용한 버스트 버퍼 프로토타입 구축 및 성능 분석 연구”
Remote shared BB 관련 논문
- “Accelerating Science with the NERSC Burst Buffer Early User Program”
- “Jitter-Free Co-Processing on a Prototype Exascale Storage Stack”
- “BurstMem: A High-Performance Burst Buffer System for Scientific Applications”
- “Accelerating a Burst Buffer via User-Level I/O Isolation”
BB 비교 분석 논문
- “To share or not to share: comparing burst buffer architectures”
- “Quantifying I/O and Communication Traffic Interference on Dragonfly Networks Equipped with Burst Buffers”
BB 스케쥴링 관련 논문
- “Trio: Burst buffer based i/o orchestration”
- “Scalable I/O-Aware Job Scheduling for Burst Buffer Enabled HPC Clusters”
- “Managing I/O Interference in a Shared Burst Buffer System”
- “Leveraging burst buffer coordination to prevent I/O interference”
BB 최적화 관련 논문
- “Scientific Workflows at DataWarp-Speed: Accelerated Data-Intensive Science Using NERSC’s Burst Buffer”
- “A User-Level InfiniBand-Based File System and Checkpoint Strategy for Burst Buffers”
- “SSDUP: a traffic-aware ssd burst buffer for HPC systems”