Tại sao ổ cứng của tôi quá chậm trong các bài kiểm tra tốc độ của 4K 4K?


46

Có gì sai với tốc độ của tôi ở 4K? Tại sao nó lại chậm như vậy? Hay là nó phải như thế?

Ảnh chụp màn hình điểm chuẩn

Tốc độ đó có ổn không? Tại sao tôi có tốc độ thấp như vậy ở 4K?


13
Đó là điều bình thường và được mong đợi. "4K" trong ngữ cảnh này có nghĩa là đọc / ghi ngẫu nhiên (trong các khối 4 kilobyte, do đó là "4K"), mà các ổ cứng cơ học thực hiện rất khủng khiếp. Đó là nơi bạn muốn có SSD. Xem ở đây để giải thích sâu hơn.
Bob

4Kb được sử dụng vì đó là kích thước điển hình của cụm đĩa và trên nhiều ổ cứng hiện đại, của khu vực thực tế (cấu trúc cấp thấp trên chính đĩa). Đó là, lượng dữ liệu nhỏ nhất có khả năng được truyền tại một thời điểm trong bất kỳ việc đọc hoặc ghi nào, ngay cả khi dữ liệu được yêu cầu nhỏ hơn. Điều thú vị là KHÔNG trả lời trên trang này cho đến nay thậm chí đề cập đến các cụm hoặc lĩnh vực.
thomasrutter

2
@thomasrutter Vì nó không liên quan đến câu trả lời. Phần quan trọng là thử nghiệm này liên quan đến tìm kiếm ngẫu nhiên. Nó không liên quan (ở một mức độ nào đó) có bao nhiêu dữ liệu được truyền và liệu đó có phải là bội số của kích thước cung của đĩa hay không; phần quan trọng là thử nghiệm chuyển một lượng dữ liệu tối thiểu để đo lường hiệu suất tìm kiếm.
Micheal Johnson

Là thử nghiệm này trên một phân vùng, hoặc trên toàn bộ đĩa? Các thử nghiệm ở cấp độ phân vùng có thể thực hiện kém hơn nhiều đối với truy cập 4K nếu bạn có một đĩa có các thành phần vật lý 4K nhưng các thành phần logic 1K và điều chỉnh sai ranh giới phân vùng thành các khu vực đứng.
Toby Speight

Các công cụ phân vùng hiện đại có xu hướng đảm bảo rằng các phân vùng bắt đầu và kết thúc trên một ranh giới ngành; thậm chí mức độ chi tiết 1MB là phổ biến hiện nay. Đã qua rồi thời của "63 cung 512 byte" cũ sẽ gây ra sự cố cho các khu vực gốc 4Kb.
thomasrutter

Câu trả lời:


85

Những gì bạn đang chạy vào là điển hình của ổ cứng cơ học, và một trong những lợi ích chính của SSD: Ổ cứng có hiệu suất truy cập ngẫu nhiên khủng khiếp .

Trong CrystalDiskMark, "Seq" có nghĩa là truy cập tuần tự trong khi "4K" có nghĩa là truy cập ngẫu nhiên (với khối lượng 4kB tại một thời điểm, bởi vì các byte đơn sẽ quá chậm và không thực tế 1 ).


Định nghĩa

Nhìn chung, có hai cách khác nhau mà bạn có thể truy cập vào một tệp.

Truy cập tuần tự

Truy cập tuần tự có nghĩa là bạn đọc hoặc ghi tệp nhiều hơn hoặc ít hơn một byte sau một byte khác. Ví dụ: nếu bạn đang xem video, bạn sẽ tải video từ đầu đến cuối. Nếu bạn đang tải xuống một tệp, nó sẽ được tải xuống và ghi vào đĩa từ đầu đến cuối.

Từ phối cảnh của đĩa, nó nhìn thấy các lệnh như "đọc khối # 1, đọc khối # 2, đọc khối # 3, đọc khối byte # 4" 1 .

Truy cập ngẫu nhiên

Truy cập ngẫu nhiên có nghĩa là không có mô hình rõ ràng để đọc hoặc viết. Điều này không có nghĩa là thực sự ngẫu nhiên; nó thực sự có nghĩa là "không tuần tự". Ví dụ: nếu bạn bắt đầu nhiều chương trình cùng một lúc, họ sẽ cần đọc nhiều tệp nằm rải rác xung quanh ổ đĩa của bạn.

Từ phối cảnh của ổ đĩa, nó nhìn thấy các lệnh như "đọc khối # 56, đọc khối # 5463, đọc khối # 14, đọc khối # 5"

