컴포저블 인프라는 PCIe를 한 서버 밖으로 확장해 프로세서가 원격 GPU, 스토리지, 가속기를 로컬 장치처럼 연결하도록 만듭니다. 비투명 브리지(NTB)는 서로 다른 PCIe 도메인을 잇고 외부 스위치를 통해 트랜잭션을 변환합니다. 프로그래밍 방식은 익숙하지만 물리 경로에는 어댑터, 케이블, 스위치 포트, 독립된 크레딧 도메인이 추가됩니다.

rPCIeBench는 로컬 PCIe에 대한 직관만으로 이 경로를 설명할 수 없어서 만들어졌습니다[1]. FPGA 트래픽 생성, 트랜잭션 단위 추적, 재구성 가능한 토폴로지를 결합합니다. 호스트-장치, 장치-호스트, 장치 간, MMIO를 측정하고 트랜잭션 크기, 미완료 요청 수, 방향, 공유 링크를 바꿉니다. 대역폭 목록에서 끝내지 않고 스케줄러가 사용할 수 있는 규칙을 추출합니다.

첫 결과는 분명한 지연 비용입니다. 서버 내부의 단방향 트랜잭션은 379.0ns, 라우터블 패브릭 경로는 868.6ns입니다. 489.6ns 또는 129.2%가 늘었습니다. 호스트 어댑터, 외부 스위치, 대상 어댑터가 각각 약 105ns를 사용하고 나머지는 전파와 다른 단계에서 발생합니다. 소프트웨어가 PCIe 방식으로 접근한다고 원격 장치가 물리적으로 로컬이 되는 것은 아닙니다.

추가 단계를 모두 드러내는 작은 트랜잭션

고정 경로 비용은 MMIO와 작은 전송에서 가장 잘 보입니다. 평가 시스템의 로컬 64바이트 MMIO 읽기는 766.0ns입니다. 원격 경로에는 NTB 체인과 완료 응답 왕복이 추가됩니다. 1KB 읽기는 64바이트 트랜잭션 16개를 만들며 로컬 11.9마이크로초, 원격 27.8마이크로초가 걸립니다. 장치 레지스터를 폴링하거나 작은 명령을 많이 보내는 소프트웨어는 패브릭 비용을 반복해서 지불합니다.

큰 DMA 전송은 설정과 프로토콜 비용을 상쇄합니다. 64KB에서는 로컬과 원격 호스트-장치 전송의 상대 차이가 크게 줄어듭니다. 논문이 일괄 처리를 권하는 이유입니다. 단순한 소프트웨어 최적화가 아니라 분리형 장치가 지연 병목인지 대역폭 병목인지 바꾸는 선택입니다.

NUMA 배치도 중요합니다. 외부 패브릭에 들어가기 전에 잘못된 소켓에서 루트 컴플렉스에 접근하면 호스트 인터커넥트를 거칩니다. 평가한 전송에서 NUMA는 로컬 호스트-장치와 장치-호스트에 각각 약 10.7%와 7.0%를 더했고, 원격 경로에는 7.5%와 11.2%를 추가했습니다. 자원 관리자는 라우터블 PCIe 어댑터를 소유한 NUMA 노드 가까이에 CPU 스레드를 배치해야 합니다.

라우터블 PCIe의 측정 경로입니다. 로컬 단방향 PCIe는 379.0ns이고, 호스트 어댑터·외부 스위치·대상 어댑터를 건너면 868.6ns로 늘어납니다. 작은 MMIO는 모든 홉을 반복해서 부담하지만 64KB DMA는 고정 경로 비용을 상쇄합니다. NUMA 배치는 별도의 호스트 측 변수로 남습니다. 이 글을 위해 새로 만든 도판.

요청 크기를 스케줄링 가중치로 만드는 크레딧

