RDMA는 원격 서버의 CPU를 거치지 않고 메모리에 접근하는 기술로 알려져 있습니다. 다만 이 설명은 메모리 등록과 할당, 주소 교환이 끝난 뒤의 데이터 접근에만 해당합니다. 분리형 메모리 시스템은 어떤 4KB 페이지를 어느 컴퓨트 노드에 줄지 결정하고, 페이지가 반환되면 다시 회수하며, 동시에 들어온 요청이 할당기 상태를 망가뜨리지 않도록 해야 합니다. 기본 단방향 RDMA 동작에는 이러한 기능이 없습니다. 그래서 기존 시스템은 컴퓨트 노드마다 1GB 이상의 큰 메모리 영역을 미리 예약하는 방식을 주로 사용했습니다. 접근은 빠르지만, 예약한 영역 안의 빈 페이지를 다른 노드가 사용할 수 없습니다.

ODRP는 메모리 할당까지 RDMA 데이터 경로로 옮길 수 있는지 묻습니다[1]. 메모리 노드에 서비스 코어를 두지 않고, 프로그래머블 SmartNIC도 요구하지 않습니다. 컴퓨트 노드가 기본 RDMA 읽기·쓰기·원자 연산을 실행 순서가 정해진 작업 요청 체인으로 구성합니다. 메모리 노드의 RNIC는 이 체인을 실행해 페이지 할당, 주소 조회, 저장, 해제를 처리하고 CPU는 데이터 경로에 참여하지 않습니다.

이 논문의 의미는 네트워크를 로컬 DRAM처럼 만든 데 있지 않습니다. 페이지 폴트 지연도 사라지지 않습니다. 바뀌는 것은 원격 메모리 풀을 배분하는 단위입니다. 원격 CPU를 호출하지 않고도 4KB 단위로 용량을 나눌 수 있습니다. 여러 컴퓨트 노드의 메모리 수요가 시간에 따라 달라진다면, 사용하지 않는 용량을 다른 노드로 옮길 수 있어야 풀을 만든 효과가 생깁니다.

단방향 RDMA에 남아 있던 제어 경로

RDMA 메모리 영역은 비용 없이 만들 수 있는 임의의 주소 범위가 아닙니다. 운영체제가 물리 페이지를 고정하고, RNIC가 주소 변환과 접근 키를 기록하며, 애플리케이션이 생성된 메타데이터를 교환해야 합니다. 등록은 보호와 주소 변환 상태를 바꾸므로 제어 경로에 속합니다. 이를 스왑되는 4KB 페이지마다 반복하면 작은 데이터 전송이 페이지 고정, 등록, 조정 작업으로 확대됩니다.

기존 원격 페이징 시스템은 두 극단 가운데 하나를 선택했습니다. 정적 단방향 방식은 클라이언트마다 큰 영역을 예약해 메모리 노드 CPU를 쓰지 않습니다. 접근 경로는 짧지만 사용하지 않는 예약 공간이 늘어납니다. 동적 양방향 방식은 메모리 노드의 서비스가 작은 단위로 할당합니다. 용량 활용률은 높아지지만 요청이 원격 CPU 스케줄러를 거치며 제한된 코어를 두고 경쟁합니다. 4KB마다 메모리를 등록하는 방식은 세밀한 할당과 높은 제어 경로 비용을 동시에 떠안습니다. ODRP는 메모리 등록과 소유권 변경을 분리합니다. 큰 풀은 한 번 등록해 두고, 4KB 페이지의 소유권만 RNIC가 볼 수 있는 데이터 구조에서 바꿉니다.

원격 페이징의 설계 선택지입니다. 정적 단방향 RDMA는 메모리 노드 CPU를 쓰지 않지만 큰 예약 영역에 용량이 묶입니다. 양방향 할당과 페이지별 등록은 용량을 회수하는 대신 원격 CPU로 돌아갑니다. ODRP는 등록된 풀을 유지하면서 순서가 정해진 RNIC 작업 요청 체인으로 4KB 페이지의 소유권을 바꿉니다. 이 글을 위해 새로 만든 도판.

할당기는 메모리 노드의 일반 메모리에 놓입니다. 빈 페이지 목록, 클라이언트별 상태, 스왑 오프셋을 원격 주소에 연결하는 변환 항목으로 구성됩니다. 숨겨진 프로세서가 아니라 데이터 구조입니다. 컴퓨트 노드가 원자 연산과 실행 순서를 이용해 이를 읽고 갱신합니다. 여러 클라이언트가 동시에 페이지를 할당하거나 반환해도 상태가 일관되어야 한다는 점이 설계의 핵심입니다.

작은 프로그램으로 동작하는 작업 요청 체인

