Rocky 9.5 slow network bad gso




Rocky 리눅스 네트워크 속도 느릴때



- 네트워크 전송 속도가 느릴때 아래 명령어를 적용하면 전송 속도가 개선됨

ethtool --offload ens3 rx-gro-hw off

Rocky Linux 9.5 버전에서 이러한 증상이 나타나는 경우가 보고되고 있습니다 [1], [3], [4]. 이 문제는 주로 특정 커널 버전이나 네트워크 드라이버(특히 VirtIO 환경 [2])와 관련된 것으로 알려져 있습니다.

"bad gso" 메시지는 네트워크 인터페이스의 GSO(Generic Segmentation Offload) 또는 GRO(Generic Receive Offload) 기능 처리 과정에서 문제가 발생했음을 나타냅니다. 이 기능들은 네트워크 성능 향상을 위해 여러 개의 작은 패킷을 묶어서 처리하는 역할을 하는데, 특정 환경에서 오류를 일으킬 수 있습니다.

임시적인 해결 방법으로, 앞서 설명해 드린 ethtool 명령어를 사용하여 해당 네트워크 인터페이스의 하드웨어 GRO 기능을 비활성화(off)해 보는 것을 고려해 볼 수 있습니다 [6].

예를 들어, 문제가 발생하는 네트워크 인터페이스의 이름이 ens3라면 다음과 같은 명령어를 실행해 보실 수 있습니다.


sudo ethtool --offload ens3 rx-gro-hw off


주의: 위 명령어에서 ens3는 예시이며, 실제 사용하시는 네트워크 인터페이스 이름으로 바꾸셔야 합니다. 네트워크 인터페이스 이름은 ip addr 또는 ifconfig 명령어로 확인하실 수 있습니다.


NIC 확인


dmesg | grep -i ens3|more


Bad gso 확인


이 명령어는 리눅스 시스템에서 네트워크 인터페이스의 성능을 조절하기 위해 사용되는 ethtool 유틸리티를 활용한 것입니다. 각 부분을 자세히 살펴보겠습니다.

  1. ethtool:

    • 리눅스에서 네트워크 인터페이스 카드(NIC)의 다양한 설정을 확인하고 변경하는 데 사용되는 명령줄 유틸리티입니다. 드라이버 정보, 지원되는 기능, 현재 링크 상태, 성능 관련 설정 등을 관리할 수 있습니다.
  2. --offload:

    • ethtool 명령어의 옵션 중 하나로, 네트워크 오프로드(Offload) 기능을 설정할 때 사용됩니다. 네트워크 오프로드는 CPU가 처리해야 할 일부 네트워크 관련 작업을 NIC 하드웨어로 넘겨서 CPU 부하를 줄이고 네트워크 성능을 향상시키는 기술입니다.
  3. ens3:

    • 설정을 변경하려는 특정 네트워크 인터페이스의 이름입니다. ens192는 시스템에 장착된 특정 네트워크 카드에 부여된 이름일 가능성이 높습니다. 시스템마다 네트워크 인터페이스 이름은 다를 수 있습니다 (예: eth0enp3s0 등).
  4. 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


root@qms2:~# ethtool -k eno1
Features for eno1:
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: off [fixed]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [fixed]
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: on
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp-mangleid-segmentation: off
tx-tcp6-segmentation: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: on
highdma: on [fixed]
rx-vlan-filter: on [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: on
tx-gre-csum-segmentation: on
tx-ipxip4-segmentation: on
tx-ipxip6-segmentation: on
tx-udp_tnl-segmentation: on
tx-udp_tnl-csum-segmentation: on
tx-gso-partial: on
tx-tunnel-remcsum-segmentation: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: on
tx-gso-list: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: on
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]
rx-gro-list: off
macsec-hw-offload: off [fixed]
rx-udp-gro-forwarding: off
hsr-tag-ins-offload: off [fixed]
hsr-tag-rm-offload: off [fixed]
hsr-fwd-offload: off [fixed]
hsr-dup-offload: off [fixed]


 on [fixed]라고 뜨는 건 NIC에서 고정된 기능이라 꺼지지 않습니다.



이 블로그의 인기 게시물

아파치 보안관련 기본설정

티베로 이관 작업 절차

아파치서버설치 (modcluster) 적용 및 Wildfly 서버 이중화 구성 방법