PCIe는 홉 단위 크레딧 흐름 제어를 사용합니다. 다음 수신 측이 해당 패킷 종류를 받을 버퍼 용량을 알릴 때만 송신자가 트랜잭션을 보낼 수 있습니다. 여러 흐름이 링크를 공유하면 각 흐름이 제시할 수 있는 미완료 데이터 양이 점유율에 영향을 줍니다. rPCIeBench는 미완료 바이트 비율을 가중치로 갖는 근사 최대·최소 공정 분할을 관찰했습니다.

호스트-장치 평가에서 4KB 흐름과 128바이트 흐름이 경쟁하면 각각 9.5GB/s와 0.39GB/s를 얻어 비율이 32.8이 됩니다. 4KB 흐름 두 개는 각각 약 5.5GB/s를 유지했습니다. 같은 동작은 로컬과 라우터블 경로, 장치-호스트와 장치 간 전송에서도 나타났습니다. 트랜잭션 크기와 미완료 요청 깊이가 다르다면 활성 PCIe 흐름을 같은 가중치로 볼 수 없습니다.

패브릭은 병목 상태도 빠르게 종단 간에 반영합니다. 하류 에지가 한 흐름을 제한하면 상류 속도도 제약에 맞춰집니다. 연구진은 이를 에지 용량으로 표현하고 흐름 속도가 수렴할 때까지 제약을 반복해서 완화하는 모델을 만들었습니다. 토폴로지, 방향, 트랜잭션 특성만으로 모든 패킷을 재생하지 않고 전송 성능을 추정합니다.

이 모델은 배치에 활용할 수 있습니다. 가속기 두 개가 과도하게 공유된 외부 포트를 사용하면 소프트웨어 큐를 바꾸는 것보다 하나를 독립된 분기로 옮기는 편이 효과적입니다. 실제 할당 전에 선택을 비교할 수 있지만 모델은 측정한 하드웨어에 맞춰 보정되어 있습니다.

방향별 링크가 만드는 독립 경로

PCIe는 송신과 수신 방향을 분리합니다. 같은 물리 연결을 반대 방향으로 지나는 두 흐름은 서로 다른 링크 용량을 사용할 수 있습니다. 평가에서는 처리량 흐름이 한 방향을 포화해도 반대 방향의 지연 민감 흐름이 거의 변하지 않았습니다. 원격 장치-호스트 지연은 약 2.2~2.3마이크로초, 외부 스위치를 건너는 장치 간 지연은 약 3.0~3.1마이크로초로 유지됐습니다.

스위치의 다른 분기에서도 같은 독립성이 나타날 수 있습니다. 방향이 있는 에지를 공유하지 않는 흐름은 그림상 가까워 보여도 간섭이 적습니다. 반대로 끝점이 달라도 숨겨진 어댑터 포트 하나를 공유하면 경합합니다. 토폴로지는 스위치 뒤의 장치 수가 아니라 방향별 용량 에지로 모델링해야 합니다.

라우터블 PCIe의 세 스케줄링 규칙입니다. 공유하는 방향별 에지는 미완료 바이트에 가까운 비율로 대역폭을 나누고, 하류 병목은 빠르게 종단 간 흐름을 제한하며, 반대 방향 또는 독립된 에지는 간섭이 적습니다. 이 규칙으로 배치에 사용할 반복형 에지 제약 모델을 구성합니다. 이 글을 위해 새로 만든 도판.

최대 대역폭에 가까워지면 크레딧이 소진되고 트랜잭션이 큐에서 기다려 지연이 빠르게 늘어납니다. 홉이 많은 경로에서는 꼬리 지연이 평균보다 더 커집니다. 네트워크와 마찬가지로 지연 민감 서비스에는 최대 처리량 지점이 최적 동작점이 아닙니다. 입장 제어가 측정한 링크 최대값 아래에 여유를 남겨야 합니다.

하드웨어별로 다시 측정할 값

