Case Study: Encryption/Decryption

Case Study: Encryption/Decryption

CPU 및 GPU를 사용한 암호화/복호화 워크로드

1. 암호화/복호화 (Encryption/Decryption):

암호화는 데이터를 안전한 형식으로 변환하는 과정이며, 복호화는 이를 원래 형식으로 되돌리는 과정입니다. 이 작업은 AES(Advanced Encryption Standard), RSA(Rivest-Shamir-Adleman), ECC(Elliptic-Curve Cryptography)와 같은 복잡한 알고리즘을 사용할 때 특히 계산 집약적입니다.

2. 암호화/복호화에 대한 CPU와 GPU의 비교:

  • CPU (중앙 처리 장치):
    • 적합성: CPU는 범용적으로 사용할 수 있으며, 일반적인 애플리케이션과 소규모 워크로드의 암호화/복호화 작업을 효율적으로 처리할 수 있습니다.
    • 강점: CPU는 복잡한 알고리즘을 순차적으로 실행하는 데 탁월하며, 고급 분기와 논리 연산을 잘 처리합니다. 대부분의 최신 CPU는 AES 암호화/복호화를 크게 가속화하는 Intel AES-NI와 같은 특수 명령 세트를 지원합니다.
    • 한계: CPU는 매우 높은 처리량 요구에 어려움을 겪을 수 있으며, 특히 병렬 처리 시에 한계가 있을 수 있습니다.
  • GPU (그래픽 처리 장치):
    • 적합성: GPU는 병렬 프로세서로, 대량의 데이터를 동시에 처리해야 하는 암호화/복호화 작업에 적합합니다.
    • 강점: GPU는 병렬로 여러 데이터 스트림을 처리할 수 있어 AES와 같은 블록 작업이 병렬화될 수 있는 알고리즘에서 암호화/복호화 속도를 크게 높일 수 있습니다. GPU는 특히 네트워크 통신 보호나 클라우드 환경에서 대규모 데이터 암호화와 같은 고처리량이 필요한 시나리오에서 자주 사용됩니다.
    • 한계: 모든 암호화 알고리즘이 병렬화에 적합하지는 않습니다. 또한 GPU는 전문적인 프로그래밍(CUDA와 같은 NVIDIA GPU용 프로그래밍)을 요구하며, CPU에 비해 인프라가 더 복잡할 수 있습니다.

3. 암호화/복호화 워크로드에 사용되는 일반적인 코드:

  • 언어: C/C++, Python, Go가 흔히 사용되며, 성능이 중요한 주요기관에서 사용되는 애플리케이션은 주로 C/C++로 작성되어 있습니다.
  • 라이브러리:
    • OpenSSL: C/C++에서 주로 사용되는 강력한 암호화 알고리즘을 제공하는 오픈 소스 라이브러리입니다.
    • Crypto++: 다양한 암호화 알고리즘을 제공하는 또 다른 C++ 라이브러리입니다.
    • PyCryptodome: 사용하기 쉬운 방식으로 암호화 알고리즘을 제공하는 Python 라이브러리입니다.
    • CUDA: GPU 기반 구현의 경우, NVIDIA GPU의 병렬 암호화/복호화 코드를 작성하는 데 주로 사용됩니다.

4. 최대 성능을 얻기 위한 인프라 구조:

  • CPU 기반 인프라:
    • 멀티코어 CPU: 여러 암호화/복호화 스레드를 동시에 처리할 수 있는 고성능 멀티코어 CPU를 배포합니다. AES-NI 지원이 중요한 역할을 합니다.
    • 메모리: 암호화/복호화는 메모리 집약적이므로 대용량 데이터를 처리할 수 있는 충분한 메모리 대역폭(모든 메모리 채널 사용)이 필요합니다.
    • 확장성: Kubernetes와 같은 기술을 사용하여 분산 처리를 위한 더 많은 CPU 노드를 추가하여 수평적으로 확장(Scale-Out)할 수 있으나, 잘 쓰이지는 않습니다.
  • GPU 기반 인프라:
    • GPU 클러스터: 각 GPU가 데이터를 병렬로 처리하는 GPU 클러스터를 배포합니다. NVIDIA의 DGX 시스템이나 클라우드 기반 GPU 인스턴스(AWS EC2 GPU)를 사용할 수 있습니다.
    • 고성능 네트워킹: GPU와 다른 시스템 구성 요소 간의 빠른 데이터 전송을 보장하기 위해 InfiniBand 또는 NVLink와 같은 고속 인터커넥트를 사용합니다.
    • 병렬 프레임워크: CUDA 또는 OpenCL과 같은 병렬 컴퓨팅 프레임워크를 활용하여 GPU를 위한 암호화 알고리즘을 구현하고 최적화합니다.
  • 하이브리드 접근: CPU와 GPU를 결합하여 CPU는 키 관리와 같은 작업을 처리하고, GPU는 대부분의 암호화/복호화 워크로드를 처리하도록 설계할 수 있습니다. 다만 이 경우, 해당 워크로드의 성격과 운용기관의 목표를 잘 이해하고 있는 개발팀 또는 성능최적화 전문가의 도움이 필요할 수 있습니다.