Khối

Tôi đã đề cập đến các khối một vài lần. Vì các máy tính xử lý kích thước lớn như vậy (1 MB ~ = 1000000 B), ngay cả truy cập tuần tự cũng không hiệu quả nếu bạn phải hỏi ổ đĩa cho từng byte riêng lẻ - có quá nhiều trò chuyện. Trong thực tế, hệ điều hành yêu cầu các khối dữ liệu từ đĩa tại một thời điểm.

Một khối chỉ là một phạm vi byte; ví dụ: khối # 1 có thể là byte # 1- # 512, khối # 2 có thể là byte # 513- # 1024, v.v. Các khối này có kích thước 512 Byte hoặc 4096 Byte lớn, tùy thuộc vào ổ đĩa. Nhưng ngay cả sau khi xử lý các khối thay vì từng byte riêng lẻ, truy cập khối tuần tự nhanh hơn truy cập khối ngẫu nhiên.


Hiệu suất

Tuần tự

Truy cập tuần tự thường nhanh hơn truy cập ngẫu nhiên. Điều này là do truy cập tuần tự cho phép hệ điều hành ổ đĩa dự đoán những gì sẽ cần thiết tiếp theo và tải lên một đoạn lớn trước. Nếu bạn đã yêu cầu các khối "1, 2, 3, 4", HĐH có thể đoán bạn sẽ muốn "5, 6, 7, 8" tiếp theo, do đó, nó sẽ báo cho ổ đĩa đọc "1, 2, 3, 4 , 5, 6, 7, 8 "trong một lần. Tương tự, ổ đĩa có thể đọc hết bộ nhớ vật lý trong một lần, thay vì "tìm đến 1, đọc 1,2,3,4, tìm đến 5, đọc 5,6,7,8".

Oh, tôi đã đề cập đến việc tìm kiếm một cái gì đó. Các ổ cứng cơ học có thời gian tìm kiếm rất chậm vì cách chúng được bố trí vật lý: chúng bao gồm một số đĩa kim loại nặng quay xung quanh, với cánh tay vật lý di chuyển qua lại để đọc đĩa. Dưới đây là video về một ổ cứng mở, nơi bạn có thể thấy các đĩa quay và cánh tay di chuyển.

Sơ đồ nội bộ ổ cứng
Hình ảnh từ http://www.realtechs.net/data%20recovery/ Process2.html

Điều này có nghĩa là tại bất kỳ thời điểm nào, chỉ có thể đọc được bit dữ liệu dưới đầu ở cuối cánh tay. Ổ đĩa cần chờ hai điều: nó cần đợi cánh tay di chuyển sang vòng bên phải ("rãnh") của đĩa, và cũng cần đợi đĩa quay xung quanh để dữ liệu cần thiết nằm trong phần đọc cái đầu. Điều này được gọi là tìm kiếm 2 . Cả hai tay quay và cánh tay di chuyển đều mất thời gian vật lý để di chuyển, và chúng không thể được tăng tốc nhiều mà không có nguy cơ thiệt hại.

Điều này thường mất một thời gian rất rất dài, lâu hơn nhiều so với việc đọc thực tế. Chúng ta đang nói> 5ms chỉ để đến nơi có byte được yêu cầu, trong khi số đọc thực tế của byte trung bình khoảng 0,00000625ms trên mỗi byte đọc tuần tự (hoặc 0,003125ms trên mỗi khối 512 B).

Ngẫu nhiên

Mặt khác, truy cập ngẫu nhiên không có lợi ích dự đoán đó. Vì vậy, nếu bạn muốn đọc 8 byte ngẫu nhiên, có thể từ các khối "8,34,76,996,112,644,888,341", ổ đĩa cần phải đi "tìm đến 8, đọc 8, tìm đến 34, đọc 34, tìm đến 76, đọc 76, ..." . Chú ý cách nó cần tìm kiếm lại cho mỗi khối? Thay vì trung bình 0,003125ms trên mỗi khối 512 B liên tiếp, giờ đây trung bình là (5ms tìm kiếm + 0,003125ms đọc) = 5,003125ms mỗi khối. Điều đó chậm hơn rất nhiều lần. Thực tế, hàng ngàn lần chậm hơn.

SSD

May mắn thay, bây giờ chúng ta có một giải pháp: SSD.

