9장. 수신 대기열 잠금 경합 방지


큐 잠금 경합으로 인해 패킷이 삭제되고 CPU 사용량이 증가할 수 있으므로 대기 시간이 길어집니다. 애플리케이션을 튜닝하고 전송 패킷 셰이핑을 사용하여 수신(RX)에서 큐 잠금 경합을 방지하고 TX(TX) 큐를 전송할 수 있습니다.

9.1. RX 대기열 잠금 경합 방지: SO_REUSEPORT 및 SO_REUSEPORT_BPF 소켓 옵션

기본적으로 다중 스레드 네트워크 애플리케이션은 들어오는 트래픽을 수신하려면 연결되지 않은 UDP 또는 TCP 리스너 스레드에 대한 단일 소켓을 공유해야 합니다. 멀티 코어 시스템에서 SO_REUSEPORT 또는 SO_REUSEPORT_BPF 소켓 옵션을 사용하여 로드를 공유하여 애플리케이션의 성능을 향상시킵니다.

단일 소켓을 사용하면 다음과 같은 원인이 됩니다.

  • 수신 버퍼에서 상당한 경합으로 인해 패킷이 삭제되고 CPU 사용량이 증가할 수 있습니다.
  • CPU 사용량이 크게 증가
  • 패킷이 삭제될 수 있음
패킷 흐름 다이어그램: 단일 UDP 소켓만 사용하여 경합을 잠급니다.

SO_REUSEPORT 또는 SO_REUSEPORT_BPF 소켓 옵션을 사용하면 한 호스트의 여러 소켓이 동일한 포트에 바인딩할 수 있습니다.

패킷 흐름 다이어그램: 잠금 경합을 방지하기 위해 'SO_REUSEPORT' 및 'SO_REUSEPORT_BPF' 소켓 옵션 사용

자세한 내용은 시스템의 socket(7) 도움말 페이지 및 /usr/src/debug/kernel- <version> /linux- <version> /tools/testing/selftests/net/reuseport_bpf_cpu.c 파일을 참조하십시오.

Red Hat Enterprise Linux는 커널 소스에서 SO_REUSEPORT 소켓 옵션을 사용하는 방법에 대한 코드 예제를 제공합니다. 코드 예제에 액세스하려면 다음을 수행합니다.

  1. rhel-10-for-x86_64-baseos-debug-rpms 리포지토리를 활성화합니다.

    # subscription-manager repos --enable rhel-10-for-x86_64-baseos-debug-rpms
  2. kernel-debuginfo-common-x86_64 패키지를 설치합니다.

    # dnf install kernel-debuginfo-common-x86_64
  3. 코드 예제는 /usr/src/debug/kernel- <version> /linux- <version> /tools/testing/selftests/net/reuseport_bpf_cpu.c 파일에서 사용할 수 있습니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동