100G 통신 대용량 전송 문의 드립니다

도리a   
   조회 9248   추천 0    

안녕하세요,


현재 100G Ethernet 통신으로 파일 전송을 테스트 하고 있는데요.


iperf에서는 다음과 같이 표기가 됩니다,

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec  20.5 GBytes  17.6 Gbits/sec


그런데, scp나 sftp, rsync 많이 쓰는 프로토콜을 이용한 통신은 최대 250MB 까지 밖에 안나오더라구요.

혹시 이것이 프로토콜의 병목인지 궁금합니다.


DISK I/O 에서의 병목도 생기기가 힘든 이유가, 현재 NVMe 4장 RAID 0 로 사용중입니다.


두서없이 작성했는데, 갑작스럽게 생긴 프로젝트라 급하게 질문해봅니다..ㅠㅠ

짧은글 일수록 신중하게.
엠브리오 2020-07
단순계산해도 nvme에서 심각한 병목현상이 예상되는데요.

이더넷 (100Gbps) => 12.5G Byte/s
PCI-E Gen 3.0 x 4 lane, nvme 1.3 (32GBps) => 4GByte/s (실제 전송속도 대략 3,500MByte/s 정도 나옵니다.)

램드라이브에서 테스트해보세요.
     
도리a 2020-07
Disk는 명시햇듯이 NVMe * 4ea RAID 0 입니다.
I/O 테스트시 1.2G 이상 나옵니다.
tmp로 ramdisk를 mount 하여 해도 속도가 250MB를 초과하여 안나오네요.
술이 2020-07
가상화 만들어서 넘겨보든가 메모리 TO 메모리 방식으로 해야만 제속도가 나옵니다.
일반적인 네트워크 속도는 풀속도 안나옵니다. RDMA 적용되는것만 해당되요.
     
도리a 2020-07
RDMA 에서는 100G 통신 확인이 가능합니다.
다만, Stroage data transfer 에서 문제가 생기는것 같은데,
tmp로 ramdisk 를 mount 하여 해도 속도가 250MB를 초과하여 안나오네요.

가상화는 환경상 OS 변경이 불가능하여 테스트를 못합니다.
epowergate 2020-07
100G는 OS 설정 정말 잘하셔야 합니다.
시스템 구입한 곳에서 어떤 설정으로 해야하는지 물어보세요
제품마다 많이 다릅니다.
10GB 이상 나와야 합니다. (저희는 그렇게 나옵니다)
     
도리a 2020-07
세팅을 제가 해야해서 그렇습니다.....
          
epowergate 2020-07
100G Network은 (아직은) 제조사마다 특성이 심해서 일반 설정으로는 좋은 성능이 나올 수 없습니다.
스토리지 사양 (H/W, OS/SW 설정, 스토리지 프로그램 설정, DISK 설정, ... 테스트 프로그램)등등 최대한 상세하게 적어주시면 봐드리겠습니다.
               
도리a 2020-07
CPU : AMD EPYC 7742 * 2ea
MEM : 3200 64GB * 16 ea (1TB)
Storage : MZWLJ3T8HBLS-00007 (PCIe Gen4 x4) * 2ea RAID 1 [OS] / MZWLJ3T8HBLS-00007 (PCIe Gen4 x4) * 4ea RAID 0 [DATA]
Network : ConnectX-6 VPI 10/25/50/100/200Gb/s Ethernet

양측 서버는 동일한 모델이며, 네트워크는 다이렉트로 100GB Cable로 연결되어있는 상태입니다. (200GB 통신이 아닙니다.)

OS는 Ubuntu 18.04.4 이며 OS 설치 후 드라이버 설치 제외 기타 건든 설정은 아무것도없습니다.

테스트 한건 글에 명시되어있는 iperf, scp, sftp, rsync 제외 다른것은 없습니다.
                    
epowergate 2020-07
일단 간단한것 부터 해보셔야 할것 같습니다.
SCP, SFTP, RSYNC는 스토리지 서비스가 아니어서 테스트 자체가 의미가 없습니다.

