Продуктивність Windows WriteFile (SSD проти HDD)?


1

Це питання пов'язане з наступним спостереженням:

https://social.technet.microsoft.com/Forums/exchange/en-US/09dd046e-8127-4550-8e26-5fba7a5a0743/performance-flaw-in-file-system-derease-writefile-throughput-towards-0? forum = winserverfiles

Це пов'язано з написанням одного великого файлу на диску з швидкою швидкістю.

Я намагаюся зробити щось подібне, створивши тест на те, як писати великий файл (мінімум 30 ГБ) на SSD (ОС - Windows 7). Основу тестового коду можна знайти за посиланням вище (ярлик тут: http://www.quicklz.com/write.c ).

Результати для створення одного файлу розміром 30 Гб можна побачити в наступній таблиці. Розмір шматка (записується на диск) вирівнюється на 256 Кб (за допомогою _aligned_malloc при фізичному розмірі сторінки 4096 KiB на NTFS). Також спробували збільшити розмір шматка (наприклад, 1 ГБ), але результати були подібними. Перший стовпець - це розмір файлу, створеного в кожній ітерації (близько 1 ГБ, що додаються кожен раз), а стовпці 2-5 - швидкості запису, що спостерігаються для жорстких дисків / SSD за допомогою "кешування / буферизації" WriteFile ) порівняно з випадком "без буферизації / кешування" (Див CreateFile прапор FILE_FLAG_NO_BUFFERING ). У випадку кешування Windows ОС вирішує, коли до FlushFileBuffers (не викликається явно).

+-----------+---------------+--------------+---------------+--------------+
| File Size | Win cache HDD | No cache HDD | Win cache SSD | No cache SSD |
+-----------+---------------+--------------+---------------+--------------+
| 1024 MiB  | 3282 MiB/s    | 205 MiB/s    | 2626 MiB/s    | 187 MiB/s    |
| 2048 MiB  | 2853 MiB/s    | 203 MiB/s    | 2626 MiB/s    | 383 MiB/s    |
| 3072 MiB  | 2861 MiB/s    | 207 MiB/s    | 3132 MiB/s    | 388 MiB/s    |
| 4097 MiB  | 2977 MiB/s    | 198 MiB/s    | 2626 MiB/s    | 393 MiB/s    |
| 5121 MiB  | 2986 MiB/s    | 206 MiB/s    | 2731 MiB/s    | 388 MiB/s    |
| 6145 MiB  | 3282 MiB/s    | 200 MiB/s    | 2626 MiB/s    | 199 MiB/s    |
| 7169 MiB  | 33 MiB/s      | 201 MiB/s    | 215 MiB/s     | 377 MiB/s    |
| 8194 MiB  | 2626 MiB/s    | 201 MiB/s    | 287 MiB/s     | 197 MiB/s    |
| 9218 MiB  | 2626 MiB/s    | 207 MiB/s    | 317 MiB/s     | 345 MiB/s    |
| 10242 MiB | 2853 MiB/s    | 197 MiB/s    | 215 MiB/s     | 181 MiB/s    |
| 11266 MiB | 3122 MiB/s    | 202 MiB/s    | 375 MiB/s     | 343 MiB/s    |
| 12291 MiB | 3282 MiB/s    | 202 MiB/s    | 368 MiB/s     | 209 MiB/s    |
| 13315 MiB | 187 MiB/s     | 199 MiB/s    | 194 MiB/s     | 362 MiB/s    |
| 14339 MiB | 145 MiB/s     | 201 MiB/s    | 329 MiB/s     | 356 MiB/s    |
| 15363 MiB | 140 MiB/s     | 205 MiB/s    | 125 MiB/s     | 195 MiB/s    |
| 16388 MiB | 135 MiB/s     | 195 MiB/s    | 220 MiB/s     | 360 MiB/s    |
| 17412 MiB | 126 MiB/s     | 204 MiB/s    | 279 MiB/s     | 196 MiB/s    |
| 18436 MiB | 124 MiB/s     | 195 MiB/s    | 269 MiB/s     | 103 MiB/s    |
| 19460 MiB | 129 MiB/s     | 199 MiB/s    | 242 MiB/s     | 104 MiB/s    |
| 20485 MiB | 137 MiB/s     | 203 MiB/s    | 189 MiB/s     | 107 MiB/s    |
| 21509 MiB | 128 MiB/s     | 198 MiB/s    | 120 MiB/s     | 116 MiB/s    |
| 22533 MiB | 134 MiB/s     | 202 MiB/s    | 109 MiB/s     | 107 MiB/s    |
| 23557 MiB | 137 MiB/s     | 194 MiB/s    | 112 MiB/s     | 113 MiB/s    |
| 24582 MiB | 135 MiB/s     | 204 MiB/s    | 107 MiB/s     | 102 MiB/s    |
| 25606 MiB | 131 MiB/s     | 194 MiB/s    | 122 MiB/s     | 101 MiB/s    |
| 26630 MiB | 130 MiB/s     | 200 MiB/s    | 151 MiB/s     | 108 MiB/s    |
| 27654 MiB | 139 MiB/s     | 199 MiB/s    | 108 MiB/s     | 117 MiB/s    |
| 28679 MiB | 130 MiB/s     | 206 MiB/s    | 104 MiB/s     | 103 MiB/s    |
| 29703 MiB | 121 MiB/s     | 195 MiB/s    | 105 MiB/s     | 107 MiB/s    |
| 30727 MiB | 132 MiB/s     | 203 MiB/s    | 102 MiB/s     | 104 MiB/s    |
+-----------+---------------+--------------+---------------+--------------+

