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) | |
---|---|---|---|
CPU | Intel i3-8100 | 3.60GHz (4 Core) | 17 만원 |
MAIN BORARD | ASRock H370M-ITX/ac | 14 만원 | |
RAM | Samsung DDR4 2400MHz | 16GB x 2 (DDR4 2400MHz) | 19 만원 |
DISK | Samsung SSD 970 EVO Plus (M.2 NVMe) | NVMe 250GB (PCIe 3.0x4) | 10 만원 |
NETWORK | Intel 82599ES 10-Gigabit SFI/SFP+ Network | Intel 10Gbps | 30~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 는 발생하지 않음
receiver | sender |
---|---|
[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 하고 진행함.
receiver | sender |
---|---|
[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 |