Network Ring Buffer Size 설정하기
Ring Buffer는 네트워크 카드의 버퍼 공간이다.
스위치에서 서버로 전달된 패킷은
- 1차로 네트워크 카드 내 Ring Buffer 에 보관되며
- 2차로 커널의 Socket RCV Buffer 로 이동한다.
이후에는 User Application의 read 함수를 통해 전달 된다.
이러한 이유로 Kernel의 Socket RCV Buffer가 여유가 있더라도
Ring Buffer Size가 작다면 중간 병목(bottleneck)이 발생할 수 있다.
그렇기 때문에 Ring Buffer는 가능하다면 Maximum 값으로 설정해주는 것이 권장된다.
Linux 상에서 NIC의 Ring Buffer(Current, Maximum) 값은 ethtool -g 명령어를 통해 확인 가능하다.
아래 interface의 경우 최대 값이 4,096이지만 현재 설정 값은 2,048이다.
[root@server~]# ethtool -g eth2 Ring parameters for eth2: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 2048 RX Mini: 0 RX Jumbo: 0 TX: 2048
'해당 명령어는 ethtool -G 명령어를 통해 설정 가능하다.
ethtool -G eth2 rx 4096 ethtool -G eth2 tx 4096
대부분의 Linux 설정과 같이 명령어는 현재 메모리 상의 값을 변경하기 때문에 재부팅 시에는 이전 값으로 원복된다.
영구적으로 변경하기 위해서는 Network script 내 해당 Interface에 관련 설정 값을 추가해주는 것이 필요하다.
아래와 같이 스크립트 파일 내 ETHTOOL_OPTS 를 추가한 후 해당 설정 값을 입력하면 된다.
ETHTOOL_OPTS="-G ${DEVICE} rx 4096 ; -G {$DEVICE} tx 4096"
(rx/tx의 최대 값을 확인 후 작성 필요)
[root@server~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 ONBOOT=yes USERCTL=no NM_CONTROLLED=no BOOTPROTO=static MASTER=bond0 SLAVE=yes ETHTOOL_OPTS="-G ${DEVICE} rx 4096 ; -G ${DEVICE} tx 4096"
'Linux' 카테고리의 다른 글
[Linux] CentOS7 Linux 설치용 USB 제작 (0) | 2018.06.16 |
---|---|
[Linux] 오픈 가능한 최대 파일 개수와 현재 오픈 중인 파일 개수 확인 방법 (0) | 2018.06.11 |
[Linux]Jumbo Frame 설정 및 확인 (0) | 2018.05.30 |
Linux 에서 특정 이름을 가진 프로세스 종료 명령어 (0) | 2016.12.28 |
mysql 명령어로 원격 cafe24의 mysql DB접속하기 (0) | 2016.12.25 |