2012년 11월 23일 금요일

iperf를 사용해서 리눅스 시스템 네트워크 성능 측정하기

iperf라는 심플하지만 유용한 툴을 소개합니다. 두 linux  서버간 네트워크 성능을 측정할 때 사용할 수 있습니다. 한 쪽은 서버역할, 한쪽은 클라이언트 역할을 수행합니다.

설치/테스트 순서는 아래와 같습니다.

1. 양 서버에 iperf 설치
2. A서버에서 서버모드로 iperf 시작
3. B서버에서 클라이언트모드로 A서버에 접속 및 측정

1. 양 서버에 iperf 설치
아래 내용에 따라 A,B 두 서버에 iperf를 설치합니다. 서버로 사용할 A서버와 클라이언트로 사용할 B서버 모두 동일한 패키지를 설치합니다.

바로 아래에 있는 페이지에서 iperf-VERSION.tar.gz파일을 받습니다.
* iperf download page : http://sourceforge.net/projects/iperf/files/

아래 명령들을 차례대로 실행합니다.
>tar xzvf iperf-VERSION.tar.gz
>cd iperf-VERSION
>./configure
>make && make install

./configure명령에서 gcc 및 gcc-c++ 패키지가 필요합니다. 빌드 패키지가 없다면 "yum install gcc gcc-cc++"를 실행하고, 다시 위 명령들을 실행합니다.

2. A서버에서 서버모드로 iperf 시작
서버모드를 실행하기 전 IP를 확인 합니다. RHEL6 이후에는 "ip addr show"를 권장합니다. IP만 확인할 경우 ifconfig 명령을 사용해도 상관없습니다.

>ip addr show
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:18:8b:77:2d:30 brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.230/24 brd 192.168.5.255 scope global eth0
    inet6 fe80::218:8bff:fe77:2d30/64 scope link
       valid_lft forever preferred_lft forever



A서버에 설치가 완료되면 아래 명령을 실행합니다. 아래와 같이 출력하고 대기상태가 됩니다.
>iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------


3. B서버에서 클라이언트모드로 A서버에 접속 및 측정
B서버에 설치가 다 되었다면 아래 명령을 실행합니다. IP는 위 2번에서 확인한 IP입니다. 명령을 실행하면 A 서버에도 접속한 B서버의 IP등 정보가 나오고 측정이 시작됩니다.

B서버
>iperf -c 192.168.5.230
------------------------------------------------------------
Client connecting to 192.168.5.234, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 192.168.5.230 port 38093 connected with 192.168.5.234 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   115 MBytes  96.3 Mbits/sec

A서버
>iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.5.234 port 5001 connected with 192.168.5.230 port 38093
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.2 sec   115 MBytes  94.1 Mbits/sec

위 결과는 100Mbps에 연결된 두 서버간의 측정결과 입니다.

서버모드로 실행한 A서버는 계속 Client를 기다리고 있습니다. Ctrl+c로 나올 수 있습니다.

아래는 유용한 옵션들입니다.

-s 서버 모드
-c <server ip or domain> 클라이언트 모드
-u UDP 사용 (기본 TCP)
-p port (기본포트는 5001)
-w TCP Window 크기(socket buffer 사이즈)(ex -w 10M, -w 10K)
-t 측정시간(초)
-P parallel 모드, LACP 테스트 등 동시에 여러 connection이 필요할 경우 사용

Updates
. parallel 모드 설명 추가 (2016. 4. 7)

댓글 1개:

FIX :: ssh 접속이 느리고, /var/log/messages에 systemd-logind.service failed. 메시지가 남을 때

ssh 접속이 느릴 때가 있습니다. 보통은DNS가 제대로 설정되지 않았는데 /etc/ssh/sshd_config에 UseDNS가 yes로 되어 있을 때 발생합니다. 위와 같을 경우 /etc/ssh/sshd_config파일에서 아래와 같이 수정 후 ...