메모리 풀링은 흔히 서버와 용량 장치 사이에 큰 스위치 하나를 놓은 부채꼴 구조로 설명합니다. 그러나 이 그림은 실제 구매 비용을 숨깁니다. 모든 장치에 닿는 스위치에는 많은 포트와 SerDes, 리타이머, 전력, 패킷을 한 번 더 직렬화하는 경로가 필요합니다. 스위치를 없애면 이 비용은 줄지만, 포트가 4개인 메모리 장치 하나로 수십 대 서버를 직접 연결할 수는 없습니다. Octopus는 모든 서버가 모든 메모리에 닿아야 한다는 전제부터 다시 검토합니다.[1]

이 NSDI 논문의 주장은 물리 배치와 밀접합니다. 토폴로지가 서버 랙 3개 안에 들어가야 하고, 수동 구리 케이블은 1.5m를 넘지 않아야 하며, 서버 한 대가 쓸 수 있는 CXL 포트는 8개입니다. 연구진은 Microsoft Azure의 메모리 사용 트레이스, 여러 포트가 달린 CXL 장치의 실측값, 그래프 구성을 결합해 96대 서버용 포드를 설계합니다. 희소 연결이 공짜라는 주장이 아닙니다. 메모리 수요를 분산할 만큼 많은 장치에 닿으면서, 자주 통신하는 서버끼리는 공통 장치 하나를 공유하도록 연결을 선택할 수 있다는 결과입니다.

풀링과 통신이 요구하는 서로 다른 연결

메모리 풀링은 사용량이 높은 서버들이 서로 다른 메모리 풀링 장치(MPD)에 연결될 때 유리합니다. 여러 서버의 피크가 더 많은 장치에 나뉘므로 특정 MPD 하나를 모든 피크의 합에 맞춰 크게 구성하지 않아도 됩니다. 반면 지연이 짧은 통신은 두 서버가 같은 MPD를 공유할 때 유리합니다. 한 서버가 공유 장치의 버퍼에 쓰고 다른 서버가 읽으면 네트워크 스택이나 CXL 스위치를 통과하지 않아도 됩니다.

모든 서버 쌍이 MPD를 공유하는 구조는 통신에는 좋지만 포트 수 때문에 커질 수 없습니다. MPD당 포트 4개, 서버당 링크 8개라는 조건에서 모든 서버 쌍의 공통 장치를 보장하는 조합 설계는 서버 25대가 상한입니다. 일반적인 확장 그래프(expander graph)는 96대까지 메모리 수요를 잘 분산하지만, 임의의 서버 쌍이 같은 장치를 공유한다고 보장하지 않습니다. 공통 장치가 없는 서버는 여러 MPD를 거쳐 메시지를 전달해야 합니다. 논문에서 64바이트 RPC는 MPD 하나를 지날 때 1.2µs이지만 두 개를 지나면 3.8µs로 늘어나 랙 내부 RDMA와 비슷해집니다.

Octopus는 모든 서버 쌍에 같은 지연이 필요하지 않다고 판단합니다. 서버를 여러 섬(island)으로 나누고, 서버의 8개 포트 중 일부를 섬 전용 MPD에 연결해 섬 안의 모든 서버 쌍이 장치 하나를 공유하게 합니다. 남은 포트는 섬 바깥 MPD에 연결해 섬 사이의 메모리 수요를 분산합니다. 통신 지역성은 섬 안에 보존하고, 메모리 풀링은 포드 전체에서 유지하는 구조입니다.

Octopus 포드의 개념적 물리 배치입니다. 양쪽 랙에 서버를 두고 가운데 랙에 여러 포트가 달린 메모리 풀링 장치를 배치합니다. 재질 렌더링은 장비 규모와 케이블 배치를 설명하기 위한 것으로 제품 사진, 실제 플로어플랜, 제조 도면이 아닙니다. 장치 수와 케이블 조건은 코드로 합성한 표시입니다. 이 글을 위해 새로 만든 도판.

96대 서버 구성에 들어가는 조건

기본 구성은 서버 16대씩 섬 6개, 서버 96대, 포트 4개짜리 MPD 192개입니다. 서버 한 대는 CXL 포트 8개를 씁니다. MPD는 가운데 랙에, 서버는 양옆 랙에 둡니다. 논문의 배치 모델에서 알려진 최소 케이블 길이는 1.3m이며, 수동 구리 케이블의 1.5m 조건 안에 들어옵니다. 종이 위의 그래프가 광 CXL이나 능동 구리 케이블을 요구한다면 비용과 장애 모델이 달라지므로 이 수치가 중요합니다.

