Почему 4K чтения в HDD/ssd тестах медленнее, чем записи?

есть несколько эталонных инструментов, доступных для тестирования скорости привода ПК.

вот пример эталонного твердотельного накопителя SATA:

  • последовательное чтение: 718.498 MB / s
  • последовательная запись: 777.414 MB / s
  • случайное считывание 512KB: 160.541 MB/s
  • случайная запись 512KB: 838.930 MB/s
  • При Произвольном Чтении 4KB (QD=1):26.985 MB / s [ 6588.1 IOPS]
  • случайные Пишите 4KB (QD=1):135.603 МБ/с [ 33106.2 IOPS]
  • случайное считывание 4KB (QD=32) : 177.003 MB/s [ 43213.6 IOPS]
  • случайная запись 4KB (QD=32) : 178.397 MB/s [ 43554.0 IOPS]

м. 2 ССД:

  • последовательное чтение (Q= 32, T= 1): 829.119 MB/s
  • последовательная запись (Q= 32, T= 1): 677.645 MB/s
  • случайное считывание 4 КБ (Q= 32,T= 1) : 744.328 МБ/с [181720.7 IOPS]
  • случайная запись 4 КБ (Q= 32, T= 1): 144.876 МБ/с [ 35370.1 IOPS]
  • последовательное чтение (T= 1): 785.600 MB/s
  • последовательная запись (T= 1): 789.973 MB/s
  • случайное считывание 4киб (Q= 1, T= 1):56.585 MB / s [ 13814.7 IOPS]
  • случайная запись 4киб (Q= 1, T= 1):170.449 MB / s [ 41613.5 IOPS]

HDD:

  • последовательное чтение: 114.988 MB / s
  • Последовательная Запись : 111.043 MB / s
  • случайное считывание 512KB: 39.260 MB / s
  • случайная запись 512KB: 57.409 MB / s
  • случайное считывание 4KB (QD=1):0.546 МБ/с [ 133.4 IOPS]
  • случайная запись 4KB (QD=1):0.757 MB / s [ 184.9 IOPS]
  • случайное считывание 4KB (QD=32) : 1.582 MB/s [ 386.3 IOPS]
  • случайная запись 4KB (QD=32) : 0.700 MB/s [ 171.0 IOPS]

в каждом случае "случайное чтение 4KB Q1" медленнее, чем запись, и в большинстве случаи его противоположность для "QD32".

на некоторых форумах люди говорят, что это ограничение в отношении чип-структуры SSD, но, как обычно, жесткие диски показывают такое же поведение, кажется, другая причина?!

16
задан mgutt
07.05.2023 3:29 Количество просмотров материала 2490
Распечатать страницу

1 ответ

TL; DR: это потому, что SSD лжет вам и говорит, что запись сделана раньше, чем это. Это не может сойти с рук то же самое для чтения.

более длинная версия ответа-кэширование записи.

начнем с случая QD1. SSD сообщит о завершении записи в ОС, как только получит данные и сохранит их в кэше локально на диске, но до того, как он фактически запишет их в NAND. Это имеет большое значение, потому что на самом деле запись данных в NAND происходит довольно медленно. Для чтения он фактически должен прочитать данные из NAND, прежде чем он сможет отправить его обратно (если только он не прочитал его раньше и все еще имеет его в кэше, но это очень маловероятно при случайном чтении).

недостатком этого является то, что перед лицом внезапной потери мощности может быть потеря данных, записанных на SSD, но которые еще не сделали это на NAND. Некоторые SSD предприятия включают супер конденсатор который хранит достаточная сила закончить написать данные в тайнике к NAND в случае неожиданных потерь элекпропитания.

вы видите то же самое для жестких дисков, потому что они также делают кэширование записи. Они просто не так агрессивны по этому поводу. Почему SSD так агрессивен? Чтобы ответить на этот вопрос, нам нужно перейти к рассмотрению случая QD32, который является более сложным и более интересным.

Это не правда, что вы говорите, что случайные чтения, как правило, быстрее, чем случайные записи в QD32. Это зависит от того, какой именно SSD, на которые вы смотрите.

Если вы посмотрите на 4K QD1 случайных чтений на многих SSD SATA все они, кажется, выполняют в диапазоне 20-30 МБ / с. Почему так? Это за 4K QD1 случайно читает в основном про задержки, а не пропускная способность. Задержка происходит из трех частей:

  1. задержка интерфейса SATA / AHCI, которая включает в себя указание диску, что делать, и отправку данных.
  2. сам контроллер должен выяснить, что делать с данными и инструкциями получила.
  3. время, необходимое для фактического чтения или записи данных в NAND die.

ни один из 1. или 3. многое изменилось за долгое время, и именно поэтому случайные чтения 1K QD1 также не сильно изменились.

недавний переход на твердотельные накопители с SATA/AHCI на PCIe / NVMe значительно сократил задержку 1., поэтому некоторые m.2 и PCIe SSD в последнее время показывают большие улучшения здесь.

одна вещь, контроллер SSD может сделать значительно справка с задержкой читается или записывается в несколько плашек NAND параллельно, и таким образом маскирует большую часть задержки 3. Если вы делаете QD32 4K случайных чтений с NCQ SSD может обслуживать запросы чтения из строя и убедитесь, что он читает от столько NAND умирает параллельно, насколько это возможно.

для QD32 4K random пишет SSD делает что-то под названием write combining. Когда много малые пишут запросы приходят в регулятор SSD тайники они по месту и когда большой достаточно буфер записи создали контроллер разбивает его на куски красиво размера и записывает куски в несколько NAND умирает параллельно, снова, чтобы помочь замаскировать задержку NAND. Еще одним преимуществом комбинирования записи является то, что большинство твердотельных накопителей в настоящее время имеют размер страницы (наименьшее количество, которое может быть прочитано или записано) больше 4k, а объединение записей до тех пор, пока вы не достигнете размера страницы, помогает избежать большого усиления записи. Именно для того, чтобы сделать эти вещи, что SSD настолько агрессивны в кэшировании записи.

5
отвечен Mr Alpha 2023-05-08 11:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

advanced-format
benchmarking
hard-drive
ssd
Вверх