작업 요청 체인은 단순한 일괄 처리와 다릅니다. 앞선 연산의 결과를 뒤의 연산이 사용하도록 의존 관계를 구성합니다. 아직 주소가 없는 페이지를 저장할 때는 빈 페이지를 얻고, 조건부로 주소 매핑을 설치한 뒤, 데이터를 쓰고, 다른 요청이 경쟁에서 먼저 성공했다면 임시 상태를 복구합니다. 이미 매핑된 페이지는 주소를 알고 있으므로 더 짧은 경로를 사용합니다. 읽기와 무효화도 같은 원리로 조회와 반환 체인을 구성합니다.

RNIC가 제공하는 분기와 임시 상태는 제한적입니다. ODRP는 클라이언트 보조 원칙으로 이 한계를 다룹니다. RNIC가 자주 발생하는 경로를 처리하고, 드문 경쟁이나 캐시 고갈로 추가 판단이 필요할 때만 컴퓨트 노드에 완료 상태를 돌려 줍니다. 컴퓨트 노드는 상태에 맞는 후속 체인을 제출합니다. 메모리 노드는 계속 수동적인 상태로 남습니다. 작업 요청 체인을 범용 프로그램처럼 취급한 것이 아닙니다. 운영체제 스왑은 페이지 크기가 4KB로 고정되고, 클라이언트가 스왑 오프셋을 알고 있으며, 연산을 몇 가지 경우로 나눌 수 있기 때문에 이 구조가 가능합니다.

전역 잠금 대신 RDMA 실행 순서도 활용합니다. 조건부 원자 연산이 주소 매핑의 전환을 보호하고, 소유권이 정해진 뒤에만 데이터 쓰기가 보이도록 만듭니다. 임시 주소와 작은 클라이언트 캐시는 메타데이터를 반복해서 읽는 횟수를 줄입니다. 이 논문에서 말하는 프로그래머블 RDMA는 RNIC에 범용 코어를 추가한다는 뜻이 아닙니다. 상용 RNIC가 이미 지원하는 동작의 순서와 데이터 의존성을 이용해 제한된 상태 기계를 만드는 방식입니다.

할당 단위의 비용을 분리한 평가

평가 시스템은 InfiniBand 스위치로 연결한 메모리 노드 한 대와 컴퓨트 노드 최대 여덟 대입니다. 각 노드는 12코어 Intel Xeon E5-2650을 사용했습니다. 연구진은 로컬 메모리 비율을 바꾸면서 스왑 부하가 큰 마이크로벤치마크와 애플리케이션을 실행했습니다. 비교의 목적은 ODRP가 로컬 메모리보다 빠른지 확인하는 데 있지 않습니다. 네 가지 원격 메모리 할당 정책을 나란히 두고 할당 단위를 작게 만들 때 어디에서 비용이 생기는지 분리합니다.

정적 단방향 기준은 큰 영역을 미리 할당하며, 가장 빠르지만 유연성이 낮은 경로입니다. 동적 단방향 기준은 메모리 노드 CPU를 통해 큰 단위를 필요할 때 할당합니다. 양방향 기준은 원격 처리를 거쳐 4KB 단위로 관리합니다. 동적 4KB 등록 방식은 페이지마다 RDMA 제어 경로를 사용합니다. ODRP만 등록된 큰 풀, 페이지 단위 소유권, CPU를 쓰지 않는 메모리 노드를 함께 구성합니다.

결과는 두 기준으로 읽어야 합니다. 먼저 ODRP와 양방향 방식, 동적 4KB 등록은 요청한 페이지 수만큼 정확히 할당하므로 원격 메모리 활용률 100%에 도달했습니다. ODRP는 정적 단방향 예약보다 1.72~12× 높은 활용률을 보였습니다. 큰 단위로 동적 할당하는 방식과 비교해도 최대 1.82× 높았습니다.

세밀한 할당을 선택한 세 방식의 운영 비용은 달랐습니다. 양방향 할당은 스왑 요청이 잦은 작업에서 메모리 노드 CPU 사용률이 86% 또는 99%까지 올라갔습니다. 4KB마다 등록하는 방식은 할당한 코어 하나를 넘는 처리 능력이 필요했고 일부 조건은 완료되지 않았습니다. ODRP는 메타데이터 연산을 RNIC에 남겨 메모리 노드 CPU 사용을 거의 0으로 유지했습니다. 정적 단방향 기준 대비 애플리케이션 성능 비용은 0.8~14.6%였습니다. 컴퓨트 노드가 여덟 대일 때 스왑 처리량은 정적 기준의 87.3%였고, 애플리케이션 오버헤드는 14.6%였습니다.

ODRP 평가의 두 기준입니다. 페이지 단위 ODRP는 원격 메모리 활용률 100%와 사실상 0%인 메모리 노드 CPU 사용을 함께 달성합니다. 정적 단방향 RDMA는 성능 기준이지만 용량을 묶어 두고, 양방향 처리와 페이지별 등록은 원격 CPU를 사용합니다. ODRP의 애플리케이션 오버헤드는 0.8~14.6%, 정적 할당 대비 활용률 이점은 1.72~12×입니다. 이 글을 위해 새로 만든 도판.