설계 절차는 섬 안에서 서버 쌍의 공통 장치를 보장하는 포트 수를 먼저 정하고, 남은 포트로 섬 사이 확장 그래프를 구성합니다. 공통 장치는 통신 경로를 짧게 만들고, 그래프 확장성은 사용량이 높은 서버 집합이 닿을 수 있는 서로 다른 MPD 수의 하한을 정합니다. 할당기는 새 가상머신을 연결된 MPD 중 사용량이 가장 낮은 장치에 배치하고, 필요하면 여러 장치에 메모리를 나눕니다. 풀링의 품질은 포드 평균 사용률이 아니라 MPD별 최대 사용량으로 결정됩니다.

이 구조는 모든 바이트에 접근할 수 있는 범용 패브릭과 다릅니다. 서버는 모든 MPD에 닿지 못합니다. 따라서 제어 계층은 연결 제약이 있는 배치 문제를 풀어야 합니다. 큰 메모리가 필요한 가상머신은 호스트가 접근할 수 있는 장치들 안에 들어가야 하고, 마이그레이션과 장애 복구도 같은 도달 가능성을 지켜야 합니다. Octopus는 스위치 비용을 줄이는 대신 배치 정책에 더 많은 판단을 요구합니다.

실물 장비로 확인한 범위

프로토타입은 서버 96대가 아니라 서버 3대와 MPD 3개로 구성됩니다. 여기서 장치 지연, 대역폭, 통신, 응용 성능 민감도를 측정하고 그 값을 대규모 시뮬레이션에 넣습니다. MPD의 load-to-use 지연은 267ns로 직접 연결 확장 장치의 233ns보다 깁니다. 링크 하나의 읽기 전용 대역폭은 24.7GiB/s, 쓰기 전용은 22.5GiB/s입니다. 두 서버가 동시에 접근하면 서버당 22.1GiB/s에서 포화하며, 읽기와 쓰기가 섞인 경우의 낮은 대역폭은 프로토타입 펌웨어 문제로 설명합니다.

섬 내부 64바이트 RPC의 중앙값은 1.2µs입니다. 측정한 CXL 스위치 경로는 2.4배 느리고, RDMA는 3.8µs로 3.2배 느립니다. 큰 메시지는 데이터 자체를 복사하는 대신 공유 메모리 포인터를 넘길 수 있습니다. 서버마다 32GiB 조각을 가진 3대 서버 ring all-gather는 2.9초에 끝나며 양방향 합산 22.1GiB/s를 냅니다. 이 값도 MPD 펌웨어에 제한됩니다. 이 평가는 작동 원리는 실증하지만 96대가 동시에 만드는 경합까지 측정하지는 않습니다.

단일 지연 수치보다 응용 민감도가 중요합니다. 웹, 키-값 저장소, 데이터베이스, 분석 작업부하 중 약 65%는 MPD 구성에서 성능 저하가 10% 미만입니다. 연구진은 지연에 민감해 10%를 넘는 작업을 풀 메모리에 배치하지 않습니다. 이 조건은 핵심입니다. 운영자가 허용하는 성능 저하 기준에 따라 로컬 DRAM에서 풀로 옮길 수 있는 용량이 달라지고, 경제성도 함께 달라집니다.[2][4]

전제가 붙은 비용 절감률

트레이스 기반 시뮬레이션은 Octopus, 스위치 기반 포드, 다른 MPD 그래프를 비교합니다. 96대 구성에서 Octopus는 풀링이 없는 경우보다 약 16%의 메모리 용량을 줄입니다. 케이블 길이 조건을 위반하는 더 큰 확장 그래프와 가까운 값입니다. 서버 수가 100대에 가까워지면 수요를 합쳐 얻는 피크 대비 평균의 이득이 이미 상당 부분 실현되어 절감률이 완만해집니다.

