SharedIT | 묻고 답하기(AMP)

네트워크 대역폭과 하드속도의 차이

서버와 스위치 스펙은 다음과 같습니다.

  • 서버

HDD : SSD (평균 Read/Write 500MB/s)
N/W : 10G NIC, Cat 7 케이블

  • 스위치

10G 8port


보통 10G 네트워크라면 이론상 데이터 전송속도가 1.25 GB/s 가 될 텐데요

디스크 스펙이 500MB/s 라면 최대 500MB/s 만큼의 데이터 전송밖에 안된다 라고 볼 수 있나요?

물론 운영체제, 어플리케이션, 기타 하드웨어, 네트워크 간섭 등의 다양한 변수들이 영향을 줄 수 있겠으나 수치적인 이론으로 접근했을 때 가 궁금합니다.

Tags : 태그가 없습니다.

7개의 답변이 있습니다.

낭만생선
  0 추천 | 6달 전

디스크(12G) - 레이드 카드(혹은 I/F 카드등)(12G) - NIC(10G) 세개 전부 10G 이상이 나와야 

결과적으로 10G의 속도가 나옵니다.


프리다이빙
  0 추천 | 6달 전

이론적으로 보았을때.. 표시한 항목이 유사 최대치 이겠지요.

물론 최대치를 내기 위해서는 주변 모든 상황이 최상의 조건 유지하고 아마도 

주변 간섭을 배제를 위해 측정 장비를 바로 연결하여 나온 결과일 것입니다. 

하지만 실제 현장에서는 거의 구현 불가능한 수치로 생각됩니다. 


Genghis Khan
  0 추천 | 6달 전

Disk 속도 수치도 중요하지만 연결된 케이블 메인보드도 중요하네요

 흔히 보는 수치들에 전송속도를 Mb/s로 변환




12.5Mb/s 인터넷 속도 광고 / 125Mb/s광랜


내부인터넷 125Mb/s vs 1250Mb/s


sata2(375Mb/s) vs sata3(750Mb/s)


SSD  읽기속도(550Mb/s) / 쓰기속도(520Mb/s) - (제품마다 다름)


Genghis Khan | 6달 전


수치내용 참고하세요

앵그리파파
  0 추천 | 6달 전

네트워크에 연결된 장치 간에 데이터를 전송할 때 실제 데이터 전송 속도는 두 구성요소 중 느린 구성 요소에 의해 제한되는 경우가 많습니다. 

이 경우, 문의글 설정을 그대로 따른다면, 네트워크는 SSD 속도(500MB/s)보다 이론적 대역폭(1.25GB/s)이 높지만 서버의 SSD는 데이터 전송과정에서 제한 요소가 됩니다. 따라서, 이 설정에서 달성할 수 있는 최대 데이터 전송 속도는 SSD 속도로 인해 약 500MB/s 라고 볼 수 있습니다. 

서두에 언급했듯이 네트워크의 이론적 대역폭이 더 높더라도 데이터 전송은 느린 저장 장치로 인해 제한됩니다. 또한, 알고 있듯이 운영체제, 어플리케이션, 기타 하드웨어, 네트워크 간섭 등의 다양한 변수들이 영향을 줄 수 있으므로 더 느릴 수 있다는 점을 참고하면 될것 같습니다.


앵그리파파 | 6달 전

그리고, NIC를 통해 패킷이 수신되는 순간부터 서버의 실제 디스크에 전달될 때까지 데이터가 이동하는 일반적인 경로를 살펴보면,

들어오는 패킷 수신(서버로 전송해야하는 데이터 포함) -> 

네트워크 스택 처리 -> 소켓 처리(네트워크 통신의 종점) -> 

운영체제 버퍼링(들어오는 데이터를 일시적으로 메모리에 버퍼링) -> 

신청처리(데이터는 특정 애플리케이션이 처리하는 계층으로 전달되고 데이터 성격에 따라 암호 해독이나 압축 해제 등의 추가 처리 수행) -> 

파일 시스템 상호작용(데이터를 디스크에 저장해야하는 경우) -> 

디스크 I/O(작업의 속도는 저장 장치의 성능 특성에 따라 제한) -> 

스토리지 컨트롤러 상호작용 -> 