서버제조사/네트워크판매사에서 지원을 못받는게 이해가 가질 않습니다만, 만약 못받는다면
1. 인터넷에서 ConnectX-6 VPI + UBUNTU 18.04.4에 최적화된 Kernel Parameter 찾아서 적용하시고
2. iPerf, NetPipe등 으로 테스트 해보세요.  최소한 80G는 나와야 합니다.
3. Network에서 RDMA, Subnet Manager 설정하시고 iPerf 테스트 다시 수행: 95G는 나와야 합니다.
4. 95G 나오면 인터넷에서 NFSoRDMA 찾아서 NFS 설정 및 테스트: 이쯤되면 40~50G는 나와야 합니다.
4.1. export를 4개 별개로 하시고 CLIENT에서 4개를 동시에 땡겨보세요.
4.2. TEST는 FIO 추천합니다.

AMD니까 어렵겠지만 VMD가 S/W 기반이라고 해서  LVM이나 Software RAID는 아닙니다.
성능차이 어마어마합니다.  4배 이상 날 겁니다.
                         
도리a 2020-07
먼저 상세한 답변 감사드립니다.
기존의 다른 장비에서 했던 테스트랑 비슷한것 같네요.

FIO나 기타 다른 테스트 환경에 관해서는 이미 INFINIBAND 상태에서는 테스트해본 단계이긴합니다.

생각해보니 NFS over RDMA 가 있었군요.
왠지 해당 테스트로면 가능할것으로 예상됩니다.
2020-07
혹시 서버측은 SSD를 안쓰는것 아닌가요?
하드디스크 두세개 묶으면 가능한속도라..
250MBps = 2Gbps , 어디 걸리는게 별로 없는 애매한 수치네요.
     
도리a 2020-07
서버측, 클라이언트측 동일한 장비입니다.

NVMe * 4ea RAID 0 상태입니다.
겨울나무 2020-07
NVMe 4장 묶은게 h/w raid가 아닌 sw 논리적 레이드 구성 하신건가요?  NVMe 4개 가능한 레이드 컨트롤러가 있나요?
     
도리a 2020-07
S/W RAID 입니다.
아직까지 NVMe는 H/W RAID가 존재하지 않는걸로 알고있습니다.

INTEL VMD를 사용 하더라도 결국은 S/W로 묶이는 구조더군요.
박문형 2020-07
혹시 양쪽 테스트 시스템 사양이 어떻게 되시는지요??
     
도리a 2020-07
CPU : AMD EPYC 7742 * 2ea
MEM : 3200 64GB * 16 ea (1TB)

사양체크에 어떤것들이 더 필요하신가요?
박문형 2020-07
사용 OS 정도만 체크되면 될 듯합니다..

100G 가 가능한 시스템 최소 사양을 인텔은 스케일러블 AMD는 EPYC 로 알고 있습니다..
     
도리a 2020-07
OS는 Ubuntu 18.04.4 입니다.
2020-07
프로토콜에 대역폭 제한이 있지는 않구요, 구글링해보시면 10G네트웍 다 쓰는 NAS프로토콜 벤치마크 결과들 많습니다.
아무래도  OS(가상화환경포함)환경에 제한이나 병목구간이 있지않을까싶네요.
결국따져보면 메모리간(iperf) 통신에는 17G 까지 나오는데, 디스크까지 내려오면 느려지는것이니 해당OS에 능통하지않다면 OS를 바꿔보는게 가장 빠른 방법이라 생각합니다.
iperf는 17Gbps까지 나오는걸로 봐서 의미가 있을까싶긴 하지만 다른프로토콜들(samba, nfs, ftp)도 테스트해보시고, 가능하다면 OS도 다른 배포판이나 다른버저능로 바꿔보는게 좋을듯합니다.
일단 차근차근 2G->17G->100G 이렇게 순차적으로..
     
도리a 2020-07
OS는 환경상 변경이 불가능합니다.
다만 말씀하신것과 같이 NFS, FTP, SMB 테스트 진행은 해보려합니다.

당초 모델 자체가 통신 검증이 된 어플라이언스 장비라 OS 설치 이후 구체적으로 무엇의 세팅값이 필요한지 확인이 불가능한 상태라 답답하여 글을 적기 시작했습니다.