장치와 케이블 비용을 포함하면, 기준 서버에 CXL 확장 장치가 없을 때 총 서버 자본비용은 3.0% 줄어듭니다. 기존 서버가 이미 CXL 확장을 쓴다면 5.4% 줄어듭니다. 여러 포트가 달린 장치가 기존 확장 장치보다 조금만 비싸기 때문입니다. 반면 모델링한 스위치 구조는 두 조건 모두에서 비용을 늘리며, 기존 확장 장치가 있는 기준에서도 0.6% 증가합니다.

이 비율을 다른 데이터센터에 그대로 적용하면 안 됩니다. 서버 가격에서 DRAM이 차지하는 몫, 로컬 메모리 성능 기준, MPD와 케이블 가격, 장애 대비 예비 용량, 서버 수요의 상관관계가 결과의 부호를 바꿉니다. 작은 CXL 풀에 반대했던 기존 연구는 스위치와 남는 용량의 비용이 이득을 넘을 수 있다고 지적했습니다.[3] Octopus는 경제성 우려가 틀렸다고 말하는 대신 토폴로지와 규모를 바꿔 답합니다.

Octopus의 증거 범위를 나눈 도판입니다. 서버 3대 프로토타입은 섬 내부 RPC 1.2µs를 측정했고, 서버 96대 토폴로지와 자본비용 3–5.4% 절감은 서버당 포트 8개, MPD당 포트 4개, 케이블 1.5m 조건에서 트레이스로 모델링했습니다. 이 글을 위해 새로 만든 도판.

구조가 불리해지는 경우

첫째, 포드 전체에서 상대 서버가 무작위로 바뀌는 통신은 약점입니다. 활성 서버가 10%인 무작위 트래픽에서 Octopus는 확장 그래프보다 성능이 12% 낮습니다. 섬 내부 공통 장치를 위해 링크 일부를 예약했기 때문입니다. 통신 상대가 계속 바뀌는 작업을 섬 지역성이 안정적인 것처럼 배치해서는 안 됩니다.

둘째, 링크 장애는 대역폭뿐 아니라 접근 가능한 메모리도 줄입니다. 논문은 CXL 링크를 무작위로 제거하면 호스트가 닿는 MPD가 줄어 풀링 절감률이 낮아짐을 보여 줍니다. 실제 운영에는 예비 용량, 경로를 고려한 수용 제어, 성능이 저하된 섬의 용량이 소진되기 전에 데이터를 옮기는 복구 절차가 필요합니다.

셋째, 비용 모델은 현재의 저포트 MPD와 수동 구리를 전제로 합니다. 포트 8개 장치, 광 링크, 더 저렴한 스위치가 나오면 최적점이 바뀝니다. Octopus는 모든 CXL 세대에 고정된 정답이라기보다 물리 조건 아래에서 토폴로지를 선택하는 방법으로 보는 편이 정확합니다.[5]

도입 전에 확인할 시험

운영자는 세 계층을 나눠 시험해야 합니다. 하드웨어 계층에서는 실제 케이블 길이에서 링크 하나의 읽기, 쓰기, 혼합 대역폭과 꼬리 지연, 핫플러그, 오류 격리를 측정합니다. 토폴로지 계층에서는 운영 환경의 메모리 트레이스를 정확한 연결 그래프에 재생하고 링크 장애, 유지보수 중 장비 비우기, 수요 상관관계를 포함합니다. 서비스 계층에서는 통신이 많은 작업을 섬 안과 섬 사이에 각각 배치해 스케줄러가 차이를 알고 있는지 확인합니다.

따라서 구매 질문은 “호스트 몇 대를 연결할 수 있는가”에서 끝나지 않습니다. “어떤 호스트 쌍이 지연이 짧은 장치를 공유하는가, 사용량이 높은 임의의 서버 집합이 서로 다른 메모리 장치 몇 개에 닿는가, 둘 중 하나가 깨졌을 때 할당기는 무엇을 하는가”를 함께 물어야 합니다. 세 답이 계속 일치할 때만 희소 연결이 실제 절감으로 이어집니다.

출처와 저작권 안내

이 글은 Silicon & Systems가 작성한 편집 분석입니다. 논문의 주장과 측정값을 우리 표현으로 다시 서술했으며, 원문의 문장, 표, 도판을 복제하지 않았습니다. 본문 도판 두 장은 이 글을 위해 새로 만들었습니다. 원문과 발표 자료는 USENIX NSDI 2026에서 확인할 수 있습니다. 저작권은 저자들에게 있습니다. (c) 2026.