4K 속도에 어떤 문제가 있습니까? 왜 그렇게 느려? 아니면 그런 식으로되어 있습니까?
그 속도 괜찮아? 4K에서 왜 그런 속도가 느린가요?
4K 속도에 어떤 문제가 있습니까? 왜 그렇게 느려? 아니면 그런 식으로되어 있습니까?
그 속도 괜찮아? 4K에서 왜 그런 속도가 느린가요?
답변:
당신이 겪고있는 것은 기계식 HDD의 전형적인 것이며 SSD의 주요 이점 중 하나입니다. HDD는 끔찍한 임의 액세스 성능을 가지고 있습니다.
CrystalDiskMark에서 "Seq"는 순차 액세스를 의미 하고 "4K"는 임의 액세스를 의미 합니다 (한 번에 4kB 단위로 단일 바이트가 너무 느리고 비현실적이므로 1 ).
파일에 액세스 할 수있는 방법은 크게 두 가지가 있습니다.
순차적 액세스는 파일을 1 바이트 씩 계속 읽거나 쓰는 것을 의미합니다. 예를 들어, 비디오를보고 있다면 비디오를 처음부터 끝까지로드 할 수 있습니다. 파일을 다운로드하는 경우 파일이 처음부터 끝까지 다운로드되어 디스크에 기록됩니다.
디스크 관점에서 "블록 # 1 읽기, 블록 # 2 읽기, 블록 # 3 읽기, 바이트 블록 # 4 읽기" 1과 같은 명령이 표시 됩니다.
랜덤 액세스는 읽기 또는 쓰기에 명확한 패턴이 없음을 의미합니다. 이것은 실제로 무작위를 의미 할 필요는 없습니다. 실제로는 "순차적이지 않음"을 의미합니다. 예를 들어, 한 번에 많은 프로그램을 시작하는 경우 드라이브 주위에 흩어져있는 많은 파일을 읽어야합니다.
드라이브 관점에서 "블록 # 56 읽기, 블록 # 5463 읽기, 블록 # 14 읽기, 블록 # 5 읽기"와 같은 명령이 표시됩니다.
블록을 몇 번 언급했습니다. 컴퓨터는 이러한 큰 크기 (1MB ~ = 1000000B)를 처리하므로 각 바이트마다 드라이브를 요청해야하는 경우 순차 액세스조차 비효율적입니다. 채터가 너무 많습니다. 실제로 운영 체제 는 한 번에 디스크에서 데이터 블록 을 요청합니다 .
블록 바이트 단지 범위이고; 예를 들어, 블록 # 1은 바이트 # 1- # 512, 블록 # 2는 바이트 # 513- # 1024 등일 수 있습니다.이 블록은 드라이브에 따라 512 바이트 또는 4096 바이트입니다. 그러나 개별 바이트가 아닌 블록을 처리 한 후에도 순차 블록 액세스는 임의 블록 액세스보다 빠릅니다.
순차적 액세스는 일반적으로 임의 액세스보다 빠릅니다. 순차적 액세스는 운영 체제 와 드라이브가 다음에 필요한 것을 예측하고 큰 청크를 미리로드 할 수 있기 때문 입니다. "1, 2, 3, 4"블록을 요청한 경우 OS는 다음에 "5, 6, 7, 8"을 원한다고 추측 할 수 있으므로 드라이브에 "1, 2, 3, 4를 읽도록 지시합니다. , 5, 6, 7, 8 "한 번에. 마찬가지로, 드라이브는 "1에서 1,2,3,4를 읽고, 5를 찾고, 5,6,7,8을 읽는"대신 물리적 저장소를 한 번에 읽을 수 있습니다.
아, 나는 무언가를 찾는 것을 언급했다. 기계식 HDD는 물리적으로 배치되는 방식으로 인해 탐색 시간이 매우 느립니다. 디스크를 읽기 위해 물리적 팔을 앞뒤로 움직이는 여러 개의 중금속 디스크로 구성되어 있습니다. 다음은 회전하는 디스크와 움직이는 팔을 볼 수있는 열린 HDD의 비디오입니다.
http://www.realtechs.net/data%20recovery/process2.html의 이미지
즉, 언제든지 팔 끝에있는 헤드 아래의 데이터 비트 만 읽을 수 있습니다. 드라이브는 두 가지를 기다려야합니다. 팔이 디스크의 오른쪽 고리 ( "트랙")로 이동할 때까지 기다려야하며 디스크가 회전 할 때까지 기다려야 데이터가 읽 히게됩니다. 머리. 이것은 탐색 2 로 알려져 있습니다 . 회전하는 팔과 움직이는 팔 둘 다 이동하는 데 물리적 인 시간이 걸리며, 피해를 입지 않고 크게 속도를 낼 수 없습니다.
일반적으로 실제 판독 시간보다 훨씬 오래 걸립니다. 우리는 요청 된 바이트가 사는 곳으로 가기 위해 5ms 이상을 말하는 반면, 바이트의 실제 읽기는 순차적 바이트 읽기 당 약 0.00000625ms (또는 512 B 블록 당 0.003125ms)까지 평균합니다.
반면에 랜덤 액세스는 예측 가능성의 이점이 없습니다. 따라서 블록 "8,34,76,996,112,644,888,341"에서 임의의 바이트 8 개를 읽으려면 드라이브를 "8로, 8을 읽고, 34를 찾고, 34를 읽고, 76을 찾고, 76을 읽고, ..."로 이동해야합니다. . 모든 단일 블록에 대해 어떻게 다시 검색해야합니까? 순차적 인 512 B 블록 당 평균 0.003125ms 대신, 이제는 블록 당 평균 (5ms 탐색 + 0.003125ms 판독) = 5.003125ms입니다. 그것은 여러 번, 느리게 진행됩니다. 실제로 수천 배는 느립니다.
다행히도 SSD 솔루션이 있습니다.
SSD ( 솔리드 스테이트 드라이브 )는 이름에서 알 수 있듯이 솔리드 스테이트 입니다. 그것은 움직이는 부분 이 없다는 것을 의미합니다 . 더욱이, SSD가 배치되는 방식 은 바이트의 위치를 찾을 필요가 없다는 것을 의미한다 (효과적으로 3 ). 이미 알고 있습니다. 이것이 SSD가 순차 액세스와 임의 액세스 사이의 성능 격차가 훨씬 적은 이유입니다.
여전히 차이가 있지만, 다음에 무엇이 올지 예측할 수없고 요청하기 전에 해당 데이터를 미리로드 할 수 없기 때문 입니다.
1 보다 정확하게, 효율성을 위해 LBA 드라이브는 512 바이트 (512n / 512e) 또는 4kB (4Kn)의 블록으로 처리됩니다. 또한 실제 프로그램은 한 번에 하나의 바이트 만 필요로하지 않습니다.
2 기술적으로, 탐색 은 팔 이동 만 참조합니다. 헤드 아래에서 데이터가 회전하기를 기다리는 것은 탐색 시간에 대한 회전 대기 시간입니다.
3 기술적으로, 룩 레벨링과 같은 다른 이유로 룩업 테이블이 있고 다시 매핑되지만 HDD와 비교할 때 완전히 무시할 수 있습니다 ...
Notice how it needs to look for every single byte?
바꾸 byte
으로 block
(그리고 그에 따라 exemple 변경). 드라이브는 4k 부분을 찾고 (이는 512 바이트 청크로 더 분산 될 수 있지만 이보다 낮지 않습니다. 모든 바이트 사이를 탐색하지 않습니다! 다음 블록이 바로 뒤에 있지 않으면 모든 블록 사이를 탐색합니다. 탐색 (머리를 플래터 주위로 옮기고 블록이 그 아래를 통과하기를 기다리는 것)는 매우 긴 시간 (몇 밀리 초)
다른 답변에서 이미 지적했듯이 "4K"는 크기가 4 KiB 인 블록의 임의 액세스를 거의 확실하게 나타냅니다.
SSD가 아닌 하드 디스크에 데이터를 읽거나 쓸 때마다 두 가지 중요한 지연이 발생합니다.
두 드라이브 모두 주어진 드라이브에 대해 비교적 일정한 시간입니다. 탐색 대기 시간은 헤드를 얼마나 빨리 움직일 수 있고 얼마나 멀리 움직여야하는지에 대한 함수이며 회전 대기 시간은 플래터가 얼마나 빨리 회전하는지에 따라 달라집니다. 무엇보다, 그들은 훨씬 지난 몇 년 동안 변경되지 않았습니다. 제조업체는 실제로 평균 검색 시간을 광고에 사용했습니다. 그들은 그 지역에 개발이 거의 없거나 전혀 없을 때 그 일을 거의 중단했습니다. 특히 경쟁이 치열한 환경의 제조업체는 경쟁 업체 제품보다 더 나은 제품을 원하지 않습니다.
일반적인 데스크탑 하드 디스크는 7200rpm에서 회전하는 반면, 일반적인 랩톱 드라이브는 약 5000rpm에서 회전 할 수 있습니다. 이는 매초 총 120 회 (데스크톱 드라이브) 또는 약 83 회 (랩톱 드라이브)를 거치는 것을 의미합니다. 이후 평균 원하는 분야 머리 아래에 전달하기 전에 디스크는 우리가 약 두 배 초당 많은 I / O 요청이 있다고 가정하는 디스크가 서비스 할 수있을 것으로 예상 할 수있는이 수단, 반 혁명을 회전해야합니다
따라서 (읽기 또는 쓰기를 위해) 액세스하도록 요청되는 데이터가 물리적으로 상대적으로 현지화되어 회전 지연이 제한 요인 인 경우 초당 200 I / O 정도의 속도로 수행 할 수 있어야합니다. 일반적으로 데이터가 플래터 또는 플래터에 분산되어 있으면 상당한 탐색이 필요하고 탐색 대기 시간이 제한 요인이되도록 드라이브가 초당 100 I / O 정도의 속도로 수행 될 수 있습니다. . 스토리지 측면에서 이는 " IOPS순차 I / O 성능이 아닌 하드 디스크의 성능 "은 일반적으로 실제 스토리지 시스템에서 제한 요소입니다. (SSD가 훨씬 더 빠른 이유는 SSD가 회전 대기 시간을 없애고 읽기 / 쓰기 헤드의 물리적 이동이 전자적으로 저장되는 플래시 매핑 계층 테이블에서 테이블 조회가되므로 탐색 대기 시간을 크게 줄입니다.)
캐시 플러시가 관련된 경우 일반적으로 쓰기 속도가 느려집니다. 일반적으로 운영 체제 및 하드 디스크는 임의 쓰기를 재정렬하여 가능한 경우 임의 I / O를 순차적 I / O로 전환하여 성능을 향상시킵니다. 명시 적 캐시 플러시 또는 쓰기 장벽 이있는 경우 영구 저장소의 데이터 상태가 소프트웨어가 기대하는 것과 일치하도록하기 위해이 최적화가 제거됩니다. 기본적으로 디스크 캐시가없는 경우 (데스크탑 스타일 시스템에서는 일반적이지 않음) 소프트웨어가 의도적으로 디스크를 우회하기 때문에 (I / O 성능을 측정 할 때 종종 수행됨) 기본적으로 동일한 추론이 적용됩니다. 두 가지 모두 최대 잠재적 IOPS 성능을보다 비관적 인 경우의 성능으로 낮추거나 7200rpm 드라이브의 경우 120 IOPS로 줄입니다.
숫자와 거의 정확히 일치하는 결과입니다. 블록 크기가 작은 랜덤 I / O는 회전식 하드 디스크의 성능을 저하시키는 요인 이므로 관련 메트릭스이기도합니다.
순차 순차 I / O의 경우 최신 회전식 하드 디스크의 경우 150MB / s 범위의 처리량이 전혀 합리적이지 않습니다. 그러나 실제 I / O는 거의 순차적이지 않기 때문에 대부분의 상황에서 순차 순차 I / O 성능은 실제 성능을 나타내는 것보다 학문적 연습이됩니다.
4K는 임의 I / O를 나타냅니다 . 이는 디스크가 테스트 파일 내의 임의의 지점에서 작은 블록 (4KB 크기)에 액세스하도록 요청 받고 있음을 의미합니다. 이것은 하드 드라이브의 약점입니다. 디스크의 여러 영역에서 데이터에 액세스하는 기능은 디스크가 회전하는 속도와 읽기 / 쓰기 헤드가 얼마나 빨리 이동할 수 있는지에 따라 제한됩니다. 연속 블록에 액세스하는 순차적 I / O 는 디스크가 회전 할 때 드라이브가 단순히 블록을 읽거나 쓸 수 있기 때문에 훨씬 쉽습니다.
솔리드 스테이트 드라이브 (SSD)는 데이터가 기본 메모리 (일반적으로 NAND 플래시, 3D XPoint 또는 DRAM 일 수 있음)에 저장된 위치를 찾고 읽기만하면되므로 임의 I / O에는 아무런 문제가 없습니다. 또는 적절한 위치에 데이터를 쓰십시오. SSD는 전적으로 전자적이며 회전 디스크 또는 이동하는 읽기 / 쓰기 헤드에서 데이터에 액세스하기 위해 기다릴 필요가 없으므로 하드 드라이브보다 훨씬 빠릅니다. 이러한 이유로 SSD로 업그레이드하면 시스템 성능이 크게 향상됩니다.
참고 : SSD의 순차적 I / O 성능은 종종 하드 드라이브보다 훨씬 높습니다. 일반적인 SSD에는 플래시 메모리 컨트롤러에 병렬로 연결된 여러 개의 NAND 칩이 있으며 동시에 액세스 할 수 있습니다. 이러한 칩에 데이터를 분산시킴으로써 RAID 0과 유사한 드라이브 레이아웃이 달성되어 성능이 크게 향상됩니다. (많은 최신 드라이브, 특히 저렴한 드라이브는 데이터를 쓸 때 속도가 느린 TLC NAND라는 NAND 유형을 사용합니다. TLC NAND가있는 드라이브는 종종 더 빠른 NAND의 작은 버퍼를 사용하여 작은 쓰기 작업에 더 높은 성능을 제공하지만 버퍼가 가득 차면 속도가 크게 느려집니다.)