Деякі спостереження тут:

Обидва випадки Win Cache (SSD і HDD) мають дуже високу швидкість спочатку через кешування вікон. Тоді курс знижується.

На корпусі HDD без кешування ми бачимо стабільну швидкість (і нормальну швидкість для мого жорсткого диска, оскільки вона становить близько 207 МБ / с).

На SSD-корпусі без кешування ми можемо побачити навіть найгірший показник порівняно з HDD.

Отже, нарешті, до мого питання:

Чому?

Чому я отримую найгірші ставки, коли я не використовую буферизацію на SSD? Де знаходиться вузьке місце? Обробка ОС Windows? Поведінка SSD зазвичай? Або як програмне забезпечення, так і обладнання?

Чи можу я досягти постійної швидкості передачі, як у випадку з HDD (але вище)? Припускаючи, що мій SSD має можливість швидкості запису 340 МБ / с, я можу досягти цього в постійній швидкості?

Дозвольте мені зрозуміти, що я ігнорую тут.


Новіші SSD-пристрої TLC-NAND використовують кеш швидкого MLC або SLC NAND для буферизації записів у більш повільну пам'ять TLC. Я припускаю, що буфер приблизно 16 Гб у вашому випадку дисків.
Mokubai

Дякуємо за інформацію @Mokubai. Я не був добре поінформований про різні види NAND. Так що я думаю, я не можу досягти постійної швидкості, крім повільного TLC мого диска може забезпечити (навіть якщо я змінити розмір шматка на кратні 3 або щось)?
Gregory Kontadakis

Відповіді:


0

В основному більшість сучасних дешевих твердотільних накопичувачів використовують TLC NAND flash, який насправді досить повільний при запису в порівнянні з MLC або SLC NAND флеш-пам'яті.

Це забезпечує набагато більшу пропускну здатність, а швидкість читання порівнянна з іншими типами, які для «нормального» системи випадкового читання / запису можуть бути цілком прийнятними.

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

Після заповнення буфера, хоча всі записи на диск стають обмеженими тим, наскільки швидко дані можуть бути записані в більш повільний NAND.

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

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

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