네트워크가 디스크보다 더 빠릅니까?


126

이것은 소프트웨어 디자인 질문입니다

나는 속도에 대해 다음 규칙을 사용했습니다.

cache memory > memory > disk > network

각 단계는 이전 단계의 5-10 배입니다 (예 : 캐시 메모리는 기본 메모리보다 10 배 빠름).

이제 기가비트 이더넷은 로컬 디스크보다 대기 시간이 짧은 것 같습니다. 따라서 큰 원격 인 메모리 DB에서 읽는 작업이 로컬 디스크 읽기보다 빠를 수 있습니다. 이것은 나 같은 오래된 타이머에 대한 이단처럼 느껴집니다. (방금 네트워크 왕복 여행을하지 않기 위해 디스크에 로컬 캐시를 작성하는 데 시간을 보냈습니다. 따라서 내 질문)

이 분야에서 경험 / 번호 / 조언이 있습니까?

그리고 네, 알아내는 유일한 방법은 구축하고 측정하는 것이지만 일반적인 규칙에 대해 궁금했습니다.

편집 :

이것은 최고의 답변에서 흥미로운 데이터입니다.

  • 동일한 데이터 센터 내 왕복 500,000 ns

  • 디스크 검색 10,000,000ns

이것은 나에게 충격이다. 내 정신 모델은 네트워크 왕복이 본질적으로 느리다는 것입니다. 그리고 그것의-디스크 '왕복'보다 10 배 빠릅니다.

Jeff attwood가이 v good 블로그를 http://blog.codinghorror.com/the-infinite-space-between-words/ 주제에 게시했습니다.


11
때때로 그렇습니다. 가끔 그렇습니다. 어떤 네트워크? 어떤 디스크?
John Gardeniers

1
상위 답변의 다른 흥미로운 데이터 : 네트워크 대 디스크에서 1MB 순차 읽기. "왕복"시간에 중요한 데이터 전송이 생략 된 것 같습니다.
Paul

폴 : MTU에 따라 다릅니다. (1MB MTU? Awesome!)
Matt Simmons

10Gbps 네트워크 장비가 널리 사용 가능하다는 점에서 이러한 답변 중 일부를 재고하고 싶습니다.
병아리

기가비트 네트워크 대 레이드 5?
SoilSciGuy

답변:


137

다음은 Google 동료 인 Jeff Dean이 인용 한 숫자 중 일부입니다.

모두가 알아야 할 숫자

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

대규모 분산 시스템 구축의 디자인, 레슨 및 조언 이라는 제목의 프레젠테이션 에서 얻을 수 있습니다.

이 대화는 LADIS (Large-Scale Distributed Systems and Middleware) 2009에서 발표되었습니다 .

다른 정보


그것은 말했다있어 재 작성을위한 제프 딘에 GCC -O4 이메일 코드가.



+1 매우 흥미 롭습니다!
9dan

1
일부 프레젠테이션은 괄호 안에 다른 값을 나타냅니다. 나는 대괄호 안에있는 것이 잘못되었다고 가정하고 값을 업데이트했습니다.
David d C e Freitas

1
이것이 모두 SSD 이전 시대입니까? 최신 번호 는 여기 를 참조 하십시오 .
matt

실제로이 숫자를 사용하여 SSD 드라이브가 스스로 비용을 지불하는 이유를 보여주는 프레젠테이션을 작성 하여 사무실 관리자에게 더 빠른 기계 작업이 필요하다는 것을 확신 시켰습니다. 기술 정보에 대한 숫자를 포함 시켰지만 가능한 한 비 기술적 관리를 위해 정보를 제공했습니다.
brichins

19

네트워크 대 디스크와 관련하여 많은 변수가 있지만 일반적으로 디스크가 더 빠릅니다.

SATA 3.0 및 SAS 버스는 6Gbps이며 네트워크 1Gbps에서 프로토콜 오버 헤드를 뺀 값입니다. RAID-10 15k SAS를 사용하면 네트워크 속도가 느려질 것입니다. 또한 디스크 캐시가 있으며 시나리오에 따라 속도를 높일 수있는 솔리드 스테이트 하드 드라이브의 가능성도 있습니다. 랜덤 대 순차 데이터 액세스는 데이터가 전송되는 블록 크기뿐만 아니라 한 요소를 수행합니다. 이 모든 것은 디스크에 액세스하는 데 사용되는 응용 프로그램에 따라 다릅니다.

