2014-12-07 1 views
2

아래의 명령을 사용하여 RAM 쓰기 속도를 측정했지만 RAM에 언급 된 것보다 훨씬 적은 양을 표시합니다. 내가 DDR3를 사용하기 화학식에 의해 이론적 인 최대 램 속도를 계산하고RAM의 쓰기 속도가 그 위에 언급 된 것보다 훨씬 적은 이유는 무엇입니까?

time dd if=/dev/zero of=tes bs=100M count=10 oflag=dsync && sync 
10+0 records in 
10+0 records out 
1048576000 bytes (1.0 GB) copied, 1.05167 s, 997 MB/s 

real 0m1.056s 
user 0m0.001s 
sys  0m1.053s 

은 다음과 같습니다

Max transfer rate= clock x no of bits/8 
DIMM module transfer 64 bits 
Max Theoretical Transfer Rate= clock x (64/8) 
=1333 x 8 
=10,664 MB/s 

그래서 이론적으로 예상되는 속도 10 GB/(약)의 그러나 실제로는 멀리오고해야한다 적게. 왜 아무도 말해 줄 수 없습니까? 미리 감사드립니다.

답변

0

글쎄, 많은 수의 작은 파일을 작성하면 대기 시간이 많이 걸리므로 실제 쓰기 속도가 느려집니다. 더 큰 파일을 RAM 메모리에 쓰면 더 높은 속도 수준을 얻을 수 있어야합니다.

+0

대용량 파일을 사용해도 속도는 매우 적습니다. 1GB에서 10GB까지의 파일을 시도하지만 모든 경우에 쓰기 속도는 1GB/s (근사치)가됩니다. – humanshu

+0

따라서 공급 업체에 따르면 쓰기 속도는 +/- 10000 Mb/초이며 약 10 Mb/초입니다. 그 맞습니까 ? – tvCa

+0

벤더 속도는 10GB/s가되어야하지만 위의 명령은 약 1GB/s입니다. – humanshu

0

IMO, 질문에 몇 가지 잘못된 가정이 있지만 어쨌든 재미 있습니다.

이 질문에서 제안 된 이론적 인 RAM 속도 계산은 다중 채널 아키텍처를 잊어 버린 것처럼 보입니다. I는 다음 식에 사용한다 : 사용자의 예에서

Max transfer rate = clock frequency * transfers per clock * interface width * number of interfaces 
        to be divided by 8 to get the results in bytes/s 

를 클록 주파수 = 667 MHz의 클럭 당 전송 = 2 인터페이스 폭 = 64 비트, 인터페이스의 수 (그것은 DDR-1333 메모리이기 때문에) 마더 보드 및 연결된 메모리 모듈의 수에 따라 다릅니다. 가장 최근의 PC는 2 개의 채널을 제공합니다. 최근 서버는 3 개 또는 4 개의 채널을 제공합니다. 인터페이스 수는 min (CPU 당 모듈 수, 채널 수)입니다.

DD3 메모리의 버스트 속도에 대한 일부 정보 : http://en.wikipedia.org/wiki/DDR3_SDRAM

지금,이 대역폭은 시간의 짧은 기간에 일반적으로 단지 지속 가능한 이론적 인 버스트 속도에 해당하는 것을 명심해야합니다. 또한 메모리 모듈 기능 만 규정하기 때문에 프론트 사이드 버스 및 CPU 메모리 컨트롤러에는 아무런 의미가 없습니다. 즉, 매우 빠른 메모리 모듈을 사용하더라도 느린 CPU가 메모리 대역폭을 포화시킬 수 없습니다. 병목 현상이 메모리 모듈에 항상있는 것은 아닙니다.

ccNUMA 컴퓨터 (2 소켓 또는 4 소켓이있는 대부분의 서버)에서 CPU 코어가 다른 CPU에 연결된 메모리 뱅크에있는 블록에 액세스해야하는 경우 상호 연결 버스 (QPI 또는 hypertransport)가 사용됩니다. 이 버스는 또한 병목 일 수 있습니다. DD는 파일 시스템 인터페이스를 사용하기 때문에

  • 그것은, 전용 메모리 전송을 행사하지 않습니다

    마지막으로, 나는 때문에 테스트 (사용 DD)의 방법은, 결함 생각합니다. 결과 파일이 메모리 파일 시스템 (예 : tmpfs 또는/dev/shm)에서 호스팅된다고 가정하더라도 dd는 시스템 호출을 수행하여 작업을 수행하므로 추가 비용이 발생합니다.

  • dd는 단일 스레드 프로세스입니다. 단일 코어로 전체 메모리 대역폭을 포화시키지 못할 수 있습니다. 여러 개의 소켓이있는 서버에서는 100 % 보장됩니다. 단일 소켓 시스템에서는 CPU 자체에 달려 있다고 생각합니다.

