hdd / ssd 벤치 마크에서 4k 읽기가 쓰기보다 느린 이유는 무엇입니까?


12

PC 드라이브의 속도를 테스트하는 데 사용할 수있는 몇 가지 벤치 마크 도구가 있습니다.

다음은 SATA SSD의 벤치 마크 예입니다.

  • 순차적 읽기 : 718.498 MB / s
  • 순차적 쓰기 : 777.414 MB / s
  • 랜덤 읽기 512KB : 160.541 MB / s
  • 랜덤 쓰기 512KB : 838.930 MB / s
  • 랜덤 읽기 4KB (QD = 1) : 26.985MB / s [6588.1 IOPS]
  • 랜덤 쓰기 4KB (QD = 1) : 135.603MB / s [33106.2 IOPS]
  • 랜덤 읽기 4KB (QD = 32) : 177.003MB / s [43213.6 IOPS]
  • 랜덤 쓰기 4KB (QD = 32) : 178.397MB / s [43554.0 IOPS]

m.2 SSD :

  • 순차 읽기 (Q = 32, T = 1) : 829.119 MB / s
  • 순차적 쓰기 (Q = 32, T = 1) : 677.645 MB / s
  • 랜덤 읽기 4KiB (Q = 32, T = 1) : 744.328MB / s [181720.7 IOPS]
  • 랜덤 쓰기 4KiB (Q = 32, T = 1) : 144.876MB / s [35370.1 IOPS]
  • 순차 읽기 (T = 1) : 785.600MB / s
  • 순차적 쓰기 (T = 1) : 789.973MB / s
  • 랜덤 읽기 4KiB (Q = 1, T = 1) : 56.585MB / s [13814.7 IOPS]
  • 랜덤 쓰기 4KiB (Q = 1, T = 1) : 170.449MB / s [41613.5 IOPS]

HDD :

  • 순차적 읽기 : 114.988 MB / s
  • 순차적 쓰기 : 111.043 MB / s
  • 랜덤 읽기 512KB : 39.260 MB / s
  • 랜덤 쓰기 512KB : 57.409 MB / s
  • 랜덤 읽기 4KB (QD = 1) : 0.546MB / s [133.4 IOPS]
  • 랜덤 쓰기 4KB (QD = 1) : 0.757MB / s [184.9 IOPS]
  • 랜덤 읽기 4KB (QD = 32) : 1.582MB / s [386.3 IOPS]
  • 랜덤 쓰기 4KB (QD = 32) : 0.700MB / s [171.0 IOPS]

모든 경우에 "Random Read 4KB Q1"은 쓰기보다 느리고 대부분의 경우 "QD32"와 반대입니다.

일부 포럼에서 사람들은 SSD 칩 구조에 대한 제한이 있다고 말하지만 일반적인 하드 드라이브가 동일한 동작을 나타내는 것처럼 다른 이유가 있습니까?!

답변:


9

TL; DR : SSD가 사용자에게 거짓말을하고 쓰기가 완료되기 전에 완료 되었기 때문입니다. 읽기를 위해 똑같은 것을 피할 수는 없습니다.

더 긴 버전의 답변은 쓰기 캐싱입니다.

QD1 사례로 시작하겠습니다. SSD는 데이터를 수신하고 드라이브의 로컬 캐시에 저장했지만 실제로 NAND에 쓰기 전에 쓰기를 완료된 것으로 OS에보고합니다. 실제로 NAND에 데이터를 쓰는 것이 상당히 느리기 때문에 큰 차이가 있습니다. 읽기의 경우 실제로 데이터를 다시 보내기 전에 NAND에서 데이터를 읽어야합니다 (이전에 읽은 후에도 여전히 캐시에 저장하지 않는 한 무작위 읽기의 경우는 거의 없습니다).

이것의 단점은 갑작스런 정전으로 인해 SSD에 기록 된 데이터의 데이터 손실이있을 수 있지만 아직 NAND에 만들지는 않았다는 것입니다. 일부 엔터프라이즈 SSD에는 갑작스러운 정전시 캐시에 데이터를 NAND에 쓰는 데 충분한 전력을 저장하는 수퍼 커패시터가 포함되어 있습니다.

하드 드라이브도 쓰기 캐싱을 수행하기 때문에 동일한 내용이 표시됩니다. 그들은 그것에 대해 거의 공격적이지 않습니다. SSD가 왜 그렇게 공격적인가? 우리는 QD32 사례를 고려하기 위해 움직여야하는데, 이는 더욱 복잡하고 흥미 롭습니다.

QD32에서 임의 읽기가 일반적으로 임의 쓰기보다 빠르다는 것은 사실이 아닙니다. 어떤 SSD를 보느냐에 따라 다릅니다.

많은 SATA SSD에서 4k QD1 랜덤 읽기를 보면 모두 20-30MB / s 범위에서 수행되는 것 같습니다. 왜 그런 겁니까? 4k QD1 랜덤 읽기는 주로 처리량이 아니라 지연 시간에 관한 것입니다. 대기 시간은 세 부분에서 비롯됩니다.

  1. 드라이브에 지시하고 데이터를 전송하는 SATA / AHCI의 인터페이스 대기 시간.
  2. 컨트롤러 자체는 수신 한 데이터 및 명령으로 수행 할 작업을 파악해야합니다.
  3. 실제로 NAND 다이에서 데이터를 읽거나 쓰는 데 걸리는 시간.

1. 또는 3.는 오랜 시간 동안 크게 바뀌지 않았으므로 1k QD1 임의 읽기는 크게 변경되지 않았습니다.

최근 SATA / AHCI에서 PCIe / NVMe로 SSD를 이동함에 따라 대기 시간이 1로 크게 단축되었습니다. 따라서 특정 m.2 및 PCIe SSD가 최근 여기에서 크게 개선되었습니다.

SSD 컨트롤러가 대기 시간을 크게 지원하기 위해 수행 할 수있는 한 가지 방법은 여러 NAND 다이에 병렬로 읽거나 쓰는 것입니다.이 방식으로 대부분의 대기 시간 3을 마스킹 할 수 있습니다. NCQ로 QD32 4k 랜덤 읽기를 수행하는 경우 SSD는 읽기 서비스를 제공 할 수 있습니다 순서가 잘못되어 가능한 한 많은 NAND 다이에서 병렬로 읽는지 확인하십시오.

QD32 4k 랜덤 쓰기의 경우 SSD는 쓰기 결합이라고합니다. 많은 작은 쓰기 요청이 SSD 컨트롤러에 들어 오면 로컬로 캐시하고 충분한 쓰기 버퍼가 구축되면 컨트롤러는 적절한 크기의 청크로 분할하고 청크를 여러 NAND 다이에 병렬로 작성하여 NAND 대기 시간. 쓰기 결합의 또 다른 장점은 오늘날 대부분의 SSD가 4k보다 큰 페이지 크기 (읽거나 쓸 수있는 가장 작은 양)를 가지며 페이지 크기에 도달 할 때까지 쓰기를 결합하면 많은 쓰기 증폭을 피할 수 있다는 것입니다. SSD가 쓰기 캐싱에 매우 적극적이기 때문에 이러한 작업을 수행해야합니다.

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