< /p>
SSD 에 대한 일반적인 인식은 랜덤 읽기, 순차 읽기, 순차 쓰기는 빠르지만 랜덤 쓰기는 느리다는 것이다. 현재 발표되고 있는 많은 제품 성능 지표 데이터와 테스트 결과를 보면 그렇습니다. 일반적으로 SSD 작은 블록의 랜덤 읽기 성능은 수만 ~ 10 만 개에 이를 수 있지만, 작은 블록의 랜덤 쓰기 성능은 일반적으로 3 ~ 5 천 개에 불과하며, 한 수준씩 차이가 난다. < /p>
나는 이 인식이 완전히 정확하지 않다고 생각한다. SSD 는 매우 복잡한 하드웨어이며 지속적으로 개선되고 있습니다. 세대 제품의 성능 성능은 종종 크게 다릅니다. SSD 의 성능 성능은 IO 운영 모드에 따라 크게 다를 수 있습니다. 성능 성능은 "3 ~ 1 ~ 1 ~ 1" 으로 간단히 설명할 수 없습니다. SSD 를 잘 사용하려면 원칙적으로 SSD 에 대한 깊은 이해가 있어야 다양한 애플리케이션 모드에서 SSD 의 성능을 예측할 수 있습니다. 특히 향후 SSD 의 성능 특성이 어디로 향할지 예측할 수 있습니다. < /p>
SSD 의 가장 기본적인 하드웨어는 읽기 및 쓰기 캐시, LBA-HBA 매핑, wear-leveling, garbage collection 등 다양한 기능을 제공하는 병렬 실행 가능한 NAND Flash 스택입니다. 컨트롤러는 매우 복잡하고 각 제조업체의 구현도 다르지만, 기본적으로 잘 설계된 SSD 가 기본 NAND Flash 성능을 더 잘 발휘할 수 있어야 한다고 생각할 수 있습니다. 따라서 기본 NAND Flash 성능 특성을 이해하는 것이 중요합니다. 위키피디아와 "SSD 성능" 논문에 따르면, NAND Flash 의 기본 성능 지표는 다음과 같습니다.
4k page read latency: 25us
4k page write latency: 200us ; < /p>
이 기본 하드웨어의 성능 지표를 기준으로 간단한 계산을 수행합니다.
256k block read latency: 1.6ms, 단일 NAND 입자 읽기 대역폭: 160mb/s
256k block write latency 단일 NAND 입자 쓰기 대역폭: 20MB/s
빈 블록 재활용: 1.5ms
거의 꽉 찬 (50 개 유효 페이지) 블록 재활용: (25 uu < /p>
첫째, 기본 하드웨어 지표로 볼 때 쓰기 성능은 읽기 성능의 1/8 에 불과하지만, 현재 SSD 제품 순서는 순차 읽기보다 훨씬 느린 성능을 기록하고 있습니다. Intel X-25/320 이든 Fusion IO 이든 순차 쓰기 성능은 1/8 이 아닌 순차 읽기보다 10-20 낮았다. 이 문제를 좀 더 자세히 살펴보면 SSD 의 대역폭이 이미 인터페이스의 제한에 도달했기 때문입니다. 예를 들어, Intel 320 시리즈의 경우 순차 읽기 270MB/s, 순차 쓰기 220MB/s 가 있는데, 이는 주로 이 SSD 를 잇는 SATA 3 의 대역폭 제한이 375MB/s 에 불과하고 메모리 복사가 더해지면 200 MB/s 가 전체 하드웨어 시스템의 한계에 다다랐기 때문입니다. SSD 그러나 향후 인터페이스 대역폭이 크게 향상되어 병목 현상이 되지 않을 경우 SSD 순차 읽기 및 쓰기 간의 성능 차이가 두드러질 수 있습니다. < /p>
둘째, 랜덤 쓰기 또는 순차 쓰기, SSD 는 Copy on Write 메커니즘을 채택하고 결국 NAND Flash 에 순차적 쓰기.
그럼 왜 자주 무작위로 쓰는 성능이 순차 쓰기보다 훨씬 떨어지나요? 여기서 주요 차이점은 페이지의 고장 모드에 있다. 임의 쓰기는 임의 페이지를 무효화할 수 있으며, 순차적 쓰기는 큰 연속 페이지를 무효화할 수 있습니다. 페이지가 무작위로 만기될 때 블락을 회수하려면 블락의 유효 페이지를 읽어서 새 위치에 쓴 다음, erase block, 그리고 연속된 대형 페이지가 실패할 경우, erase 를 원하는 블락에 유효한 페이지가 없기 때문에 새 위치에 복사하는 과정이 없어진다. < /p>
애플리케이션의 입출력 액세스가 최고점과 저조한 경우, 낮은 지점에서 가비지 수집을 완료할 수 있다면 erase 의 성능 영향은 더 이상 고려하지 않을 것이며, 이 경우 임의 쓰기 처리 속도는 순차 쓰기와 비슷해야 합니다. 반면 erase 가 쓰기 성능에 미치는 영향은 재활용할 블록의 유효 페이지 수에 따라 크게 달라집니다. 빈 블락을 회수하는 것과 거의 가득 찬 블락을 회수하는 데 걸리는 시간이 매우 크다는 것을 알 수 있다. 이는 왜 인텔 SSD 에 Over Provisioning 을 많이 사용할수록 임의 쓰기 성능이 높아지는지 설명할 수 있습니다. 인텔 320 시리즈 300G 계열, 180G 만 남기고 120G 만 오버프로비저닝으로 사용하면 랜덤 쓰기 IOPS 가 300G 를 사용하는 1400/s 에서 6600/s 로 증가합니다. 응용 프로그램이 8G 만 사용하는 경우 임의 쓰기 IOPS 는 23000/s 까지 더 높을 수 있습니다. 따라서 SSD 임의 쓰기의 성능이 반드시 나쁘지는 않습니다. 유휴 상태일 때 가비지 수집을 완료하거나 소량의 데이터를 적용할 수 있는 경우 임의 쓰기 성능은 임의 읽기와 큰 차이가 없어야 합니다. < /p>
하지만 기본적인 이론적 데이터 계산에 따르면 erase 가 Intel 320 시리즈처럼 성능에 미치는 영향은 10 배 이상 커서는 안 됩니다. 거의 꽉 찬 블록을 회수하는 데 걸리는 시간은 Block 을 쓰는 것과 비슷하며 이론적으로는 성능 차이의 절반밖에 안 됩니다. 여기에는 인텔 SSD 의 하드웨어 내부 IO 병렬 처리가 좋지 않기 때문일 수 있습니다. 예를 들어 가비지 수집이 모든 NAND Flash 병렬로 진행될 수 없거나 컨트롤러 알고리즘이 충분하지 않기 때문입니다. Fusion IO 와 같은 하이엔드 하드웨어는 랜덤 읽기보다 랜덤 쓰기가 더 나쁘지 않습니다. 인텔이 아직 발표하지 않은 Ramsdale SSD 의 임의 쓰기 IOPS 도 5 만 개가 넘을 것으로 예상되며, 앞으로 SSD 기술이 발전함에 따라 기본 NAND Flash 성능에 근접할 것으로 예상되며 임의 쓰기와 순차 쓰기 간의 성능 차이가 크게 감소할 것으로 예상됩니다. < /p>
향후 SSD 는 기본 하드웨어 NAND Flash 의 성능 특성 (예: < /p>
1, 순차 쓰기 또는 임의 쓰기, 순차 읽기 또는 임의 읽기보다 성능이 훨씬 떨어지며 거의 한 수준에 이를 수 있습니다. < /p>
2, 임의 쓰기 성능과 순차 쓰기 성능 사이에는 약 2 ~ 3 배 정도의 차이만 있을 수 있습니다. < /p >