NVMe ssd: Чому 4 к письмовій формі швидше, ніж читання?


51

У мене є накопичувач Samsung 960 Pro 512 Гб на NVMe з PCIe Gen.3x4. Я використовую драйвер Samsung NVMe 2.0.0.1607. SSD працює нормально. Однак я не розумію, чому запис 4k швидше, ніж читання 4k. Я використовую AS Benchmark:

введіть тут опис зображення

Це коефіцієнт 3! Щось не так (з моєю системою чи AS Benchmark) чи це нормально?


І все-таки набагато швидше, ніж обертовий жорсткий диск!
Зан Лінкс

Відповіді:


76

4 к читання збираються про найважче, що диск може зробити. Вони є одними з найменших розмірів блоків, які накопичувач зможе обробити, і немає можливості, щоб накопичувач попередньо завантажував велику кількість даних, адже вони, ймовірно, досить неефективні, якщо логіка навантаження наперед накопичувача має намір прочитати що-небудь більше 4 кб.

"Нормальне" читання дисків, швидше за все, буде більшим, ніж 4 кбіт, оскільки дуже мало файлів, які такі маленькі, і навіть файл сторінки, ймовірно, читається великими шматками, як це не дивно, щоб програма мала "лише" 4 КБ пам’яті вимкнено. Це означає, що будь-яке попереднє завантаження, яке намагається зробити диск, насправді карає пропускну здатність диска.

4K зчитування може пройти через буфер накопичувача, але "випадкова" частина тесту робить їх зовсім непередбачуваними. Контролер не дізнається, коли накопичувач може знову потребувати звичайнішого "великого" зчитування.

4K-записи, з іншого боку, можуть буферизуватися, чергатись і виписуватися послідовно ефективно. Буфер накопичувача може виконати велику роботу з лову і запису, для якої він був розроблений, а рівень зносності може навіть виділити всі ці 4K записи в один і той же блок стирання приводу, періодично перетворюючи те, що записує "випадковий" 4K запис щось ближче до послідовного запису.

Насправді я підозрюю, що це те, що відбувається в "4K-64Thrd", "64-Thrd", мабуть, використовує велику глибину черги , таким чином сигналізуючи диску, що у неї є велика кількість даних для читання або запису . Це запускає багато кластеризації записів і таким чином наближається до послідовної швидкості запису приводу. Ще є накладні витрати на виконання запису 4K, але тепер ви повністю розкриваєте потенціал буфера. У версії Read для тестування контролер накопичувача, тепер визнаючи, що він перебуває під дуже постійним великим навантаженням, припиняє попередню завантаження даних, можливо, уникає буфера і замість цього переходить у режим "необробленого" читання, знову наближаючись до послідовної швидкості зчитування.

В основному контролер накопичувача може щось зробити для того, щоб зробити запис 4K більш ефективним, особливо якщо кластер із них надходить в аналогічний час, тоді як він не може нічого зробити, щоб зробити один читання 4K більш ефективним, особливо якщо він намагається оптимізувати потік даних шляхом попереднього завантаження даних у кеш.


5
Я не є частиною самої відповіді, але я підозрюю, що "4K зчитування" (не 64Thrd версія) насправді демонструє розмір блоку читання блоку за замовчуванням як 32K або 64K. Це буде або 2600/50 = 52 (64K з деякими накладними витратами + оригінальний зчитування 4K), або 1200/50 = 24 (32K з деякими накладними витратами + 4K зчитування зменшує його).
Мокубай

16
Гарна відповідь загалом, але я не вірю, що "дуже мало файлів, які є такими маленькими". Насправді я підозрюю, що в більшості систем більшість файлів мають 4 кб або менше. Вони не займають більшість місця , але це інша справа.
панно

3
Найпростіша відповідь, мабуть, така: Якщо ви робите їх по одному, ви взагалі не можете перекривати показання, тому що навіть не дізнаєтесь, для чого блокується наступне читання, доки не повернете дані з попереднього прочитаного. Але ви можете повністю перекривати записи, оскільки ви можете отримати всі дані для наступного запису, поки ви ще працюєте над попереднім.
Девід Шварц

2
@hobbs Якщо взяти для прикладу NTFS, розмір кластера за замовчуванням становить 4K (або його декілька), що означає, що сама файлова система NTFS працює в 4K блоках, хоча самі файли та / або метадані менші. Так що менші файли не мають ніякої різниці. Для всіх намірів і цілей система Windows читає / записує в 4K блоки або множини цього.
Тонні

1
@hobbs: За допомогою NTFS ви, ймовірно, зможете прочитати такі невеликі файли безкоштовно (!). Невеликі файли зберігаються у самому записі каталогів, поряд з ім'ям файлу. Ви повинні вдарити досить конкретний розмір файлу, близький до 4 КБ, щоб мати фактичний файл на 4 КБ на диску.
MSalters

16

Інші відповіді вже пояснювали, чому може бути, що написання швидше, ніж читання; Я хотів би додати, що для цього приводу це абсолютно нормально, оскільки це підтверджується еталонами, які ви можете знайти в оглядах.

Огляд ArsTecnica

ArsTechnica переглянув накопичувач, як вашу версію (512 ГБ), так і 2 ТБ:

ArsTechnica (Цей графік не одразу видно в огляді, це 5-й у першій галереї. Ви повинні натиснути на нього)

Продуктивність цих двох моделей дуже схожа, і їх кількість виглядає як ваша: накопичувач може читати зі швидкістю 37 Мб / с і записувати при 151 Мб / с.

Огляд AnandTech

AnandTech також переглянув накопичувач: вони використовували модель 2 ТБ, усереднюючи результати тестів із глибиною черги 1, 2 та 4. Це графіки:

AnandTech 4K читати AnandTech 4K пишіть

Привід читає швидкість 137 Мб / с і записує 437 Мб / с. Кількість значно більша, ніж у вас, але це, мабуть, пов’язано з більшими глибинами черги. У будь-якому випадку швидкість запису в 3 рази перевищує швидкість читання, як у вашому випадку.

Огляд PC World

Ще один огляд від PC World : вони протестували версію 1 ТБ, а результати для 4K - 30 Мб / с для читання та 155 Мб / с для запису: Графік світу ПК Швидкість запису відповідає вашій, але тут диск ще повільніше при читанні. Результат - співвідношення п’ять до одного, а не три до одного.

Висновок

Відгуки підтверджують, що для цього накопичувача нормально, що швидкість запису для випадкових 4К набагато швидша, ніж швидкість читання: залежно від тесту, вона може бути навіть у 5 разів швидшою.

Ваш привід прекрасний. Немає підстав вважати, що вона несправна або що у вашій системі є проблеми.


8

Контролер SSD кеш записує у вбудовану NVRAM та передає його у відповідний час для прошивки носія. Таким чином, затримка запису - це затримка доступу до кешу, як правило, 20с. Навпаки, читачі подаються із засобів масової інформації з часом доступу 120-150us.


1

Розгортаючи відповідь Андрія, вам потрібно переглянути накладні витрати, перш ніж SSD зможе сигналізувати комп’ютеру, що операція завершена.

Для запису дані повинні бути просто записані у внутрішній кеш оперативної пам'яті. Пізніше він буде записаний у флеш-пам’ять разом з іншими блоками 4k та метаданими, необхідними для перевірки, виправлення помилок та їх пошуку.

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

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

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