Rocky 9.5 slow network bad gso
Rocky 리눅스 네트워크 속도 느릴때
Rocky Linux 9.5 버전에서 이러한 증상이 나타나는 경우가 보고되고 있습니다 [1], [3], [4]. 이 문제는 주로 특정 커널 버전이나 네트워크 드라이버(특히 VirtIO 환경 [2])와 관련된 것으로 알려져 있습니다.
"bad gso" 메시지는 네트워크 인터페이스의 GSO(Generic Segmentation Offload) 또는 GRO(Generic Receive Offload) 기능 처리 과정에서 문제가 발생했음을 나타냅니다. 이 기능들은 네트워크 성능 향상을 위해 여러 개의 작은 패킷을 묶어서 처리하는 역할을 하는데, 특정 환경에서 오류를 일으킬 수 있습니다.
임시적인 해결 방법으로, 앞서 설명해 드린 ethtool
명령어를 사용하여 해당 네트워크 인터페이스의 하드웨어 GRO 기능을 비활성화(off)해 보는 것을 고려해 볼 수 있습니다 [6].
이 명령어는 리눅스 시스템에서 네트워크 인터페이스의 성능을 조절하기 위해 사용되는 ethtool
유틸리티를 활용한 것입니다. 각 부분을 자세히 살펴보겠습니다.
ethtool
:- 리눅스에서 네트워크 인터페이스 카드(NIC)의 다양한 설정을 확인하고 변경하는 데 사용되는 명령줄 유틸리티입니다. 드라이버 정보, 지원되는 기능, 현재 링크 상태, 성능 관련 설정 등을 관리할 수 있습니다.
--offload
:ethtool
명령어의 옵션 중 하나로, 네트워크 오프로드(Offload) 기능을 설정할 때 사용됩니다. 네트워크 오프로드는 CPU가 처리해야 할 일부 네트워크 관련 작업을 NIC 하드웨어로 넘겨서 CPU 부하를 줄이고 네트워크 성능을 향상시키는 기술입니다.
ens3
:- 설정을 변경하려는 특정 네트워크 인터페이스의 이름입니다.
ens192
는 시스템에 장착된 특정 네트워크 카드에 부여된 이름일 가능성이 높습니다. 시스템마다 네트워크 인터페이스 이름은 다를 수 있습니다 (예:eth0
,enp3s0
등).
- 설정을 변경하려는 특정 네트워크 인터페이스의 이름입니다.
rx-gro-hw off
:- 오프로드 설정 중 구체적으로 어떤 기능을 설정할지를 지정합니다.
rx-gro-hw
: 수신(rx) 방향의 하드웨어 GRO(Generic Receive Offload) 기능을 의미합니다.- GRO (Generic Receive Offload): 여러 개의 작은 패킷을 더 큰 단위(메가 패킷)로 합쳐서 커널 네트워크 스택으로 전달하는 기술입니다. 이렇게 하면 커널이 처리해야 할 패킷의 수가 줄어들어 CPU 효율성을 높일 수 있습니다. 소프트웨어적으로 구현되는 GRO와 하드웨어적으로 구현되는 GRO가 있습니다.
rx-gro-hw
는 NIC 하드웨어에서 이 기능을 수행하는 것을 의미합니다. off
: 해당 기능을 비활성화하겠다는 설정값입니다.
- 오프로드 설정 중 구체적으로 어떤 기능을 설정할지를 지정합니다.
결론적으로, ethtool --offload ens3 rx-gro-hw off
명령어는 ens3
라는 이름의 네트워크 인터페이스에 대해 수신 방향의 하드웨어 GRO 기능을 비활성화(끄겠다)는 의미입니다.
이 설정을 끄는 경우는 일반적으로 특정 네트워크 트래픽 처리 시 문제가 발생하거나, 특정 애플리케이션과의 호환성 문제 또는 디버깅 목적으로 사용될 수 있습니다. 기본적으로 GRO와 다른 오프로드 기능들은 성능 향상에 도움이 되도록 설정되어 있는 경우가 많습니다.
현재 활성화된 오프로드 기능을 확인
ethtool -k ens3
on [fixed]
라고 뜨는 건 NIC에서 고정된 기능이라 꺼지지 않습니다.