Що не так з моєю швидкістю в 4K? Чому це так повільно? Або це повинно бути таким?
Це швидкість у порядку? Чому я маю таку низьку швидкість у 4K?
Що не так з моєю швидкістю в 4K? Чому це так повільно? Або це повинно бути таким?
Це швидкість у порядку? Чому я маю таку низьку швидкість у 4K?
Відповіді:
Те, з чим ви стикаєтеся, є типовим для механічних жорстких дисків, і одна з головних переваг SSD: жорсткі диски мають жахливу ефективність випадкового доступу.
У CrystalDiskMark "Seq" означає послідовний доступ, тоді як "4K" означає випадковий доступ (в шматки 4 кБ за один раз, тому що одиничні байти були б надто повільними та нереальними 1 ).
Загалом, існує два різні способи доступу до файлу.
Послідовний доступ означає, що ви читаєте або записуєте файл більш-менш один байт за іншим. Наприклад, якщо ви переглядаєте відео, ви завантажуєте це відео від початку до кінця. Якщо ви завантажуєте файл, він завантажується і записується на диск від початку до кінця.
З точки зору диска, він бачить команди типу "блок читання №1, блок читання №2, блок читання №3, читання блоку байтів №4" 1 .
Випадковий доступ означає, що немає очевидного шаблону для читання чи запису. Це не повинно означати справді випадкових; це насправді означає "не послідовний". Наприклад, якщо ви запускаєте безліч програм відразу, їм потрібно буде прочитати багато файлів, розкиданих по вашому диску.
З точки зору диска, він бачить команди типу "блок читання № 56, блок читання № 5463, блок читання № 14, блок читання №14, блок читання №5"
Я пару разів згадував блоки. Оскільки комп'ютери мають такі великі розміри (1 Мб ~ = 1000000 Б), навіть послідовний доступ неефективний, якщо вам доведеться запитувати диск для кожного окремого байту - занадто багато балачки. На практиці операційна система одночасно запитує блоки даних з диска.
Блок просто діапазон байтів; Наприклад, блок №1 може бути байтами №1- # 512, блок №2 може бути байтами # 513- # 1024 і т. д. Ці блоки є величиною 512 байт або 4096 байтами, залежно від накопичувача. Але навіть після роботи з блоками, а не окремими байтами, послідовний доступ до блоку швидший, ніж випадковий блок-доступ.
Послідовний доступ, як правило, швидший, ніж випадковий доступ. Це тому, що послідовний доступ дозволяє операційній системі та накопичувачу передбачити, що буде потрібно далі, і заздалегідь завантажити великий шматок. Якщо ви попросили блоки "1, 2, 3, 4", ОС може здогадатися, що вам потрібно буде "5, 6, 7, 8" далі, тому він повідомляє диску "1, 2, 3, 4" , 5, 6, 7, 8 "за один раз. Аналогічно, накопичувач може зчитувати фізичну пам’ять за один раз, а не "шукати 1, читати 1,2,3,4, шукати 5, читати 5,6,7,8".
О, я згадав прагнення чогось. Механічні жорсткі диски мають дуже повільний час пошуку через те, як вони фізично розміщені: вони складаються з ряду важких металізованих дисків, що обертаються навколо, фізична зброя рухається туди-сюди, щоб прочитати диск. Ось відео відкритого жорсткого диска, де ви можете бачити крутяться диски та рухомі руки.
Зображення з http://www.realtechs.net/data%20recovery/process2.html
Це означає, що в будь-який час можна прочитати лише біт даних під головою в кінці руки. Дисководі потрібно чекати двох речей: йому потрібно дочекатися, коли рука перейде до правого кільця ("доріжки") диска, а також потрібно дочекатися, коли диск обернеться навколо, щоб необхідні дані знаходилися під зчитуванням голова. Це відомо як пошук 2 . І прядіння, і рухома зброя потребують фізичного часу для переміщення, і їх не можна значно прискорити, не ризикуючи пошкодити.
Зазвичай це займає дуже багато часу, набагато довше, ніж фактичне читання. Ми говоримо> 5 мс просто для того, щоб дістатися до запитуваного байту, а фактичне зчитування байту складає в середньому приблизно 0,00000625 мс за послідовне читання байтів (або 0,003125 мс на блок 512 В).
З іншого боку, випадковий доступ не має такої переваги передбачуваності. Отже, якщо ви хочете прочитати 8 випадкових байтів, можливо, з блоків "8,34,76,996,112,644,888,341", диск повинен перейти "шукати до 8, читати 8, шукати34, читати 34, шукати to76, читати 76, ..." . Зауважте, як це потрібно шукати знову для кожного блоку? Замість середнього 0,003125 мс на послідовному блоці 512 В, тепер це середнє значення (5 мс шукати + 0,003125 мс читати) = 5,003125 мс на блок. Це багато-багато разів повільніше. Насправді в тисячі разів повільніше.
На щастя, зараз у нас є рішення: 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
(і відповідно змінити зразок). Привід шукає 4k частину (яку можна далі розсипати на фрагмент 512 байт, але не нижче цього. Він не шукає між кожними байтами! Він шукає між кожними блоками, якщо наступний блок не знаходиться позаду (що трапляється багато на роздроблені диски) І шукати (рухати головою навколо тарілки і чекати, коли блок пройде під ним) - це те, що забирає дуже багато часу (кілька мілісекунд)
Як уже вказувалося в інших відповідях, "4K" майже напевно відноситься до випадкового доступу в блоки розміром 4 KiB.
Щоразу, коли жорсткий диск (не SSD) запитується для читання або запису даних, виникають дві значні затримки:
Обидва вони мають відносно постійну кількість часу для будь-якого даного накопичувача. Шукати затримки - це функція того, наскільки швидко можна перемістити голову і наскільки далеко її потрібно перемістити, а затримка обертання - це функція того, наскільки швидко обертається блюдо. Більше того, вони не сильно змінилися за останні кілька десятиліть. Виробники, які фактично використовували середній час пошуку, наприклад, в рекламі; вони в значній мірі перестали це робити, коли в районі було мало або зовсім не було розвитку. Жоден виробник, особливо в умовах високої конкуренції, не хоче, щоб їх продукція виглядала не краще, ніж продукція конкурентів.
Типовий настільний жорсткий диск обертається зі швидкістю 7200 об / хв, тоді як типовий привід ноутбука може обертатися зі швидкістю близько 5000 об / хв. Це означає, що щосекунди він проходить загалом 120 обертів (настільний привід) або приблизно 83 обороту (привід ноутбука). Оскільки в середньому диску потрібно буде обертати пів оберта, перш ніж бажаний сектор пройде під голову, це означає, що ми можемо очікувати, що диск зможе обслуговувати приблизно вдвічі більше запитів вводу / виводу за секунду, якщо вважати, що
Таким чином, ми повинні очікувати, що ми зможемо виконати з порядком 200 вводу-виводу за секунду, якщо дані, до яких запитується доступ (для читання чи запису), фізично локалізовані фізично, внаслідок чого обмежувальний чинник є затримкою обертання. У загальному випадку, ми очікуємо, що накопичувач зможе виконувати з замовленням 100 вводу-виводу в секунду, якщо дані будуть розповсюджені по тарілці або тарілках, що вимагає значного пошуку та спричинення затримки запиту як обмежувальний фактор . З точки зору зберігання, це " IOPSпродуктивність "жорсткого диска; ця, а не послідовна продуктивність вводу-виводу, як правило, є обмежуючим фактором у реальних системах зберігання даних (Це велика причина, чому SSD-диски настільки швидше використовувати: вони усувають затримку обертання, і значно скорочують затримку пошуку, оскільки фізичний рух голови читання / запису стає пошуком таблиці в таблицях шарів флеш-відображення, які зберігаються в електронному вигляді.)
Записи, як правило, повільніше, коли в ньому йде флеш кешу. Зазвичай операційні системи та жорсткі диски намагаються змінити порядок випадкових записів, щоб перетворити випадкові введення-виведення в послідовний ввід / вивід, де це можливо, для підвищення продуктивності. Якщо є явний бар'єр для змивання або запису кешу , ця оптимізація виключається з метою забезпечення того, щоб стан даних у постійному сховищі відповідав тому, що очікує програмне забезпечення. В основному ті ж міркування застосовуються під час читання, коли немає жодного кеш-диска, або тому, що такого немає (рідкість сьогодні в системах настільних ПК), або тому, що програмне забезпечення навмисно обходить його (що часто робиться під час вимірювання продуктивності вводу-виводу). Обидва вони знижують максимальну потенційну продуктивність IOPS до більш песимістичного випадку, або 120 IOPS для 7200 об / хв.
Які так точно майже точно відповідають вашим цифрам. Випадкові введення / виведення з невеликими розмірами блоків є абсолютною вбивцею для обертових жорстких дисків, тому також є відповідним показником.
Що стосується суто послідовного вводу / виводу, пропускна здатність у діапазоні 150 Мб / с зовсім не є розумною для сучасних обертових жорстких дисків. Але дуже мало реального вводу / виводу є строго послідовним, тому в більшості ситуацій чисто послідовне виконання вводу / виводу стає швидше академічним вправою, ніж показником ефективності в реальному світі.
4K відноситься до випадкових вводу-виводу . Це означає, що диск пропонується отримати доступ до невеликих блоків (розміром 4 КБ) у випадкових точках у тестовому файлі. Це слабкість жорстких дисків; можливість доступу до даних в різних регіонах диска обмежена швидкістю, з якою обертається диск, і тим, наскільки швидко можуть рухатися голови читання-запису. Послідовні введення / виведення , де доступ до послідовних блоків, доступні набагато простіше, оскільки привід може просто читати або записувати блоки під час обертання диска.
Твердотільний накопичувач (SSD) не має такої проблеми з випадковим входом / виводом, тому що все, що потрібно зробити, це шукати, де дані зберігаються в базовій пам'яті (як правило, NAND flash, може бути 3D XPoint або навіть DRAM) і читати або записати дані у відповідне місце. SSD повністю електронні і не потребують очікування на обертовому диску або рухомій голові для читання-запису для доступу до даних, що робить їх набагато швидшими, ніж жорсткі диски в цьому плані. Саме тому оновлення до SSD різко підвищує продуктивність системи.
Побічна примітка: послідовна продуктивність вводу / виводу на SSD часто набагато вище, ніж на жорсткому диску. У типовому SSD є кілька NAND-мікросхем, підключених паралельно до контролера флеш-пам’яті, і вони можуть отримати доступ до них одночасно. Шляхом поширення даних по цих мікросхемах досягається макет диска, схожий на RAID 0, що значно підвищує продуктивність. (Зверніть увагу, що багато новіших дисків, особливо більш дешевих, використовують тип NAND під назвою TLC NAND, який, як правило, повільно записує дані. Диски з TLC NAND часто використовують невеликий буфер швидшого NAND, щоб забезпечити більш високу продуктивність для менших операцій запису, але можуть різко сповільнити, коли буфер буде заповнений.)