이제 네트워크를 통해 전송하는 모든 것이 디스크로 들어 오거나 디스크에서 나오고 있다는 사실에 대해서는 언급하지 않았습니다.


1
병렬 읽기를 제공하는 RAID에 대한 요점은 곧 네트워크에 접속할 수없는 것입니다. 물론 로컬 랩톱 하드 드라이브에 대해 이야기한다면 빠른 SAN과 빠른 네트워크의 결합 속도가 더 빠를 수 있습니다. 특히 해당 SAN의 SSD에서.
Michael Dillon

10
네트워크는 본질적으로 병렬화 가능합니다. 무슨 말을하고 있습니까? 네트워크의 여러 시스템에서 총체적으로 읽는 것은 매우 사소한 일입니다. 이것은 명백한 BitTorrent는 말할 것도없고 Hadoop 및 MPI와 같은 시스템의 핵심입니다.
jgoldschrafe

2
SONET / SDH를 사용하면 SAS보다 38Gbps가 더 빠릅니다. 네트워크 통합은 en.wikipedia.org/wiki/Link_aggregation
Mircea Vutcovici

10
@Jake 6Gbps에 대해 이야기 할 때 인터페이스 대역폭과 디스크가 실제로 데이터를 제공 할 수있는 속도를 명확하게 구분할 수 있습니다.
NPE

4
나는 내가 디스크 캐시에 비해 메모리 데이터베이스에 원격에 대한 로컬을 말하고 내 질문에 말 했는가
PM100

10

글쎄, 그것은 네트워크 리소스가 당신이 요청하는 데이터 (메모리 또는 유사한 것)를 가지고 있는지 또는 디스크에서 데이터를 읽을 수 있는지에 달려 있습니다.

어쨌든 처리량은 경우에 따라 더 높을 수 있지만 대기 시간이 더 길 것으로 생각합니다.


디스크에서 탐색 시간이 10Gbit / s 요청보다 크다는 것을 의미합니까?
Mircea Vutcovici

1
@Mircea는 10Gbit 네트워크가 어딘가에서 데이터를 가져와야하므로 해당 소스의 대기 시간과 네트워크 대기 시간으로 제한됨을 의미합니다.
Chris S

스토리지는 RAM 디스크 일 수 있습니다. 참조 : en.wikipedia.org/wiki/Solid-state_drive#DRAM-based
미르 Vutcovici

2

IMX 디스크는 여전히 빠릅니다. 네트워크의 이론적 인 전송 속도는 높지만 실제로는 가까이 가지 않습니다.

약 2 년 전에 랩톱에서 하드 드라이브 문제가 발생하여 DMA가 종료되었습니다. 이로 인해 하드 드라이브의 속도가 느려지고 특히 네트워크보다 속도가 느려졌습니다. 그러나 다른 컴퓨터로 전환했을 때 인터넷보다 빠른 원래 HDD 상태로 돌아 왔습니다.


2

기가비트 네트워크에 대한 나의 경험은 올바른 서버를 감안할 때 처리량과 대기 시간 측면에서 로컬 성능을 능가 할 수 있다는 것입니다. 네트워크 테스트 : 기가비트 성능을 얻습니까?를 참조하십시오 .

모든 실제적인 목적을 위해 네트워크 및 로컬 스토리지를 동등한 것으로 취급하고 메모리 캐시 만 사용하는 것이 좋습니다.

언급 한 표준 경고는 일반적인 규칙이 없다는 점에서 사실입니다. 실제로 대부분의 경우 잘 구성된 서버로 작업하고 최상의 데이터 전송 방법을 평가하기 위해 메트릭을 사용해야합니다.

하드 드라이브 속도가 느린 저가형 시스템을 사용하는 경우 빠른 스토리지 배열이있는 서버에 기가비트 네트워크 연결을 사용하는 것이 훨씬 빠릅니다.