5. 최대 성능을 위한 예시 아키텍처:

최고 성능의 암호화/복호화 시스템은 다음과 같이 구성할 수 있습니다:

  • 컴퓨팅 노드:
    • 고성능 멀티코어 CPU(AMD/Intel)와 AES-NI 지원으로 암호화/복호화 작업을 순차적 또는 소규모 병렬 작업으로 처리합니다.
    • 대용량 데이터 세트나 배치 암호화 작업을 병렬로 처리하기 위한 전용 GPU(NVIDIA A100 등).
  • 스토리지:
    • 빠른 데이터 액세스와 처리를 위한 고속 NVMe SSD.
    • 일부 암호화 작업을 CPU/GPU에서 오프로드할 수 있는 암호화 기능을 갖춘 스토리지 솔루션.
    • 병렬처리 환경에서 널리 사용되며 안정성이 검증된 Lustre/Spectrum Scale 기반의 고성능 저장장치 추천
  • 네트워크:
    • 노드 간의 데이터 흐름을 처리하기 위한 고처리량, 저지연 네트워킹(10GbE, 25GbE 이상)
    • Encryption/Decryption 워크로드는 노드간 통합연계가 잘 사용되지 않으므로, 수백 Gbps 이상의 대역폭을 지닌 초고성능 네트워크(Infiniband, 100/200/400GbE) 등은 필요하지 않으며, 1/10/25Gbps 정도로 충분합니다.
  • 소프트웨어 스택:
    • CPU에서 OpenSSL과 GPU에서 CUDA 가속 라이브러리를 결합.
    • CPU 및 GPU 리소스에 따라 워크로드를 동적으로 관리하고 확장하는 Kubernetes와 같은 오케스트레이션 도구.

이와 같이 CPU와 GPU의 장점을 최대한 활용하고 적절한 라이브러리와 인프라를 선택하여 암호화/복호화 작업에 최상의 성능을 달성할 수 있습니다.

6. 성능테스트(Benchmark) 결과: NVIDIA vs. AMD GPU

가장 성능 및 생산성이 높은 형태의 인프라를 구성하기 위하여 가장 추천되는 사전 고려방식은 ‘성능테스트를 통한 워크로드 실측테스트 결과 검증’ 입니다.
Benchmark Test로 불려지는 이 방식은 목표 워크로드를 도입 대상 자원상에서 직접 수행해보고 그 결과치를 검증하여 가장 높은 성능 또는 주어진 예산 대비 최대 가성비를 보여주는 인프라 형태를 선택하여 구축 사업을 진행할 수 있는 가장 진보된 형태입니다.

Encryption/Decryption 워크로드는 매우 단순한 ‘word’ 단위의 password crack으로도 인식되는 매우 단순한 슈퍼컴퓨팅 워크로드이므로 간단히 최선의 선택지를 테스트를 통해 검증할 수 있으며, 이 결과는 대규모 본 프로젝트 완료 후 성능검수시에도 활용되는 좋은 자료가 됩니다.

  • NVIDIA 서버용 H100 PCIe는 모든 해시 모드에서 가장 높은 성능을 보여주며, 특히 MD5(Hash-Mode 0)에서 뛰어납니다.
  • NVIDIA 게임용 RTX4090도 특히 MD5와 SHA2-256 모드에서 강력한 성능을 보여주어, 높은 처리량이 필요한 작업에서 좋은 대안이 될 수 있습니다.
  • AMD 서버용 GPU MI210은 모든 해시 모드에서 일관되게 가장 낮은 성능을 보여주어, 고성능 암호화/복호화 작업에는 적합하지 않을 수 있습니다.
  • NVIDIA 서버용 A100 PCIe는 H100 PCIe보다 상당히 낮은 성능을 보이며, 두 NVIDIA GPU 간의 세대 차이를 잘 보여줍니다.
  • AMD 게임용 RX7900XTX는 중간 수준의 성능을 보이며, MI210보다는 낫지만 NVIDIA의 최상위 제품들에 비해 뒤처집니다.

결과적으로 제한된 예산으로 도입할 수 있는 최대 가성비의 Encryption/Decryption 용도의 GPU는 NVIDIA RTX4090 카드로 이야기할 수 있으며 다만, 이 카드의 경우는 일반 Retail 게임용 GPU이므로 몇 년에 걸쳐 운용되는 대규모 시스템의 경우 향후 장애파트를 확보할 수 없다는 점과 워크로드의 정합성 등에 대한 기술지원을 전혀 받을 수 없다는 부분은 반드시 고려되어야 합니다.

또한 테스트에 사용된 이 GPU 카드들은 대부분 250W 이상 전력을 사용하는 고비용 GPU이므로, 장비당 높은 직접도(2개 GPU 초과)가 요구되거나 대규모 연산 시스템으로 구성되는 경우 반드시 수냉식(Liquid Cooling/ 액침형 불가) 설비를 데이터센터에 갖추어야 합니다.

Derek Avatar