두 수치를 하나로 합치면 설계의 선택이 가려집니다. 1.72~12×는 클라이언트가 예약한 용량을 얼마나 고르게 사용하는지에 따라 달라지는 할당 효율입니다. 0.8~14.6%는 용량을 미리 확보해 속도를 얻는 정적 기준과 비교한 성능 비용입니다. ODRP는 추가 RNIC 연산과 네트워크 왕복을 사용하고, 그 대가로 사용하지 않는 페이지를 풀에 돌려 줍니다.

CPU 대신 늘어나는 작업 요청과 메타데이터

메모리 노드 CPU를 제거해도 작업 자체가 사라지지는 않습니다. 더 긴 작업 요청 체인, 추가 메타데이터 트래픽, 클라이언트의 예외 처리로 이동합니다. 작은 스왑 연산은 체인 안의 순차 의존성과 왕복 횟수에 민감합니다. 컴퓨트 노드가 늘면 할당기 메타데이터와 RNIC 작업 처리 능력이 공유 자원이 됩니다. 여덟 노드까지 정적 경로에 가까운 결과를 보였지만, 수백 클라이언트나 여러 메모리 노드에서 같은 특성이 유지되는지는 별도 검증이 필요합니다.

장애 처리 방식도 달라집니다. CPU가 있는 메모리 서비스는 임대 시간, 가비지 컬렉션, 복구 프로토콜을 로컬에서 실행할 수 있습니다. 수동적인 메모리 풀은 컴퓨트 노드 장애 뒤 페이지를 회수할 외부 관리 계층이 필요합니다. ODRP는 정상 동작 중의 할당과 접근에 집중합니다. 실제 서비스에는 인증, 격리, 텔레메트리, 지속적인 소유권 복구가 추가되어야 합니다. 등록 메모리의 접근 키 범위가 잘못되어 있다면 올바른 할당기만으로 침해된 클라이언트를 막을 수도 없습니다.

평가에는 비교적 오래된 CPU와 InfiniBand RNIC가 사용됐습니다. 최신 링크는 대역폭을 높이지만 할당 체인의 순차 의존성을 없애지는 않습니다. 반대로 원자 연산 처리량이 높고 작업 큐가 깊은 RNIC는 비용을 줄일 수 있습니다. 따라서 이 논문에서 가져갈 수 있는 결과는 특정 지연 숫자보다 구조에 가깝습니다. 메모리 등록은 큰 단위로 유지하고, 소유권은 작은 단위로 바꾸며, 반복되는 상태 전환은 데이터 경로 가까이에서 실행합니다.

대역폭보다 먼저 확인할 메모리 활용률

원격 메모리 시스템은 링크 지연과 최대 읽기 대역폭으로 비교되는 경우가 많습니다. ODRP는 이 비교만으로 부족한 이유를 보여 줍니다. 원격 읽기가 빨라도 용량이 먼저 할당되어야 사용할 수 있습니다. 서버마다 큰 영역을 예약하면 링크가 바쁜 동안에도 사용하지 않는 메모리 비용을 운영자가 부담합니다. 4KB 결정을 매번 메모리 노드 CPU에 맡기면 풀에 별도의 컴퓨트 병목이 생깁니다.

운영자가 확인해야 할 분모는 실제 수요 분포에서 메모리 노드 CPU와 RNIC 하나가 관리하는 유효 할당 바이트입니다. 수요 변화가 크고, 메모리 노드를 CPU가 적은 구조로 만들며, 다소 느린 페이징으로 더 높은 풀 활용률을 얻을 수 있다면 ODRP가 유리합니다. 클라이언트별 수요가 안정적이고 원격 용량이 이미 충분히 사용되거나, 애플리케이션이 작업 요청 체인의 추가 왕복을 감당하지 못한다면 정적 단방향 할당이 더 나은 선택일 수 있습니다.

이 연구는 RDMA 시스템을 설계하는 일반적인 방법도 제시합니다. 예측 가능한 경우로 나눌 수 있는 좁은 상태 전환을 찾고, 자주 실행되는 경로를 기본 동작과 순서 보장으로 구성하며, 드문 판단만 클라이언트에 남깁니다. 임의의 원격 서비스를 구현하는 방법은 아니지만, 호출자가 이미 의미를 제한한 데이터 구조에서는 CPU를 데이터 경로에서 뺄 수 있습니다. ODRP의 결과는 범용 프로그래머블 네트워크가 아니라 운영체제가 관리하는 것과 같은 4KB 단위로 원격 메모리를 공유하는 실용적인 경로입니다.

출처와 저작권 안내

이 글은 Silicon & Systems가 작성한 편집 분석입니다. 원문의 메커니즘, 측정 결과, 적용 한계를 우리 표현으로 다시 썼습니다. 프로시딩의 문장, 표, 도판은 재수록하지 않았으며 이 페이지의 도판은 모두 이 글을 위해 새로 만들었습니다. 원문은 USENIX NSDI 2025 페이지에서 확인할 수 있습니다. 저작권은 저자에게 있습니다. 2025.