8.4. 일반적인 큐/프레임 손실 문제 해결


지금까지 프레임 손실의 가장 일반적인 이유는 큐 오버런 (queue overrun)입니다. 커널은 큐의 길이에 제한을 설정하고 있기 때문에 경우에 따라서는 큐의 배출보다 더 빨리 채워집니다. 이 현상이 오래 지속되면 프레임 드롭이 시작됩니다.
그림 8.1. “네트워크 수신 경로 다이어그램 ”에서 보여주듯이, 수신 경로에는 NIC 하드웨어 버퍼와 소켓 큐라는 두 가지 주요 큐가 있습니다. 두 큐 모두는 큐 오버런을 방지하기 위해 적절하게 설정해야 합니다.

8.4.1. NIC 하드웨어 버퍼

NIC는 프레임으로 하드웨어 버퍼를 채웁니다. 다음으로 버퍼는 인터럽트를 통해 NIC가 주장하는 softirq에 의해 배출됩니다. 큐의 상태를 확인하려면 다음과 같은 명령을 사용합니다:
ethtool -S ethX
ethX를 NIC의 해당 장치 이름으로 대체합니다. 이는 ethX 내에서 얼마나 많은 프레임이 드롭되었는지를 표시합니다. 드롭이 발생하는 대부분의 이유는 큐가 프레임을 저장할 버퍼 공간이 부족하기 때문입니다.
이러한 문제를 해결하려면 다음과 같은 여러가지 방법이 있습니다:
입력 트래픽
입력 트래픽을 느리게하여 큐 오버런을 방지할 수 있습니다. 이는 통합된 멀티캐스트 그룹의 수를 필터링하여 줄이고 브로드 캐스트 트래픽을 감소시켜 달성할 수 있습니다.
큐 길이
다른 방법으로 큐의 길이를 늘릴 수 있습니다. 이는 드라이버가 허용하는 최대 값 까지 지정된 큐에 있는 버퍼 수를 늘리는 것입니다. 이를 위해 다음과 같이 ethXrx/tx 링 매개변수를 편집합니다:
ethtool --set-ring ethX
앞서 언급한 명령에 해당 rx 또는 tx 값을 추가합니다. 보다 자세한 내용은 man ethtool에서 참조하십시오.
장치 무게
큐가 배출되는 속도를 높일 수 있습니다. 이를 위해 NIC의 장치 무게 (device weight)를 적절하게 조정합니다. 이 속성은 softirq 컨텍스트가 CPU를 포기하고 자체 일정을 변경하기 전 NIC가 받을 수 있는 최대 프레임 수를 말합니다. 이는 /proc/sys/net/core/dev_weight 변수에 의해 제어됩니다.
대부분의 관리자는 세 번째 옵션을 선택하는 경향이 있습니다. 하지만 이 옵션을 실행하면 그에 따른 결과가 수반된다는 점에 유의하십시오. 한 번의 반복에서 NIC에서 수신할 수 있는 프레임 수를 늘리면 CPU 사이클이 증가하게 되어, 해당 CPU에서 애플리케이션을 스케줄할 수 없습니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.