ASM:
В микропрограммах SSD накопителей заложены процедуры фонового сканирования NAND. Включенный SSD в простое занимается чтением содержимого и при обнаружении "уставших" страниц NAND, где количество битовых ошибок достигло некого порога (на грани возможностей ECC) или требуется чтение с Read Retry до корректируемого вида, производит перезапись блока с проблемными страницами в другое место. Это речь не про обработку дефектов или какую-то нештатную ситуацию, а естественный процесс.
Тесты чтения могут показать весьма странные результаты в зависимости от настроек микропрограммы SSD, износа отдельных страниц, условий записи и прочих условий эксплуатации. Тестировать на деградацию можно разве что диски, которые были длительное время отключенными, а при включении переведены в boot ROM, загружен модифицированный микрокод и прочитать дампы NAND без Read Retry с оценкой количества битовых ошибок.
Безусловно. Точно узнать, к сожалению, как работает прошивка контретного SSD у меня возможности нет. Кто-то возможно знает. Если бы я это знал, мне бы было проще осуществлять выбор именно под мои цели. Я в основном читаю западные источники, о том как что-то работает, и конкретного утверждения на то, что контроллеры прямо так в idle режиме занимаются переносом данных — нет. Есть предположения. В чём причина? Потому что перезапись увеличивает износ. Из того что я понял, перенос данных происходит только в очень тяжелых случаях. Когда прямо реально есть риск потери данных. Когда чтение страницы, измеряемое в микросекундах в норме, начинает из-за износа ячейки и/или утери заряда занимать миллисекунды вместо микросекунд. Что очень много для SSD. Снижение скорости условно с 59 MiB/s (66 мкс на 4k грубо) до 48 MiB/s (81 мкс) на тех же данных, является нормой. И из того что я понял, проблемой не является. Это всё ещё нормальная скорость, и можно предположить, что данные не переносились. Т.е. из того что я прочитал: современный контроллер не читает диск в режиме idle, он принимает меры когда вы с него что-то запросили. И вот если во время запроса к данным, инициированного вами, у контроллера возникли серьезные проблемы на каком-то участке, и он еле еле эти данные прочитал, но прочитал, тогда может быть рассмотрен перенос этих данных куда-то в другое место. Для вас же, если вы данные читали, и это было копирование, к примеру, вы увидете просадку. Либо эта трудность будет замечена, в том числе в тесте (fio например). Где вы увидите, что часть ячеек ответила неприлично медленно. А минимальная скорость, при средней общей высокой, составила к примеру 10 мегабайт в секунду. Я кстати говоря, всё ещё не знаю, 10 мегабайт в секунду (390 мкс, 2500 - 2600 IOPS) — это уже медленно, чтобы данные переносить, или всё ещё нет. Может в разных прошивках это по разному. В микросекундах, вроде как, всё ещё не выглядит страшно. Но то что это медленнее какой-нибудь хорошей новой флешки — то это так (речь идёт о чтении 4k RND QD1T1)
И ещё — чтобы что-то куда-то перенести, нужно чтобы было место, куда перенести. Вот на моём старом терабайте, места почти нет. Да, там сделан provisioning в 10%. Но я это не считаю. В любом случае он заполнен достаточно. И всё он перенести куда-то на новое место всё равно не сможет. И если ячейки просели и износились, это будет видно.
Предположу, что в большинстве случаев, опять же, могу ошибаться, люди не покупают диски чтобы держать их пустыми.
ASM:
Утверждение про "без потери скорости" некорректно. Все сильно зависит от того, что понадобится сделать микропрограмме диска для обслуживания очередей запросов. Одни случаи потребуют чтения разных фрагментов транслятора из NAND в ОЗУ SSD для обслуживания запросов, другие отработают по уже содержащимся в ОЗУ. Тоже самое относится и к положению данных. Для некоторых достаточно прочитать минимальное количество блоков, чтобы получить нужные страницы и выдать ответ на запросы. Для других может потребоваться чтение может быть в несколько ступеней: Чтение блока с данными, чтение блока-апдейта для наложения отдельных страниц, которые в виде коротких записей хранились отдельно.
Речь шла о RND 4k чтении QD1 T1 (как и до этого), и скейлинге именно этой величины. Чтение при этом мимо кешей ОС (опять же, чтобы что-то появилось в кеше ОЗУ, это что-то надо сначало туда прочитать). Конкретно проводил тесты под скейлинг. Новый диск, т.е. современный контроллер, очень хорошо скейлится в этом смысле. Увеличение потоков в основной массе даёт буквально n-крайтный прирост. Т.е. один поток — 50 мегабайт, условно. Два — 100. Четыре — 200 и т.д., до определенного момента. Samsung 990 Pro со своей памятью, и с контроллером, может вывезти больше потоков и не просесть, чем 970 Evo на Phoenix. Последний начинает сдавать раньше. К чему это было? 990 Pro может выдать при скейлинге согласно datasheet 1500000 IOPS, у меня выдал под миллион. Может проца не хватает (8845HS) чтобы добрать остальное. 970 Evo согласно datasheet может выдать 450000 IOPS. Т.е. более чем в три раза меньше. Сколько на практике на текущей машине — пока не проверял. Ведь нужно обеспечить одинаковые условия. Но написал я то что написал выше вот к чему — а нужен ли обычному пользователю миллион или полтора iops? Ведь для этого нужно обеспечить активное одновременное случайное чтение, скажем, 8-ю потоками, а то и больше. И в итоге, контроллер, по факту, быстрее и сильнее. Это правда. Но нужно ли это? Большой вопрос, если в однопоточке разница между старым и новым диском, практически отсутствует. А если относительно новый топ, разрекламированный самыми якобы продвинутыми ресурсами, типа tomshardware и им подобным, каким-то образом умудряется просесть ниже по скорости чтения через год использования и 20 терабайт записей диска и в обычном сценарии работает хуже, чем диск которому 8 лет и который забит, и пережил не один комп — возникает вопрос. А нужен ли такой апгрейд обычному пользователю? Под ОС, игры, и т.д.. Может он наоборот, потеряет? Хотя думать будет что приобрел. Ну потому что новое поколение PCIe, и т.д. И в CDM цифры в обзорах красивые. Прогресс ведь показывают.
Если что — это не претензии, я просто пытаюсь понять, что для меня лучше, не по бенчмаркам в обзорах, а по своим измерениям, которые я пытаюсь приблизить именно к своим сценариям.
Т.е. то что память становится многослойной, и растут объемы — это здорово. А если мне достаточно два терабайта? Зачем мне платить за контроллер который читает в моих сценариях данные почти с такой же, или такой же скоростью как и раньше, но тратить на это к примеру свой ресурс на то чтобы эти данные прочитать в более сложных условиях? Потому что память стала такой, что на то чтобы из неё что-то извлечь, требуется больше работы? Если объема хватает, профит обычного пользователя в чём?
ASM:
Этот тезис тоже спорный. В наше время размер пользовательских файлов стремительно растет. И высокая линейная скорость также имеет значение.
Не спорю, кому нужна линейная скорость — пусть покупают соотвествующие диски. Но даже видеографы на маках через usb4 карманы (чтобы не платить "налог" Apple) прекрасно редактируют видео во много слоёв без каких-то проблем и лагов. Потому что линейка в 3.7 гигабайта в секунду, который способен выдать такой карман — это очень много. Даже в рассуждения в рамках битрейтов — это же очень высокий битрейт.
Но безусловно. Если мне 3700 достаточно, не говорит что этого достаточно всем. Но я, предположу, что многим. Но кому нет — на здоровье. Есть что купить.
И опять же нужно помнить про кеши. Ведь диски те тоже, во всяком случае для записи, не дают тех линейных скоростей. Всё, как обычно, ограничено рамками кеша. Но да, сейчас память стала такой, что способна даже в режиме TLC принимать данные очень быстро линейно. К примеру, у меня был диск (безбуферник на 1 терабайт, продал), который принимал данные и сразу писал их как TLC со скоростью 1.7 гига в секунду (232L B58R Micron). Что очень быстро. Многие самсунги обзавидуются.
А если у пользователя достаточно оперативы, а пишет он относительно немного, то для быстройдействия ОЗУ решает гораздо больше, т.к. данные для приложения в основном (если это не база с гарантиями, к примеру) считаются записанным после того как попали в кеш. Операционка их уже сбрасывает на диск в параллель. К примеру, у меня Linux сам под дисковый кеш откусил аж 7.5. гигов. Я ничего не настраивал. 7.5 гигов — это приличный кеш, как по моим меркам. И то что несколько гигабайт оттуда диск полностью пропишет на секунду медленнее, чем если бы он был самым быстрым, меня не сильно волнует. Для приложения это (и для меня) всё равно не заметно. Но если вы пишете десятками, сотнями, или терабайтами, то это становится критично. Не спорю.
ASM:
Принцип кеширования в pSLC у SSD обычно выглядит следующим образом:
Здесь у меня несколько иная информация. То что вы описываете, как я понимаю — это динамический SLC кеш. А есть ещё постоянный, статический, который не зависит от объема записанных на SSD данных. В Samsung моём он вроде 4 гига. Пример был приведен к тому, что при проведении тестов в CDM некоторые обзорщики показывают, что мол вот — диск заполнен, а циферки то не просели. Ах какой хороший диск, как справляется. Упуская при этом вот этот момент из виду. При этом тест проводится файлом в 1 гигабайт. И принять его в статический кеш, который не зависит от заполенения, у SSD может возможность быть. И тем самым показать красивые цифры.
Это я всё к чему. Я пытаюсь просто понять, откуда эти цифры берутся, и что они реально значат. А не пытаться предположить и просто подумать, ах раз они выше — значит всё здорово. Да, я не могу знать как работает прошивка. Какова цена, к примеру, большого SLC кеша (почему одни делают большой), а какова цена маленького (а другие делают поменьше). Но WAF при большом кеше, как я понимаю, больше. Ведь ячеек памяти задействует под запись больше, они пишутся в режиме SLC, что ествественно влияет на износ и надежность потенциально в будущем.
Поэтому я провожу свои тесты. И обратился здесь, по сути, к обычным пользователям. Поделиться и своими данными. У меня нет возможности купить огромное количество дисков, просто чтобы их погонять и проверить. А большинство обзоров, к сожалению, не даёт мне практически вообще никакой полезной информации. Именно для моих сценариев. Точнее, скажем так. На данный момент я с большего сделал вывод, как и написал уже выше, что для моих сценариев, прогресса за 8 лет почти нет. Он ничтожен. Ну или если быть поточнее, то 970 Evo Plus в пару терабайт на Elpis (он новее, ему не 8 лет конечно), который урезан до PCIe 3, и 9100 Pro в честном RND 4k чтении в один поток и в очередь с глубиной 1, не из pSLC кеша, а в режиме TLC, дают практически одинаковую цифру согласно тем цифрам которые я видел.