10Gbps 데이터 전송서버 사양

100~130만원 전후의 저비용 PC로도 10G급 데이터 전송 가능

10G NIC(네트워크 카드)와 NVMe 타입의 SSD가 장착된 서버에서 9.4Gbps 데이터 전송 가능



HW 사양

디스크 타입 = NVMe 이어야 함

  • SATA SSD 성능은 최대 6Gbps 으로 디스크가 데이터 전송의 병목이 됨
  • NVMe SSD (PCIe 3.0x4) 성능은 28Gbps 이상임

CPU = 클럭수 보다는 높은 클럭이 중요함

  • (참고) KREONET 에서 저사양 HW 에서 테스트 한 바는 없음

네트워크

  • 구매 수량에 따라 가격이 고무줄이라서 30~60만원으로 책정
  • (필자 의견) 10G NIC은 출시된 지 오래된 제품이라 안정적임. OEM 모델 사용해도 무관함



모델명사양가격 (2020.07)
CPUIntel i3-81003.60GHz (4 Core)17 만원
MAIN BORARDASRock H370M-ITX/ac
14 만원
RAM

Samsung DDR4 2400MHz

16GB x 2 (DDR4 2400MHz)19 만원
DISKSamsung SSD 970 EVO Plus (M.2 NVMe)NVMe 250GB (PCIe 3.0x4)10 만원
NETWORKIntel 82599ES 10-Gigabit SFI/SFP+ NetworkIntel 10Gbps30~60 만원



100~130 만원 전후


테스트 구성

10G NIC이 장착된 두 호스트를 스위치 없이 직접 연결함



커널 튜닝

리눅스 커널의 TCP 및 네트워크 파라미터 설정

sysctl-10g.conf
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
net.ipv4.tcp_congestion_control = htcp
net.ipv4.tcp_mtu_probing = 1
net.core.default_qdisc = fq
sudo -s
swapoff -a
sysctl -p sysctl-10g.conf
ifconfig enp1s0f0 mtu 9000


메모리 데이터 전송 테스트

iperf3 를 이용한 메모리 to 메모리 전송 테스트

디스크 read, write 는 발생하지 않음

receiversender
[root@dtn-10g-a]~# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 10.0.0.2, port 50486
[  5] local 10.0.0.1 port 5201 connected to 10.0.0.2 port 50488
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.11 GBytes  9.53 Gbits/sec
[  5]   1.00-2.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   2.00-3.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   3.00-4.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   4.00-5.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   5.00-6.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   6.00-7.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   7.00-8.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   8.00-9.00   sec  1.15 GBytes  9.90 Gbits/sec
[  5]   9.00-10.00  sec  1.15 GBytes  9.90 Gbits/sec
[  5]  10.00-10.04  sec  42.6 MBytes  9.90 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.04  sec  11.5 GBytes  9.86 Gbits/sec   receiver
[root@dtn-10g-b]~# iperf3 -c 10.0.0.1
Connecting to host 10.0.0.1, port 5201
[  5] local 10.0.0.2 port 50496 connected to 10.0.0.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.16 GBytes  9.95 Gbits/sec    0   3.00 MBytes
[  5]   1.00-2.00   sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
[  5]   2.00-3.00   sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
[  5]   3.00-4.00   sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
[  5]   4.00-5.00   sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
[  5]   5.00-6.00   sec  1.15 GBytes  9.91 Gbits/sec    0   3.00 MBytes
[  5]   6.00-7.00   sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
[  5]   7.00-8.00   sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
[  5]   8.00-9.00   sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
[  5]   9.00-10.00  sec  1.15 GBytes  9.90 Gbits/sec    0   3.00 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  11.5 GBytes  9.90 Gbits/sec    0      sender
[  5]   0.00-10.04  sec  11.5 GBytes  9.86 Gbits/sec           receiver

iperf Done.


디스크 데이터 전송 테스트

GridFTP 를 통한 파일 복사 테스트. 디스크 캐시를 flush 하고 진행함.

receiversender
[root@dtn-10g-a ~]# sync && echo 3 > /proc/sys/vm/drop_caches
[kreonet@dtn-10g-b ~]# 
globus-url-copy -vb -p 1 10g.bin sshftp://10.0.0.1/home/kreonet/recv.bin

Source: file:///home/kreonet/
Dest:   sshftp://10.0.0.1/home/kreonet/
  10g.bin  ->  recv.bin
  10737418240 bytes      1177.01 MB/sec avg      1181.15 MB/sec inst