Чому 4 к зчитування в показниках hdd / ssd повільніше, ніж пише?


12

Існує кілька інструментів для порівняння тестування швидкості ПК.

Ось орієнтовний приклад SATA SSD:

  • Послідовне зчитування: 718.498 Мб / с
  • Послідовне записування: 777.414 Мб / с
  • Випадкове читання 512 Кб: 160.541 Мб / с
  • Випадкове записування 512 Кб: 838,930 Мб / с
  • Довільне зчитування 4 КБ (QD = 1): 26,985 Мб / с [6588,1 IOPS]
  • Випадкове записування 4 КБ (QD = 1): 135,660 Мб / с [33106,2 IOPS]
  • Довільне зчитування 4 КБ (QD = 32): 177,003 Мб / с [43213,6 IOPS]
  • Випадкове записування 4 КБ (QD = 32): 178,397 МБ / с [43554,0 IOPS]

m.2 SSD:

  • Послідовне зчитування (Q = 32, T = 1): 829.119 Мб / с
  • Послідовне записування (Q = 32, T = 1): 677.645 Мб / с
  • Довільне зчитування 4KiB (Q = 32, T = 1): 744,328 Мб / с [181720,7 IOPS]
  • Випадкове записування 4KiB (Q = 32, T = 1): 144,876 Мб / с [35370,1 IOPS]
  • Послідовне зчитування (T = 1): 785.600 МБ / с
  • Послідовне записування (T = 1): 789,973 Мб / с
  • Довільне зчитування 4KiB (Q = 1, T = 1): 56,585 Мб / с [13814,7 IOPS]
  • Випадкове записування 4KiB (Q = 1, T = 1): 170,449 Мб / с [41613,5 IOPS]

Жорсткий диск:

  • Послідовне зчитування: 114,988 Мб / с
  • Послідовне записування: 111.043 Мб / с
  • Випадкове читання 512 Кб: 39,260 Мб / с
  • Випадкове записування 512 Кб: 57,40 МБ / с
  • Довільне зчитування 4 КБ (QD = 1): 0,546 Мб / с [133,4 IOPS]
  • Випадкове записування 4 КБ (QD = 1): 0,757 Мб / с [184,9 IOPS]
  • Довільне зчитування 4 КБ (QD = 32): 1,582 Мб / с [386,3 IOPS]
  • Випадкове записування 4 КБ (QD = 32): 0,700 Мб / с [171,0 IOPS]

У будь-якому випадку "Випадкове читання 4 КБ Q1" повільніше, ніж записувати, і в більшості випадків навпаки для "QD32".

На деяких форумах люди кажуть, що це обмеження щодо структури мікросхем SSD, але як звичайні жорсткі диски демонструють таку саму поведінку, це, здається, є іншою причиною ?!

Відповіді:


9

TL; DR: Це тому, що SSD бреше вам і каже, що запис зроблено до того, як це відбудеться. Він не може відійти від того ж, що і для читань.

Більш довга версія відповіді - кешування записів.

Почнемо зі справи QD1. SSD буде повідомляти про запис як закінчене в ОС, як тільки він отримав дані, і збереже їх у кеш-пам'яті локально на диску, але перед тим, як насправді записати його в NAND. Це робить велику різницю, оскільки насправді запис даних у NAND відбувається досить повільно. Для читання він насправді повинен прочитати дані з NAND, перш ніж він може надсилати їх назад (якщо тільки він не прочитав їх раніше і все ще має кеш, але це малоймовірно при випадкових зчитуваннях).

Мінус цього полягає в тому, що в умовах раптових втрат електроенергії можуть бути втрати даних, записані на SSD, але які ще не зробили це в NAND. Деякі фірмові SSD включають супер конденсатор, який зберігає достатню кількість енергії, щоб закінчити запис даних у кеш до NAND у разі раптових втрат електроенергії.

Ви бачите те ж саме для жорстких дисків, оскільки вони також роблять кешування запису. Вони просто не є настільки агресивними щодо цього. Чому SSD настільки агресивний? Щоб відповісти, що нам потрібно перейти до розгляду випадку QD32, який є і складнішим, і цікавішим.

Неправда, що ви говорите, що випадкові зчитування, як правило, швидше, ніж випадкові записи на QD32. Багато що залежить від того, на які конкретні SSD дивишся.

Якщо ви подивитеся на випадкові зчитування 4k QD1 на багатьох SATA SSD, вони, схоже, працюють у діапазоні 20-30 Мб / с. Чому так? Це тому, що випадкове зчитування 4k QD1 здебільшого стосується затримок, а не пропускної здатності. Затримка відбувається з трьох частин:

  1. Затримка інтерфейсу SATA / AHCI, що включає вказівку накопичувача, що робити і надсилання даних.
  2. Контролер сам повинен з'ясувати, що робити з отриманими даними та інструкціями.
  3. Час, необхідний для фактичного читання або запису даних у NAND die.

Ні 1., ні 3. сильно не змінилися протягом тривалого часу, і тому випадкові читання 1k QD1 також не сильно змінилися.

Нещодавній перехід на SSD з SATA / AHCI до PCIe / NVMe значно скоротив затримку 1., тому деякі SSD-диски m.2 та PCIe останнім часом демонструють великі вдосконалення.

Одне, що може зробити SSD-контролер, щоб значно допомогти з затримкою, - це читання або запис у кілька штампів NAND паралельно, і таким чином маскується більшість затримок 3. Якщо ви робите випадкове зчитування QD32 4k з NCQ, SSD може обслуговувати зчитування запити не в порядку і переконайтесь, що він читає з якомога більше паралельних штампів NAND.

Для QD32 4k випадково записує, що SSD робить щось, що називається комбінуванням запису. Коли багато маленьких запитів запису надходить до контролера SSD, кешує їх локально, і коли накопичений достатньо великий буфер записів, контролер розбиває його на шматки розмірів, які мають розмір досить великого розміру, і записує шматки до декількох штампів NAND паралельно, знову ж таки, щоб допомогти замаскувати маску Затримка NAND Ще однією перевагою комбінування записів є те, що на сьогоднішній день більшість SSD мають розмір сторінки (найменша кількість, яку можна прочитати чи записати), більше 4k, а комбінування записів, поки ви не досягнете розміру сторінки, допомагає уникнути великого розширення запису. Саме для цього потрібно, щоб SSD-диски були настільки агресивними у кешуванні записів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.