Hardware-assisted Load Balancing for Energy-efficient SNIC-Host Cooperative Computing


University of Illinois Urbana-Champaign (UIUC) 김남승 교수님

개요

Smart NIC은 단순히 사용한다고 전력효율이 좋아지는 장치가 아니다. 제대로 Load balancer를 통해서 Host CPU와 Task들을 적절히 분배하여야만, 제대로 사용할 수 있다.

본문 1

데이터 센터의 네트워크 속도는 지속적으로 빨라지고 있으며, 그에 따라서 2024년 시점으로 Saturate되고 있는 CPU의 성능으로는 Datacenter tax가 점점 증가하는 추세이다. 이를 극복하기 위해서 Smart NIC이 등장하였다. 그러나 Smart NIC이 가져오는 성능 향상은 크지 않다. Smart NIC에는 8개의 ARM v8 A72 CPU가 들어가며, 대략 1MB의 Level-1 캐쉬 크기를 가지고 16GB의 램을 가지고 있다. Fixed accelerator가 달려있으며, 이를 사용하지 않기 위해서는 FPGA나 아니면 ARM코어를 사용해야 한다.

Intel도 Intel QAT라는 CPU가속을 지원하는데, Smart NIC이 제공하는 대부분의 기능을 제공한다. 데이터 센터에서 사용하는 여러 벤치마크들이 있는데, Hareware-accelerated function (SNIC에서 지원하는 가속기능), 그리고 Software-only function (SNIC에서 하드웨어 가속을 지원하지 않는 기능)으로 나누어서 Power consumption을 확인해 보면, SNIC에 대한 전력 효율비를 구할 수 있다.

Smart NIC이 진짜 SLO (Latency Requirement)를 맞출 수 있는 것인가?
결과를 보면, Latency와 Throughput모두 대부분의 경우 Intel QAT를 사용한 경우와 비교하여서 하드웨어 가속 성능이 떨어지는 것을 볼 수 있다. 또한 소프트웨어 기능또한 Xeon CPU와의 성능 차이로 인하여서, ARM을 사용하는 Smart NIC의 성능이 떨어지는 것을 확인할 수 있었다.
Smart NIC이 진짜 Power efficient한가?
전체 파워에서 Smart NIC이 차지하는 정도가 작기 때문에, 아무리 Smart NIC에 Performance를 Offloading하더라도, Smart NIC을 사용하게 되면 성능이 느려지기 때문에 Intel CPU만 사용하는 경우가 대략 72%전력을 덜 사용하였다. 결국 성능이 좋을 수록 전력비가 좋다라는 결과가 나왔다.
그렇다면 기존 시스템의 논문들의 결과는?
논문들이 Smart NIC이 좋다는 인상을 주기 위해서, 몇몇 논문들에서는 교묘하게 결과를 Represent한 경우도 있었다. 몇몇 논문들은 비교군이 잘못된 경우도 있었다.
그렇다면 Smart NIC을 사용할 필요가 없는 것인가?
Throughput이 느린 경우에는 어느정도 Smart NIC을 사용하는 것이 쓸만하다는 결과를 얻을 수 있었다. 이 시점에서는 성능 차이가 별로 안나기 때문에 효율적으로 사용할 수 있다는 결론이 나온다. 따라서 Load balancing을 통해서 SNIC을 효율적으로 사용하는 것이 중요하다는 결론이 나왔다. Load balancing은 특정 임계치를 넘으면 점차 Host CPU가 처리하는 양을 증가하는 도록 구현하였다.
Load balancer의 구현
소프트웨어적으로 하면 높은 처리 속도에서 ARM코어에 많은 부하가 걸리기 때문에, Hardware기반으로 Loadbalancer를 구현하였다.

본문 2

CXL은 하드웨어의 캐쉬를 호스트와 동기화 하여서, 가속 시스템에서 Idle하게 사용될 수 있는 장치이다. CXL을 실험해 보고 싶으면 NUMA를 사용해서 실험해보면된다. CXL.mem은 Numa노드에서 CPU만 Disable하면 시스템에서는 거의 동일하게 보이며, CXL.cache와 같은 경우에는 그 노드에 NIC을 추가하면 시스템적으로는 거의 동일하게 보인다.

사담

  1. 좋은 연구를 하기 위해서는 직접 해보는 것이 중요하다. 예를 들어서 서버연구를 하면, 직접 서버 하드웨어를 하나하나 구해서 직접 조립해보는 과정에서 얻을 수있는 지혜가 있다.
  2. DRAM도 생각보다 서버하나를 구축하기 위해서 정말 많은 비용이 든다.
  3. 지도 교수님이 이해를 한번에 못하면, 리뷰어들도 이해 못한다. 아이디어가 심플하면 사람들이 이해하기 좋다. 일부로 아이디어를 복잡하게 만들 필요가 없다.
  4. 논문 쓰는 것은 바둑처럼 상대의 수를 예측해야 한다. 과연 리뷰어가 어떻게 비평을 가할 것인가를 항상 생각하면서 작성해야 한다.
  5. Smart NIC의 성능을 높이지 못하는 이유는 가격때문이다. Smart NIC을 사용하는 이유는 가격을 낮추기 위해서 사용하는 것이다.
  6. 기술적으로 잘하는 사람은 많다. 성공하는 사람은 다른 사람들의 Need를 파악하고 말을 잘해서 설득을 잘하는 사람이다. 미국 중역들을 보면, 80%는 phD가 있었고, 100% 말을 정말 잘하더라. 다른 사람을 설득하는 연습을 해봐라.
  7. ARM이 왜 서버에서 안쓰는가? 메모리 모듈 하나당 15W정도 먹는다. 8개만 해도 120W인데, 이것저것 더하면 Idle power consumption만 200W에 육박한다. ARM을 사용한다고 해도 전력이 월등히 좋아지지 않는다. 특히 기존 x86으로 작성된 프로그램을 ARM에서 돌릴 수 없기 때문에, ARM서버 시장이 생각보다 큰 영향을 미치지 못하는 이유가 여기에 있는 것이다.
  8. RISC랑 CISC가 전력적으로 유리하고 불리하다? 아니다. 설계가 중요한게 아니라 Design point가 중요하다. 결국 RISC로 CISC와 같은 성능을 내기 위해서 설계를 하다보면 결국 전기를 그만큼 사용하게 된다.
  9. 스타트업이 하는 기술이 잘되는지 안되는지 확인하는 법. 납득할 정도로 팔아봐라. 계속 출시 연기 된다? -> 잘 안되고 있는 것이다.
  10. 연구할때 너무 유행을 쫒지 말아라.