>

내가있는 USB 키 ( PQI U822V-Speedy 32G )가 있습니다 리눅스에서 더 빠르지 않은 벤치 마크를 시도했다. 쓰기 대역폭을 테스트하고 있습니다.

와이즈 위즈  원시 파티션에서

2048 섹터에서 시작하여 파티션을 생성 한 다음 4GB의 순차적 쓰기를 수행했습니다 :

dd

~ 22MB/s를 얻습니다.

나는 또한 몇 가지 dd if=/dev/zero of=/dev/sdb1 bs=1M count=4096 를 시도  위의 것과 같이 병렬로 실행하지만 dd  그리고 count=1024  드라이브의 다른 영역에 쓸 수 있습니다. 같은 결과입니다.

와이즈 위즈  파일 시스템에서 그러나 seek= 를 포맷하면   dd 가있는 파티션  또는 sdb1 , 큰 파일을 복사하십시오 (실제 또는 ext4 ) )와 같이 :

NTFS

제조자가 광고 한대로 66MB/s를 초과합니다. 물론 나는 /dev/zero 를 고려  복사 직후의 기간.

왜 이렇게 큰 성능 차이가 있습니까?

time dd if=/dev/zero of=/media/USBKEY/file.bin bs=1M count=4096 ; time sync
  • 답변 # 1

    이제 다시 보니, 이것이 하드 드라이브가 아니라 USB 키 (플래시 드라이브)라고 말한 것을 깨달았습니다. 플래시 메모리는 큰 블록에서만 지울 수 있으며 개별 섹터는 먼저 지우지 않고 (그리고 전체 블록 안에있는) 전체 섹터를 지울 수 없습니다. 소프트웨어는 언제든지 디스크에서 원하는 위치에 쓸 수 있기를 기대하기 때문에 디스크에는 지우기를 투명하게 처리 할 수있는 변환 논리가 있습니다. 이것이 수행되는 방식은 쓰기 성능에 큰 영향을 미칩니다. 대부분의 장치는 순차적 쓰기를 매우 잘 처리하지만 임의 쓰기를 빨아들이는 대부분의 디스크에 알고리즘을 사용합니다. 디스크 시작 근처의 영역은 일반적으로 사전 포맷 된 FAT 파일 시스템에서 FAT에 의해 사용되며이 영역은 무작위로 자주 기록되므로이 영역에서는 순차적 쓰기 속도가 느리지 만 다른 알고리즘을 사용합니다. 무작위 쓰기는 끔찍합니다.

    따라서, 내가 코멘트로 추가 한 나의 초기 추측이 옳았다는 것을 확신한다. 파일 시스템에 쓸 때보고있는 것은 나머지 디스크의 성능이며 오프셋 0에 기록하면 지방 영역에 쓰는 것입니다. 수백 mb의 dd 대상을 찾는 경우 속도가 상당히 빨라야합니다.

  • 답변 # 2

    측정 결과는 커널 아키텍처로 설명 할 수 있습니다. 파일 시스템 액세스를 사용하면 가능한 모든 버퍼와 최적화로 커널의 잠재력을 최대한 활용할 수 있습니다. 특히 버퍼는 벤치 마크 속도를 높입니다 (커널은 100 % a_A_syncronous입니다). 장치 파일의 dd는이 중 많은 부분을 사용하지 않습니다.

  • 답변 # 3

    hdparm 를 사용해보십시오.  캐싱을 사용하거나 사용하지 않고 드라이브 성능을 벤치마킹하는 대신 :

    $ sudo hdparm -tT /dev/sda1
    /dev/sda1:
     Timing cached reads:   6314 MB in  2.00 seconds = 3157.61 MB/sec
     Timing buffered disk reads: 244 MB in  3.04 seconds =  80.26 MB/sec
    
    

  • 답변 # 4

    파일 시스템에 스파 스 파일을 작성하는 최적화로 인해 발생합니다.

    dd if=/dev/zero 를 할 때  원시 장치에 제로 블록은 실제로 디스크에 기록됩니다.

    그러나 파일에 파일을 쓸 때 파일 시스템은 데이터 쓰기를 무시하고 메타 데이터 만 저장합니다. 이로 인해 디스크에 기록되는 블록이 거의 없습니다. 파일은 아무것도 포함하지 않는 큰 구멍으로 볼 수 있습니다.

    이 방법으로 성능을 테스트하려면/dev/urandom을 입력 파일로 사용하십시오 ( dd if=/dev/urandom  ). 그러면 파일 시스템이 임의의 데이터를 디스크에 쓰게됩니다.

  • 이전 io redirection - Android에서/sdcard/whatsapp /의 모든 쓰기 및 읽기를/sdcard/shared /로 리디렉션하려면 어떻게합니까?
  • 다음 pkg를 사용하여 FreeBSD에서 PHP 설치를 수정하는 방법