NIC의 RingBuffer 확인
네트워크 대역폭은 크지만 서버의 네트워크 속도가 느릴때 패킷이 드랍되는 현상이 발견되었을때 조치방법중 하나
1. 게이트웨이로 나가는 디폴트 이더넷 인터페이스를 확인한다.
- ip route show를 사용
2. ethtool -g eth0 명령어로 ringBuffer Parameter 확인 진행
- maximums 로 NIC의 RX, TX 최대 링버퍼 슬롯 개수를 확인
- current로 현재 설정된 RX, TX 슬롯 개수를 확인
- rx: 수신 Buffer
- tx: 송신 Buffer
현재 NIC 맥시멈값에 비해 커런트값이 부족한점을 확인
성능을 최대한으로 활용하지못하는것으로 조치 진행
3.ethtool -G eht0 rx <수정값> tx <수정값>
위 명령어로 rx tx 값 수정 후 확인하면 Current값도 올라온것을 확인
수정 명령어는 재부팅시 초기화기때문에 시스템 서비스에 등록해 부팅시 설정이 가능하다.
테스트
- 얼마나 더 개선되었을까 iperf3 를 활용하여 확인해보자
| Throughput | Retr | |
| rx 64 (튜닝 전) | 892 Mbits/sec | 1915 |
| rx 8192 (튜닝 후) | 886 Mbits/sec | 1652 |
Retr 14% 감소 (1915 → 1652)
네트워크 대역폭이 1Gbps 회선 최대치라 Throughput 값은 드라마틱한 효과가 없었지만
(만약 10Gbps 환경이였다면 개선된 폭이 더욱 컸을것이다.)
버퍼 부족으로인한 패킷 재전송이 14% 감소한걸 확인할수있다.