Một ổ SSD, một ổ đĩa trạng thái rắn , đúng như tên gọi của nó, trạng thái rắn . Điều đó có nghĩa là nó không có bộ phận chuyển động . Hơn nữa, cách SSD được đặt ra có nghĩa là (có hiệu quả 3 ) không cần phải tìm vị trí của một byte; nó đã biết . Đó là lý do tại sao SSD có khoảng cách hiệu năng ít hơn giữa truy cập ngẫu nhiên và truy cập ngẫu nhiên.

Vẫn còn một khoảng cách, nhưng điều đó có thể được quy cho phần lớn là không thể dự đoán điều gì tiếp theo và tải trước dữ liệu đó trước khi nó được yêu cầu.


1 Chính xác hơn, với các ổ đĩa LBA được xử lý theo khối 512 byte (512n / 512e) hoặc 4kB (4Kn) vì lý do hiệu quả. Ngoài ra, các chương trình thực tế hầu như không bao giờ chỉ cần một byte mỗi lần.

2 Về mặt kỹ thuật, tìm kiếm chỉ đề cập đến du lịch cánh tay. Việc chờ đợi dữ liệu xoay dưới đầu là độ trễ quay trên đầu thời gian tìm kiếm.

3 Về mặt kỹ thuật, họ có tra cứu bảng và remap vì lý do khác, ví dụ như mặc san lấp mặt bằng, nhưng đây là những hoàn toàn không đáng kể so với một ổ cứng ...


@KamilMaciorowski Bây giờ tôi thực sự đang suy nghĩ lại về sự đơn giản hóa đó, bởi vì nó không thực hiện tính toán tìm kiếm + đọc thời gian của tôi. Ồ tốt Nó không quá quan trọng đối với các khái niệm.
Bob