마찬가지로 하드웨어가 거의 동일한 두 대의 컴퓨터를 사용하는 경우 대기 시간과 네트워크 오버 헤드로 인해 로컬 스토리지가 더 빨라집니다. 정말 상식입니다.


2

따라 다릅니다. I / O가 주로 랜덤 액세스 인 경우 플랫 처리량은 사용 가능한 네트워크 대역폭에 비해 그리 크지 않을 수 있습니다. 그러나 대부분의 네트워크 트래픽은 궁극적으로 I / O와 관련된 프로세스에 의해 생성됩니다. 네트워크 트래픽을 생성하는 프로세스의 작업 집합이 캐시에 맞으면 디스크 대역폭에 의해 제한되지 않습니다. 캐시가 손상되면 디스크에 병목 현상이 발생합니다.

데이터웨어 하우스 시스템에서 작업하고 표준 DW 쿼리는 테이블 스캔입니다. 쿼리가 팩트 테이블 (또는 파티션)에서 행의 몇 퍼센트를 초과하는 경우 순차적 I / O를 사용하는 테이블 또는 파티션 스캔은 인덱스 조회 및 탐색을 사용하는 임의 액세스 쿼리 계획보다 더 효율적입니다.

네트워크 스토리지 (예 : SAN)는 적절하게 조정되지 않으면 스트리밍 워크로드에서 제대로 수행되지 않는 경향이 있습니다. SAN이 범용 통합 환경에 사용되는 경우, 데이터웨어 하우스와 같은 스트리밍, 뾰족한로드에 대해 거의 확실하게 최적화되지 않습니다. 벤더 백서에서 스트리밍 I / O에 맞게 조정되지 않은 SAN에서 동일한 처리량을 얻으려면 약 3 배의 디스크가 필요하다는 것을 알았습니다.

내 경험은 그것과 관련이 있습니다. 실제로, 데스크톱 PC 에서 동일한 ETL 프로세스를 훨씬 빠르게 실행할 수없는 통합 환경에 데이터웨어 하우스를 구축 한 적이 없습니다 . 또한 SAN의 주요 공급 업체의 영업 담당자는 SAN이 충분히 빠르지 않기 때문에 많은 고객이 DW 시스템에 직접 연결 스토리지를 사용한다는 기록을 밝혔습니다.

네트워크 스토리지는 임의 액세스 워크로드를위한 직접 연결 스토리지보다 IOPS 당 최소 10 배 더 비싸고 스트리밍에는 2 배 더 비쌉니다.


1

내가 가진 경험은 1Gbit 연결 상태에서 파일을 다운로드하려고 할 때 하드 디스크가 일반적으로 병목 현상이라는 것입니다. 명심해야 할 것은 연결을 먼저 설정해야하며 시간이 걸리는 것입니다. 따라서 많은 양의 데이터 네트워크를 전송하는 것이 실제로 디스크보다 빠를 수 있습니다.


1
디스크가 네트워크 연결의 다른 쪽에서 병목 현상이 발생하지 않는 한 ...

@Argote : True, 그러나 서버 소프트웨어가 올바르게 쓰여지면 디스크에 쓰기 전에 메모리에 버퍼링됩니다.
amphetamachine

1

예, 일반적으로 네트워크는 이제 하드 드라이브보다 빨라지지만 시간이 지남에 따라 변경 될 수 있습니다.

그런 것 때문에 생각

응용 프로그램이 실행 중이면 호스트 시스템이 작동하고 네트워크를 통해 작업하는 데 피어 프로토콜, 채널 보안 확인 등의 공통 프로토콜이 필요하고 피어가 다른 플랫폼을 사용하는 경우에는 다른 플랫폼에서 수행 할 수있는 작업을 수행하기가 더 어렵습니다 단일 기계.

나는 누가 가장 강한가보다는 트레이드 오프 측면에서 이것을 선호합니다 ...


4
의심 스럽다.
John Gardeniers

1