아마도 OS 어떤 곳에 분명 병목이 존재하는 것으로 예상은 되는 상태입니다.
손님 2020-07
경험상 scp 전송속도가 느린 사유는 cpu 병목 원인입니다.
cypher 옵션을 바꾸거나 다른 툴을 사용하시면 될 듯 합니다.
     
도리a 2020-07
오, cipher 을 바꾸니 700까지도 올라가는군요.
감사합니다.

조금만 더 연구해볼게요.
Noname1 2020-07
iperf3 -P 32
윤건 2020-07
네트웍을 통해 rsync로  데이터 전송할 때 대역폭의 한계가 대략 250~300MB/s 입니다.
이는 네트웍의 문제가 아니라 프로그램 자체의 문제입니다.
리눅스나 유닉스에서 사용하는 전통적인 유틸리티들이 대부분 아주 오래된 코드를 기반으로 조금식 개선되어 왔기때문에
만들어질 당시의 하드웨어 상황을 고려하면 충분한 성능을 내주었지만
현재의 비약적인 하드웨어 발전에 비해서 소프트웨어가 하드웨어 성능을 못 따라가는 것입니다.
이것을 쉽게 확인하는 방법으로 rsync를 동시에 여러개를 실행해보면 아마도 (동시실행수)x250MB/s의 총 전송속도가 나올겁니다.(다른곳의 병목이 없는상황에서)

iperf로 17.6 Gbps 밖에 나오지 않는건 커널 파라메터 튜닝이 필요합니다.
sysctl 을 통해서 net.core.rmem... net.core.wmem... net.ipv4.tcp_ net.ipv4.udp 등등의 파라메터를 잘~ 튜닝하면
iperf 에서 40~50 Gbps 정도의 대역폭은 확보 가능할겁니다
하지만 그 이상의 대역폭은 커널 자체의 tcp/ip 스택에서 병목이 걸리기 때문에 거의 불가능하고
설령 잘 튜닝해서 그 이상의 대역폭을 확보한다 하더라도 커널자원을 너무 많이 사용하기에 실사용은 거의 불가능합니다.
100G의 대역폭을 제대로 사용하기 위해서는 UIO, OnLoad/TcpDirect, RDMA와 같은 Kernel-Bypass 기술을 사용해야 합니다.
(RDMA를 사용하면 CPU 사용량 ~0%로 100Gbps 대역폭의 데이터 전송이 가능합니다.)

좀 더 빠른 데이터 전송을 위해서는 일반 tcp/ip 프로그램으로
https://www.slac.stanford.edu/~abh/bbcp/
http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
bbcp 를 사용하시던지 ( 2.5GB/s or 20Gbps 의 전송속도는 나옵니다.)

RDMA 사용이 가능하면
http://moo.nac.uci.edu/~hjm/parsync/
같은 프로그램도 있고
MPI 환경이면
https://github.com/hpc/mpifileutils
의 dsync도 유용합니다.
     
도리a 2020-07
친절한 답변 감사드립니다.

역시나 생각한데로 전송프로토콜의 문제가 맞군요.

사실 20G 대역폭이 나오는것에 대한 처리는 나중에 할예정이였고,
20G의 대역폭 자체라도 우선 끌어올리는것을 첫번째 타겟으로 삼고 있었습니다.

참고하겠습니다.
제온프로 2020-07
메인보드 BIOS 와 100G 카드 펌웨어는 잘 맞나요 ?
이 둘의 동작 펌웨어가 잘 맞아야 합니다.


QnA
제목Page 998/5730
2014-05   5266481   정은준1
2015-12   1791398   백메가
2019-03   2965   더블로
2021-10   3811   션한맥주
2014-09   5972   방o효o문
2015-12   3720   머라카는데
2014-09   5285   김건우
2020-06   3581   2CPUI김세훈
2010-01   10538   김영기대전
2019-03   4051   삐돌이슬픔이
2019-04   5533   검은콩
2016-01   4955   깜박깜박가
2023-06   2020   겨울나무
2021-11   3958   이원재K
2013-03   5386   박문형
2020-06   2471   병맛폰
2016-01   5098   성투불패
2013-03   6577   Larry
2016-01   3846   차평석
2016-01   5513   삐돌이슬픔이
2010-02   11035   서울l강한모
2021-11   3009   리드2cpu