Bạn nên sửa phần ngẫu nhiên Notice how it needs to look for every single byte?:: thay thế bytebằng block(và thay đổi mẫu cho phù hợp). Ổ đĩa tìm kiếm phần 4k (có thể được phân tán thành phần 512byte, nhưng không thấp hơn phần này. Nó không tìm kiếm giữa mỗi byte! Nó tìm kiếm giữa mọi khối nếu khối tiếp theo không ở ngay phía sau (xảy ra rất nhiều đĩa bị phân mảnh). Và tìm kiếm (di chuyển đầu xung quanh đĩa và chờ khối đi qua bên dưới nó) là những gì mất rất nhiều thời gian (vài mili giây)
Olivier Dulac

2
Một dienote nhỏ đến 4 kiB / 512B. 4kiB cũng là kích thước của trang trên, hầu như mọi thứ, vì vậy OS $ có khả năng đọc toàn bộ khối 4 kiB ngay cả khi trình điều khiển LBA đọc trong các khối 512 B. Ngoài ra, tôi không nghĩ rằng vấn đề là ổ cứng cần 'tìm' bất kỳ byte nào ngoài SDD hơn là nó cần xoay vật lý để điều chỉnh vị trí. Nếu bạn truy cập lại khối, bạn cần tìm kiếm lại vì ổ cứng đang quay liên tục. Bất kỳ ánh xạ lại khối nào cũng có khả năng là hiệu ứng phụ (và khối được ánh xạ lại thường chỉ sau khi bị hỏng dù sao tôi tin rằng để giảm thiểu tìm kiếm).
Maciej Piechotka

(Có thể là một ghi chú bên hoàn chỉnh - Tôi không chắc chắn về NAND / NOR nhưng ít nhất địa chỉ DDR cũng không hoàn toàn ngẫu nhiên như tên sẽ chỉ ra nhưng hoạt động trong 'cụm' địa chỉ. Trong hầu hết các trường hợp, đây là 64 B do nó là kích thước của dòng $ của hầu hết các CPU nhưng có thể lớn hơn nhiều đối với các ứng dụng khác.)
Maciej Piechotka

1
@OlivierDulac Tôi vẫn nghĩ việc giới thiệu các khối có khả năng gây nhầm lẫn, nhưng tôi đã cố gắng giải thích nó. Trả lời cập nhật.
Bob

3

Như đã được chỉ ra bởi các câu trả lời khác, "4K" gần như chắc chắn đề cập đến quyền truy cập ngẫu nhiên trong các khối có kích thước 4 KiB.

Mỗi khi một đĩa cứng (không phải SSD) được yêu cầu đọc hoặc ghi dữ liệu, có hai độ trễ đáng kể liên quan:

  • Tìm độ trễ, để đầu đọc / ghi "tìm kiếm" theo dõi vòng tròn chính xác (hoặc "hình trụ") trên đĩa, bao gồm mọi thời gian cần thiết để đầu ổn định trên rãnh và đồng bộ hóa với dữ liệu được lưu trên đĩa
  • Độ trễ quay, cho đĩa quay bên dưới đầu đọc / ghi để xoay sao cho phần mong muốn của rãnh ("sector") đi qua dưới đầu

Cả hai đều có thời lượng tương đối ổn định cho bất kỳ ổ đĩa nào. Tìm kiếm độ trễ là một chức năng của tốc độ di chuyển của đầu và tốc độ cần di chuyển của nó, và độ trễ quay là một chức năng của tốc độ quay của đĩa. Hơn nữa, họ đã không thay đổi nhiều trong vài thập kỷ qua. Các nhà sản xuất thực sự sử dụng để sử dụng thời gian tìm kiếm trung bình, ví dụ như trong quảng cáo; họ đã ngừng làm việc đó khi có rất ít hoặc không có sự phát triển nào trong khu vực. Không có nhà sản xuất nào, đặc biệt là trong môi trường cạnh tranh cao, muốn sản phẩm của họ trông không hơn gì so với các đối thủ.

Một đĩa cứng máy tính để bàn thông thường quay với tốc độ 7200 vòng / phút, trong khi ổ đĩa máy tính xách tay thông thường có thể quay với tốc độ khoảng 5000 vòng / phút. Điều này có nghĩa là mỗi giây, nó trải qua tổng cộng 120 vòng quay (ổ đĩa máy tính để bàn) hoặc khoảng 83 vòng quay (ổ đĩa máy tính xách tay). Vì trung bình , đĩa sẽ cần quay nửa vòng quay trước khi khu vực mong muốn đi qua đầu, điều này có nghĩa là chúng ta có thể mong đợi đĩa có thể phục vụ khoảng hai lần nhiều yêu cầu I / O mỗi giây, giả sử rằng

  • hoặc việc tìm kiếm được thực hiện trong khi đĩa đang quay (đây có thể là đặt cược an toàn cho các đĩa cứng hiện nay khi I / O liên quan đến tìm kiếm) độ trễ tìm kiếm không dài hơn độ trễ quay cho I / O cụ thể
  • hoặc đầu đã xảy ra trên xylanh chính xác, khiến ổ đĩa không cần tìm kiếm (đó là trường hợp đặc biệt ở trên, với độ trễ tìm kiếm bằng 0)

Vì vậy, chúng ta nên mong đợi có thể thực hiện theo thứ tự 200 I / O mỗi giây nếu dữ liệu được yêu cầu truy cập (để đọc hoặc viết) tương đối cục bộ, dẫn đến độ trễ quay là yếu tố giới hạn. Trong trường hợp chung, chúng tôi hy vọng ổ đĩa có thể thực hiện theo thứ tự 100 I / O mỗi giây nếu dữ liệu được trải ra trên đĩa hoặc đĩa, yêu cầu tìm kiếm đáng kể và khiến độ trễ tìm kiếm là yếu tố giới hạn . Về mặt lưu trữ, đây là " IOPShiệu suất "của đĩa cứng, điều này, không phải hiệu năng I / O tuần tự, thường là yếu tố hạn chế trong các hệ thống lưu trữ trong thế giới thực. (Đây là một lý do lớn tại sao SSD sử dụng nhanh hơn nhiều: chúng loại bỏ độ trễ quay và giảm đáng kể độ trễ tìm kiếm, vì chuyển động vật lý của đầu đọc / ghi trở thành một tra cứu bảng trong các bảng lớp ánh xạ flash, được lưu trữ điện tử.)

Các bài viết thường chậm hơn khi có một bộ đệm cache liên quan. Thông thường các hệ điều hành và đĩa cứng cố gắng sắp xếp lại việc ghi ngẫu nhiên để biến I / O ngẫu nhiên thành I / O tuần tự nếu có thể, để cải thiện hiệu suất. Nếu có một rào cản xóa hoặc ghi bộ đệm rõ ràng , việc tối ưu hóa này được loại bỏ nhằm mục đích đảm bảo rằng trạng thái của dữ liệu trong bộ lưu trữ liên tục phù hợp với những gì phần mềm mong đợi. Về cơ bản, lý do tương tự được áp dụng trong quá trình đọc khi không có bộ đệm đĩa liên quan, vì không tồn tại (ngày nay không phổ biến trên các hệ thống kiểu máy tính để bàn) hoặc do phần mềm cố tình bỏ qua nó (thường được thực hiện khi đo hiệu suất I / O). Cả hai đều giảm hiệu suất IOPS tiềm năng tối đa xuống trường hợp bi quan hơn, hoặc 120 IOPS cho ổ 7200 vòng / phút.

  • Với 100 IOPS với tốc độ 4 KiB mỗi I / O, chúng tôi có hiệu suất khoảng 400 KB / s.
  • Với 200 IOPS với tốc độ 4 KiB mỗi I / O, chúng tôi có hiệu suất khoảng 800 KB / s.

Mà chỉ xảy ra để phù hợp với số của bạn gần như chính xác. I / O ngẫu nhiên với kích thước khối nhỏ là một kẻ giết hiệu suất tuyệt đối cho các đĩa cứng quay, đó cũng là lý do tại sao nó là một số liệu có liên quan.

Đối với I / O hoàn toàn tuần tự, thông lượng trong phạm vi 150 MB / s hoàn toàn không hợp lý đối với các đĩa cứng quay hiện đại. Nhưng rất ít I / O trong thế giới thực là tuần tự nghiêm ngặt, do đó, trong hầu hết các tình huống, hiệu suất I / O tuần tự hoàn toàn trở thành một bài tập học thuật hơn là một chỉ dẫn về hiệu suất trong thế giới thực.


Đây là một câu trả lời tuyệt vời và đọc tốt hơn nhiều so với của tôi :) Chỉ cần một lưu ý nhỏ, ít nhất Seagate vẫn chỉ định độ trễ tìm kiếm trung bình trong bảng dữ liệu của họ . WD dường như không.
Bob

