31.5. nmcli를 사용하여 높은 패킷 드롭 속도를 줄이기 위해 링 버퍼 크기를 늘리십시오.
패킷 삭제 속도가 발생하면 이더넷 장치의 링 버퍼 크기를 늘리면 애플리케이션이 데이터 손실, 시간 초과 또는 기타 문제가 보고됩니다.
수신 링 버퍼는 장치 드라이버와 NIC(네트워크 인터페이스 컨트롤러) 간에 공유됩니다. 카드는 전송(TX)을 할당하고(RX) 링 버퍼를 수신합니다. 이름에서 알 수 있듯이 링 버퍼는 오버플로가 기존 데이터를 덮어쓰는 순환 버퍼입니다. NIC에서 커널로 데이터를 이동하는 두 가지 방법, 하드웨어 인터럽트 및 소프트웨어 인터럽트( softIRQs라고도 함)가 있습니다.
커널은 장치 드라이버가 이를 처리할 수 있을 때까지 RX 링 버퍼를 사용하여 들어오는 패킷을 저장합니다. 장치 드라이버는 일반적으로 SoftIRQs를 사용하여 RX 링을 드레이닝하여 들어오는 패킷을 sk_buff 또는 skb 라는 커널 데이터 구조에 배치하여 커널과 관련 소켓을 소유하는 애플리케이션까지 이동합니다.
커널은 TX 링 버퍼를 사용하여 네트워크로 전송해야 하는 발신 패킷을 보관합니다. 이러한 링 버퍼는 스택 하단에 있으며 패킷 드롭이 발생할 수 있는 중요한 지점이며 네트워크 성능에 부정적인 영향을 미칩니다.
프로세스
인터페이스의 패킷 삭제 통계를 표시합니다.
ethtool -S enp1s0
# ethtool -S enp1s0 ... rx_queue_0_drops: 97326 rx_queue_1_drops: 63783 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 출력은 네트워크 카드 및 드라이버에 따라 다릅니다.
카운터
삭제 또는카운터의 값이 높으면 사용 가능한 버퍼가 커널에서 패킷을 처리할 수 있는 것보다 더 빠르게 채워지는 것을 나타냅니다. 링 버퍼를 늘리면 이러한 손실을 방지하는 데 도움이 될 수 있습니다.삭제최대 링 버퍼 크기를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pre-set maximums섹션의 값이현재 하드웨어 설정섹션에서보다 높은 경우 다음 단계에서 설정을 변경할 수 있습니다.인터페이스를 사용하는 NetworkManager 연결 프로필을 식별합니다.
nmcli connection show
# nmcli connection show NAME UUID TYPE DEVICE Example-Connection a5eb6490-cc20-3668-81f8-0314a27f3f75 ethernet enp1s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 연결 프로필을 업데이트하고 링 버퍼를 늘립니다.
RX 링 버퍼를 늘리려면 다음을 입력합니다.
nmcli connection modify Example-Connection ethtool.ring-rx 4096
# nmcli connection modify Example-Connection ethtool.ring-rx 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow TX 링 버퍼를 늘리려면 다음을 입력합니다.
nmcli connection modify Example-Connection ethtool.ring-tx 4096
# nmcli connection modify Example-Connection ethtool.ring-tx 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow
NetworkManager 연결을 다시 로드합니다.
nmcli connection up Example-Connection
# nmcli connection up Example-ConnectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요NIC가 사용하는 드라이버에 따라 링 버퍼를 변경하면 네트워크 연결이 곧 중단될 수 있습니다.