평가 시스템은 특정 세대의 어댑터, FPGA 끝점, 외부 스위치를 사용합니다. NTB는 구현마다 변환 파이프라인, 버퍼, 케이블 인터페이스, 펌웨어가 다릅니다. PCIe Gen5와 Gen6는 직렬화와 인코딩을 바꾸고 CXL은 프로토콜 종류와 일관성 동작을 추가합니다. 489.6ns를 모든 라우터블 PCIe의 고정값으로 사용할 수 없습니다.

구조적 결과는 더 넓게 적용할 수 있습니다. 도메인이 추가되면 고정 처리 단계가 늘고, 크레딧이 소진되면 큐 깊이와 꼬리 지연이 연결되며, 미완료 바이트가 공유 비율에 영향을 주고, 방향이 경합을 결정합니다. 새로운 플랫폼에서는 벤치마크를 다시 실행해 에지 용량을 맞춰야 합니다. 오픈소스 도구의 가치는 가정을 측정 가능한 항목으로 바꾼 데 있습니다.

성능 실험은 정확성과 장애를 대부분 다루지 않습니다. NTB 패브릭에는 장치 탐색, 주소 창 관리, 접근 격리, 리셋 범위, 원격 섀시가 사라졌을 때의 복구도 필요합니다. 드라이버에는 로컬처럼 보이는 GPU와 SSD가 네트워크와 비슷한 원인으로 장애를 낼 수 있습니다. 소프트웨어는 장치 리셋과 패브릭 경로 단절을 구분하고 한 테넌트가 다른 테넌트의 BAR 공간을 매핑하지 못하게 해야 합니다.

모델은 안정된 공유 상태를 예측하며 임의의 버스트를 모두 표현하지 않습니다. 실제 가속기는 단계별 트래픽을 만들고 스위치 펌웨어에는 공개되지 않은 중재 규칙이 있을 수 있습니다. 하나의 대형 DMA 벤치마크에 의존하지 말고 운영 명령 크기 분포, 동시성, 장애 상태를 포함해 검증해야 합니다.

장치와 함께 할당할 방향별 경로

이 논문은 컴포저블 장치의 스케줄링 단위를 바꿉니다. 원격 GPU 하나만 할당해서는 부족합니다. 호스트 어댑터, 방향별 스위치 에지, 대상 어댑터, 지연 예산을 함께 할당해야 합니다. 작업을 실행할 CPU의 루트 컴플렉스와 NUMA 노드도 알아야 합니다. 두 할당의 방향별 경로가 겹치지 않거나 크레딧과 대역폭 여유가 충분할 때 함께 배치할 수 있습니다.

지연 민감 명령에는 패브릭 단계를 줄이고 장치가 허용하는 범위에서 MMIO를 묶으며 포화 전에 여유를 예약해야 합니다. 스트리밍 전송에서는 1마이크로초보다 작은 고정 비용이 중요하지 않을 수 있고, 원격 풀로 활용률을 높이는 편이 유리합니다. 판단 기준은 섀시에 적힌 PCIe 세대가 아니라 트랜잭션 크기와 동기화 빈도입니다.

라우터블 PCIe는 PCIe 트랜잭션을 운반하는 패브릭으로 이해하는 편이 정확합니다. 장치 프로그래밍 모델은 유지하지만 로컬 물리 특성까지 유지하지는 않습니다. rPCIeBench는 완전한 경로를 추적하고, 경합을 방향별 에지에 표현하며, 장치를 도달 경로와 함께 스케줄링하는 측정 계약을 제시합니다.

출처와 저작권 안내

이 글은 Silicon & Systems가 작성한 편집 분석입니다. 원문의 측정값과 모델을 우리 표현으로 다시 썼습니다. 원문의 문장, 표, 도판은 재수록하지 않았고 이 페이지의 도판은 모두 새로 만들었습니다. 논문과 연구 도구는 USENIX NSDI 2024 페이지에서 확인할 수 있습니다. 저작권은 저자에게 있습니다. 2024.