SSD와의 데이터 전송(실제 데이터 전송이 발생, 여기서 SSD의 읽기 또는 쓰기속도가 중요-> 

승인 및 네트워크 응답 으로 이루어집니다.


이것은 일반화된 개요이니 참고하세요.

Simon.Park
  0 추천 | 6달 전

I/O 의 최대 성능은 어느 곳에서 병목이 발생하느냐의 문제가 있습니다.

SSD의 최대 처리량이 500MB/s 라고 해도 잘 해야 60% 를 넘지 못하게 나오게 되구요,

10G 의 네트웍도 이론적으로 1.25 GB/s 이지 그정도 나오기 어려운게 사실입니다.

200~300 MB/s 만 나와도 잘 나오는거라고 볼 수 있고,

순간적으로는 그 이상도 나올 수 있지만, SSD에서의 I/O가 아닌 메모리에서의

I/O가 포함되어서 그렇게 나오는 거라 볼 수 있습니다. 

topkslee
  0 추천 | 6달 전

이런 저런 변수 다 무시한다면

SSD에서 처리속도 최대 500MB/s 이론적인 데이터량밖에 처리가 안되죠.

체감은 생각보다 많이 나오지 않습니다.

체감 속도 체크 수치 보면 최대 180MB/s 정도밖에 나오지 않죠

wansoo
  0 추천 | 6달 전

병목이 생기는 구간의 속도가 최대 전송 속도가 되게 되는 것이죠.

네트워크에서 아무리 빠른 속도로 전송이 가능하더라도 디스크에서 읽고 기록할 수 있는 속도가 더 느리다면 디스크에서 읽고 기록 하는 처리에서 병목이 생기게 되는 것이고요.

네트워크를 타고온 데이터가 바로 디스크로 가게 되는 것도 아니죠.

마더 보드를 통해서 메모리로 갔다가 메모리에서 다시 마더보드 버스를 타고서 디스크로 전달되기 때문에 네트워크 인터페이스를 통해서 수신된 자료가 마더보드를 통해서 메모리로 갔다가 다시 디스크로 전달되는 구간에서도 병목이 발생할 수 있다는 점도 고려해 보아야 할 것 같고...

데이터 발생지에서 네트워크를 타고 나올때까지의 구간이나 네트워크 전송 중간의 구간에서도 병목이 발생할 수 있다는 것도 고려해 보아야 할 것 같고요.

찌롱 | 6달 전

그럼 서버 입장에서 NIC를 통해 패킷을 전달받은 순간부터 실제 디스크에 전달되기 까지의 경로가 어떻게되는지 자세히 알 수 있을까요?

wansoo | 6달 전

네트워크로 수신된 패킷들이 버퍼에 쌓이게 되는데, 쌓인 데이터가 메모리로 전달되는 방식은 여러가지가 있습니다.

직접 메모리 접근방식(DMA), 공유 어뎁터 메모리 방식, 공유 시스템 메모리 방식, 버스 마스터링 방식 등이 있고요.

수신된 패킷들은 순서에 맞게 패킷 조립도해야 하고, 헤드  메타 데이터들과 순수 데이터를 분리해서 데이터를 모으는 작업도 있어야 하겠고요.

메모리에 저장된 데이터는 목적에 맞게 메모리 내에서 가공되거나 다른 컴퓨터로 전송될 수도 있고, 화면에 표시될 수도 있고 다양하게 처리될  있는데...

어떤 목적에 맞게 처리되기 위해서는 기본적으로 데이터를 메모리(RAM)에 로드한 후에 처리하게 되죠.

그리고, CPU 안에도 레지스터라는 고속의 메모리가 있고요.

연산, 가공 처리를 하는 데이터들은 CPU 내에 있는 레지스터라는 메모리에 하나하나 옮겨서 처리하게 되고..

네트워크로 수신된 데이터가 디스크에 저장된다해서 네트워크 인터페이스 카드의 수신 버퍼에서 바로 디스크로 전달되지는 않는 것이죠.



아래 첨부 이미지와 링크 자료를 참고하면 이해에 도움이 될 수 있을 것 같네요.




https://velog.io/@jimin_lee/%EC%BB%B4%ED%93%A8%ED%84%B0-%EC%95%88%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%B2%98%EB%A6%AC%EB%90%A0%EA%B9%8C

wansoo | 6달 전

그리고, CPU 성능이 낮은 컴퓨터이거나, CPU가 너무 많은 서비스를 처리해야 하는 상황의 과부하로 인해 CPU가 병목 구간이 되는 경우도 많이 있습니다.

wansoo | 6달 전

앞에 첨부한 이미지를 보면 I/O 컨트롤러를 통해서 디스크에 있는 데이터들이 메모리로 이동한다는 것을 알 수 있겠는데...

NIC와 메모리 간에 직접 접근할 수 있는 인터페이스가 따로 없을 경우라면 NIC에 수신된 데이터들도 저 I/O 컨트롤러를 통해서 메모리로 이동해야 하기 때문에 메모리에 데이터들이 로드될때도 I/O 컨트롤러를 통해서 이동해야 하고, 메모리에서 디스크로 이동할때도 I/O 컨트롤로를 통해서 이동해야 하기 때문에 I/O 컨트롤러에서 병목이 생길 가능성도 높다 할 수 있겠고요.