Resource disaggregation provides a way to improve the efficiency of data center by splitting each hardware resource to separate resource pools such as compute nodes and memory nodes. Resource disaggregation can be an efficient solution to address the resource under-utilization problem in data centers by elastic management of hardware resources. To become a feasible solution, Disaggregated memory systems need to address the costs associated with data movements between compute and memory nodes because the data movements are highly frequent. However, the mechanisms used in most existing disaggregated memory systems still show substantial overhead because they commonly reuse the slow swap system for the ease of implementation. This research proposes a system, TribuOS, for system-level memory disaggregation. TribuOS designs an efficient data path for fetching and evicting remote memory pages, and builds a new subsystem that replaces swap system. The TribuOS’ efficient subsystem reduces the cost of data movements between compute and memory nodes. To reduce fetch latency, TribuOS eliminates the need of using expensive swap cache operation by not evicting shared anonymous pages. TribuOS hides a significant portion of eviction overhead by overlapping network latency and kernel execution. For reliability, TribuOS replicates states of a memory node. The fast eviction performance also contributes to reducing the performance cost of reliability when replicating evicted pages. TribuOS is quantitatively compared with the state-of-the-art disaggregated memory system, Fastswap, showing up to 4x better performance. Our failure and recovery experiment demonstrates that TribuOS can recover replicas and tolerate a cascading failure with negligible downtime due to recovery.
자원 분리(disaggregation)는 컴퓨트 자원과 메모리 자원 같은 하드웨어 자원들을 분리시켜 각 자원의 풀을 형성함으로써 데이터 센터의 효율성을 향상시킨다. 자원 분리는 탄력적인 하드웨어 자원의 관리를 가능케 함으로써 현재 데이터 센터의 낮은 자원 활용도 문제를 해결할 수 있는 효과적인 해결책이 될 수 있다. 메모리 분리 시스템(disaggregated memory system)이 실현 가능한 해결책이 되기 위해서는 컴퓨트 노드와 메모리 노드 간의 데이터 이동 비용에 초점을 맞추어야 한다. 왜냐하면 메모리 분리 시스템에서는 노드 간 데이터 이동이 매우 자주 발생하기 때문이다. 하지만 현존하는 메모리 분리 시스템들은 메모리 분리 시스템에서 비효율적으로 동작하는 커널의 스왑 시스템을 구현의 용이성 때문에 재사용하여, 상당한 어플리케이션 성능 감소를 보인다는 단점을 가지고 있다. 본 연구에서는 TribuOS 라는 시스템 수준의 메모리 분리 시스템을 제안한다. TribuOS 의 디자인은 원격 메모리 페이지의 읽기(fetch)와 쓰기(evict) 성능 향상을 위한 효율적인 데이터 경로를 가지며, 컴퓨트 노드와 메모리 노드 간 데이터 이동 비용을 감소시키는 효율적인 서브 시스템을 가진다. TribuOS 는 원격 메모리 읽기의 지연시간을 감소하기 위해 공유 익명 페이지(shared anonymous pages)를 원격 메모리에 쓰지 않음으로써 비싼 스왑 캐시 동작을 제거시켰다. 또한 TribuOS 는 네트워크 지연시간과 커널 실행을 겹침으로써(overlapping) 축출(eviction) 부하를 상당량 감소시켰다. 그리고 메모리 분리 시스템의 내고장성 (fault tolerance) 향상을 위해 TribuOS 는 메모리 노드의 상태를 백업 메모리 노드에 복제하는데, 빠른 축출 성능은 백업 메모리 노드로의 페이지 복제 시에 내고장성에 대한 성능 비용을 감소시키는데 기여한다. TribuOS 는 최신 메모리 분리 시스템인 Fastswap과 정량적으로 비교되었으며 Fastswap 대비 최대 4 배의 어플리케이션 성능 향상을 보인다. 또한 본 연구의 고장과 회복 실험에서는 TribuOS 가 백업 메모리 노드를 복구하고 연속적인 고장(cascading failure)을 견뎌 복구 시의 정지 시간이 무시할 정도로 적게 든다는 것을 보인다.