이 비교를위한 정확한 사용 사례를 설명해야합니다. 하드 드라이브에는 탐색 시간 + 전송 속도 및 캐시가 있습니다. 네트워크에는 대기 시간, 전송 속도 및 프로토콜 오버 헤드가 있습니다 ...

원래 캐시 메모리> 메모리> 디스크> 네트워크는 여전히 일반적으로 사실이라고 생각합니다.


0

디스크는 SCSI, SAS 또는 IDE 버스를 통해 CPU와 연결됩니다. SCSI 또는 ATAPI와 같은 특정 프로토콜을 실행하는 내부 네트워크입니다. 이더넷은 장거리에서 작동하도록 설계되었으며 SAS / SCSI / IDE보다 훨씬 느릴 수 있습니다. 어떤 기술이 더 빠른지 비교하는 기술에 따라 다릅니다. 20 년 된 랩톱 HDD와 10Gbps의 RAM 스토리지를 비교하면 항상 승자가됩니다. 스토리지를 구매할 때는 스토리지와 가격 및 관리 효율성을 비교해야합니다.


0

음, 거기에 라이트 피크 속도를 RAM에 점점 가까이 100Gbps 급 네트워킹 속도를 목표로한다. 물론, 네트워크는 발신자가 데이터를 생성 할 수있는 한 빨리 데이터를 전달할 수 있습니다. 즉, 발신자가 하드 디스크에서 데이터를 읽는 경우 수신자는 디스크 읽기와 동일한 속도로만 데이터를 가져옵니다. 초고속 네트워크.


0

명심해야 할 것은 네트워크에 달려 있다는 것입니다. 예를 들어 웹 사이트의 성능에 대한 책임이 있다고 가정 해보십시오. 이 웹 사이트는 물론 로컬 네트워크를 통해 데이터베이스 서버에 연결되어 있으며 인터넷을 통해 웹 서퍼에도 연결되어 있으며 일종의 네트워크이기도합니다.

대부분의 경우 정적 IP와 크로스 오버 케이블 또는 automdx를 통해 웹 서버와 데이터베이스 서버간에 전용 링크를 설정하여 대기 시간을 줄이고 트래픽에 대한 전용 링크를 제공 할 수 있습니다. 트래픽이 매우 빠르기 때문입니다. 데이터베이스 서버는 가능한 많은 db를 메모리에 유지하기 위해 모든 종류의 작업을 수행하며 많은 경우 전체 내용과 몇 가지 색인에 성공하는 경우가 많습니다. 이 데이터베이스에 대한 쿼리는 디스크에 대한 쿼리보다 빠르거나 빠릅니다.

반면에 특정 웹 기술 (asp.net webforms viewstate, 당신을보고 있습니다)은 클라이언트 웹 브라우저와 많은 정보를 캐시 (종류)로 푸시하는 것을 좋아합니다. 이 로컬 LAN 연결 인 경우는 모든 나쁜 (그리고 asp.net의 웹 양식의 방어이 시간의 대부분 사실이다)하지만, 공용 인터넷에서이 절대적으로 할 수 죽이고 , 성능을 종종이 밀어 오프 더 나은이되도록 대신 데이터베이스 나 로컬 디스크에 연결하십시오.


0

개인적으로 고려해야 할 몇 가지 요소가 있다고 생각합니다. 예를 들어, 로컬로 액세스하는 메모리 또는 디스크와 네트워크를 통해 액세스하는 메모리 또는 디스크의 속도는 어느 정도입니까? 원격 데이터가 매우 빠른 SSD에 있고 기가비트 네트워킹보다 엔드 투 엔드보다 빠른 경우 큰 스트리밍 파일의 경우 원격이 더 빠를 수 있습니다.

그러나 작은 단위의 데이터에 무작위로 액세스하고 네트워크에 결함이 없거나 많은 홉이 있고 액세스하는 것보다 더 많은 경우 로컬 캐시가 거의 100 개의 기계식 디스크 드라이브에서 훨씬 빠릅니다. % 시간의. 그러나 흥미로운 점을 제시하고 네트워크 속도가 계속 증가하면 로컬 스토리지가 얼마나 오래 필요할까요?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.