Linux Scatter-Gather(SG)란 무엇이며 NIC Offload 성능 최적화 방법

Linux 서버에서 대용량 데이터를 전송할 때 CPU는 여러 개의 메모리 버퍼를 하나의 연속된 버퍼로 복사한 뒤 네트워크 카드(NIC)에 전달하는 작업을 수행합니다. 이러한 메모리 복사 작업은 CPU 사용률을 높이고 네트워크 성능을 저하시킬 수 있습니다. 이를 해결하기 위해 대부분의 최신 NIC는 Scatter-Gather(SG) 기능을 제공합니다. SG는 여러 개의 메모리 버퍼를 하나로 복사하지 않고도 NIC가 직접 읽어 전송할 수 … 더 읽기

Linux Checksum Offload란 무엇이며 RX/TX Checksum 설정 및 성능 최적화 방법

Linux 서버에서 대량의 네트워크 트래픽을 처리할 때 CPU는 TCP, UDP, IP 패킷마다 Checksum 값을 계산하고 검증해야 합니다. 트래픽이 많아질수록 이러한 계산 작업은 CPU 사용률을 높이는 원인이 됩니다. 이를 해결하기 위해 대부분의 최신 네트워크 카드(NIC)는 Checksum Offload 기능을 제공합니다. Checksum Offload는 CPU 대신 NIC가 Checksum 계산과 검증을 수행하여 CPU 부하를 줄이고 네트워크 성능을 향상시키는 기술입니다. 이번 … 더 읽기

Linux GSO(Generic Segmentation Offload)란 무엇이며 TSO와 차이점 및 설정 방법

Linux 서버에서 대용량 데이터를 전송할 때 CPU는 TCP 세그먼트를 생성하는 과정에서 많은 자원을 사용합니다. 최신 서버용 네트워크 카드(NIC)는 이러한 작업을 대신 수행하는 TSO(TCP Segmentation Offload)를 지원하지만, 모든 네트워크 카드가 TSO를 지원하는 것은 아닙니다. 이러한 환경에서도 CPU 부담을 줄이기 위해 Linux 커널은 GSO(Generic Segmentation Offload) 기능을 제공합니다. GSO는 TSO와 비슷한 역할을 하지만, 하드웨어가 아닌 Linux 커널에서 … 더 읽기

Linux TSO(TCP Segmentation Offload)란 무엇이며 설정 및 성능 최적화 방법

고성능 Linux 서버에서는 대용량 데이터를 전송할 때 CPU가 TCP 세그먼트를 일일이 생성하면 많은 시스템 자원이 소모됩니다. 예를 들어 64KB 데이터를 전송하려면 MTU가 1500바이트인 환경에서는 수십 개의 TCP 패킷으로 분할해야 하며, 이 작업을 CPU가 수행하면 성능 저하가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 사용하는 기술이 TSO(TCP Segmentation Offload) 입니다. TSO는 TCP 세그먼트 분할 작업을 CPU … 더 읽기

Linux LRO(Large Receive Offload)란 무엇이며 GRO와 차이점 및 설정 방법

고성능 Linux 서버에서는 초당 수많은 네트워크 패킷을 처리해야 합니다. 패킷 하나하나를 CPU가 모두 처리하면 인터럽트와 TCP/IP 스택 처리 비용이 증가하여 시스템 성능이 저하될 수 있습니다. 이러한 문제를 해결하기 위해 네트워크 카드(NIC)와 Linux 커널에서는 다양한 Offload 기능을 제공합니다. 그중 LRO(Large Receive Offload) 는 네트워크 카드 또는 드라이버가 여러 개의 수신 패킷을 하나의 큰 패킷으로 합쳐 CPU의 … 더 읽기

Linux GRO(Generic Receive Offload)란 무엇이며 설정 및 성능 최적화 방법

Linux 서버에서 초당 수백만 개의 네트워크 패킷이 유입되는 환경에서는 CPU가 각 패킷을 개별적으로 처리해야 하므로 상당한 부하가 발생합니다. 특히 웹 서버, API 서버, 데이터베이스 서버처럼 네트워크 트래픽이 많은 시스템에서는 작은 패킷이 대량으로 들어오면서 CPU 사용률이 급격히 증가할 수 있습니다. 이러한 문제를 줄이기 위해 Linux에서는 GRO(Generic Receive Offload) 기능을 제공합니다. GRO는 여러 개의 작은 수신 패킷을 … 더 읽기

Linux NAPI(New API)란 무엇이며 네트워크 성능 최적화 방법

Linux 서버에서 초당 수십만~수백만 개의 패킷을 처리하는 환경에서는 인터럽트(Interrupt)가 과도하게 발생하여 CPU 성능이 급격히 저하될 수 있습니다. 이러한 현상을 Interrupt Storm이라고 하며, 고성능 네트워크 환경에서 자주 발생하는 문제입니다. 이를 해결하기 위해 Linux 커널은 NAPI(New API) 라는 네트워크 처리 방식을 제공합니다. NAPI는 인터럽트 기반 처리와 Polling 방식을 결합하여 CPU 부하를 줄이고 네트워크 처리량을 향상시키는 핵심 기술입니다. … 더 읽기

Linux RSS(Receive Side Scaling)란 무엇이며 설정 및 성능 최적화 방법

Linux 서버에서 10GbE, 25GbE, 40GbE 이상의 고속 네트워크를 운영하다 보면 하나의 CPU 코어만 과부하가 발생하여 전체 네트워크 성능이 제한되는 경우가 있습니다. 네트워크 카드가 수신한 모든 패킷을 하나의 CPU에서 처리하면 멀티코어 서버의 성능을 제대로 활용할 수 없습니다. 이러한 문제를 해결하기 위해 대부분의 서버용 네트워크 카드에서는 RSS(Receive Side Scaling) 기능을 제공합니다. RSS는 하드웨어 수준에서 수신 패킷을 여러 … 더 읽기

Linux XPS(Transmit Packet Steering)란 무엇이며 설정 및 성능 최적화 방법

Linux 서버에서 대량의 네트워크 트래픽을 처리하는 환경에서는 수신(Receive) 성능뿐만 아니라 송신(Transmit) 성능도 매우 중요합니다. 특히 웹 서버, API 서버, 프록시 서버처럼 응답 패킷이 많은 환경에서는 송신 패킷 처리가 특정 CPU 코어에 집중되면서 성능 저하가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 Linux에서는 XPS(Transmit Packet Steering) 기능을 제공합니다. XPS는 송신 패킷을 여러 CPU 코어에 효율적으로 분산하여 … 더 읽기

Linux RFS(Receive Flow Steering)란 무엇이며 설정 및 성능 최적화 방법

Linux 서버에서 네트워크 성능을 높이기 위해 RPS(Receive Packet Steering)를 설정했는데도 CPU 사용률이 기대만큼 개선되지 않는 경우가 있습니다. 이는 패킷은 여러 CPU로 분산되지만, 실제 애플리케이션이 실행되는 CPU와 패킷을 처리하는 CPU가 서로 다르기 때문입니다. 이러한 문제를 해결하기 위해 Linux에서는 RFS(Receive Flow Steering) 기능을 제공합니다. RFS는 패킷을 단순히 여러 CPU에 분산하는 것이 아니라, 애플리케이션이 실행 중인 CPU 코어로 … 더 읽기