실제 메모리 대역폭을 실제로 계산하여 이론적 인 한계와 비교하려면이 목적으로 설계된 벤치 마크 프로그램을 사용하는 것이 좋습니다.예를 들어, the STREAM benchmark은 종종 지속 가능한 메모리 대역폭을 측정하는 데 사용됩니다.

+0

DDR3-1333에서는 초당 1.333G 전송입니다. "클럭 당 두 개의 전송"은 이미 포함되어 있으며 실제 클럭은 667MHz입니다. –

+0

감사합니다. Didier Spezia와 같은 통찰력을 제공합니다. :). – humanshu

+0

벤 보그가 맞습니다. DD3-1333 모듈의 주파수는 667MHz입니다. 헤즈 업에 감사드립니다! 내 게시물 고정 중 ... –

0

나는 무엇을 측정하고 있는지 잘 모르겠습니다. dd 명령은 빈 파일을 참조하지만 100MB를 생성하고 파일 tes에 10 번 복사하는 파일을 복사하는 것임을 이해합니다. 필자의 경우, vmstat 결과와 함께 다음 결과를 얻습니다. 합리적인 속도 인 84.8GB/초로 1GB 파일을 홈 폴더에 씁니다.

time dd if=/dev/zero of=tes bs=100M count=10 oflag=dsync && sync 
10+0 records in 
10+0 records out 
1048576000 bytes (1.0 GB) copied, 12.3723 s, 84.8 MB/s 

real 0m12.487s 
user 0m0.001s 
sys  0m0.862s 

VMSTAT 

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- 
r b swpd  free buff cache si so bi  bo in cs us sy id wa st 
0 0  0 30562108 38424 1418240  0 0  0  0 396 1285 2 1 98 0 0 
0 0  0 30570832 38424 1418240  0 0  0  0 294 2000 2 1 97 0 0 
1 0  0 30644600 38424 1346132  0 0  0  0 186 743 1 0 98 0 0 
0 1  0 31415984 38424 496640  0 0  0 49512 994 2778 1 3 86 10 0 
0 1  0 31416020 38428 496636  0 0  0 52888 1813 5080 1 1 85 13 0 
0 1  0 31311368 38440 599048  0 0  0 102472 2460 6781 1 2 86 12 0 
0 3  0 31206488 38452 701456  0 0  0 87580 2443 6891 1 2 85 12 0 
0 1  0 31100524 38464 803508  0 0  0 90976 2411 6840 1 2 86 12 0 
2 1  0 30995476 38472 906068  0 0  0 87256 2400 6791 1 2 86 12 0 
0 1  0 30890280 38484 1008336  0 0  0 87136 2427 6845 1 2 86 12 0 
0 1  0 30785324 38500 1111016  0 0  4 81592 2406 6696 1 2 85 12 0 
0 1  0 30785356 38508 1111080  0 0  0 77612 2579 7258 1 1 86 12 0 
0 1  0 30680108 38512 1213496  0 0  0 102400 2685 7511 1 2 85 12 0 
0 1  0 30575224 38524 1315560  0 0  0 102428 2446 6667 1 2 85 12 0 
0 1  0 30470072 38532 1417968  0 0  0 87484 2392 6725 1 2 86 12 0 
0 0  0 30572884 38544 1418312  0 0  0 15064 994 3239 1 1 92 6 0 
0 0  0 30572744 38544 1418312  0 0  0  0 128 414 1 0 99 0 0 
0 0  0 30573116 38544 1418312  0 0  0  0 160 466 1 0 99 0 0 
0 0  0 30573168 38544 1418312  0 0  0  0 112 361 1 0 99 0 0 

      Used up to 0.77 GB     total 1024400 KB 
1

dd은 RAM 속도가 아니라 파일 시스템 속도를 측정합니다./dev/shm (Linux 시스템에서는/dev/shm이 램 디스크 임)으로 dd 할지라도 파일 시스템 오버 헤드와 메모리 쓰기 처리량은 거의 측정하지 못합니다.

RAM 속도, Linux 명령 줄 또는 부트 인을 검사하는 메모리 테스트 도구가 있습니다. 내 시스템을 검사 할 때 boot-into memtest86을 사용합니다.

귀하의 "최대 대역폭"계산은 주소 및 사이클 시간을 고려하지 않습니다. 실제 최대 처리량은 줄어 듭니다. 내 DDR3 AMD 시스템에서는 4GB/초의 실제 읽기 처리량을 약간 상회합니다 (Intel은 더 높습니다).

관련 문제