@Bob Cảm ơn bạn. Tôi thực sự có nghĩa là trong quảng cáo và tương tự; Tôi đã chỉnh sửa câu trả lời để làm rõ điều đó. Tôi nghĩ thật an toàn khi nói rằng rất ít người đọc các bảng dữ liệu, mặc dù làm như vậy có lẽ sẽ là một trải nghiệm tuyệt vời cho nhiều người ...
một CVn

2

4K đề cập đến I / O ngẫu nhiên . Điều này có nghĩa là đĩa đang được yêu cầu truy cập các khối nhỏ (kích thước 4 KB) tại các điểm ngẫu nhiên trong tệp thử nghiệm. Đây là một điểm yếu của ổ cứng; khả năng truy cập dữ liệu trên các vùng khác nhau của đĩa bị giới hạn bởi tốc độ quay của đĩa và tốc độ di chuyển của đầu đọc ghi. I / O tuần tự , nơi các khối liên tiếp đang được truy cập, dễ dàng hơn nhiều vì ổ đĩa có thể chỉ cần đọc hoặc ghi các khối khi đĩa đang quay.

Ổ đĩa trạng thái rắn (SSD) không có vấn đề như vậy với I / O ngẫu nhiên vì tất cả những gì nó cần làm là tìm kiếm nơi dữ liệu được lưu trữ trong bộ nhớ bên dưới (thường là flash NAND, có thể là 3D XPoint hoặc thậm chí DRAM) và đọc hoặc ghi dữ liệu tại vị trí thích hợp. SSD hoàn toàn bằng điện tử và không cần phải đợi trên đĩa quay hoặc đầu đọc ghi di chuyển để truy cập dữ liệu, điều này làm cho chúng nhanh hơn nhiều so với ổ cứng về vấn đề này. Vì lý do này, việc nâng cấp lên SSD làm tăng đáng kể hiệu năng hệ thống.

Lưu ý bên lề: hiệu năng I / O tuần tự trên SSD thường cao hơn nhiều so với trên ổ cứng. Một ổ SSD thông thường có một số chip NAND được kết nối song song với bộ điều khiển bộ nhớ flash và có thể truy cập chúng cùng lúc. Bằng cách truyền bá dữ liệu trên các chip này, bố trí ổ đĩa gần giống với RAID 0, giúp tăng hiệu năng rất nhiều. (Lưu ý rằng nhiều ổ đĩa mới hơn, đặc biệt là các ổ đĩa rẻ hơn, sử dụng loại NAND gọi là TLC NAND có xu hướng chậm khi ghi dữ liệu. Ổ đĩa với TLC NAND thường sử dụng bộ đệm nhỏ NAND nhanh hơn để cung cấp hiệu suất cao hơn cho các hoạt động ghi nhỏ hơn nhưng có thể làm chậm đáng kể khi bộ đệm đó đầy.)


IIRC, một số SSD NVMe thậm chí sử dụng bộ đệm DRAM.
timuzhti

1
Hầu hết làm. SSD không màn hình là loại tốt ở cấp thấp.
Journeyman Geek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.