Обзор Samsung SM961 (это OEM версия Samsung 960 Pro) — одного из самых быстрых дисков формата M.2 в мире. Заодно разберёмся, что же за зверь такой NVMe и почему его некоторые боятся (необоснованно).
Подробности под катом.
Пару слов о стоимости: я брал на eBay за $80, но у продавца они закончились. За $90-$100 брать 128GB версию наверно не имеет смысла, т.к. за $145 можно уже купить модель на 256GB.
Диск приехал из Японии за неделю (15-го заказал, 22-го забрал). Я попросил продавца упаковать тщательно, что он и сделал — помимо пупырки вложил в большую жесткую коробку с наполнителем.
Форм-фактор: M.2 (2280)
Интерфейс: PCIe 3.0 x4
Протокол: NVMe
Ёмкость: 128GB
Скорость (линейная): 3100 / 700 MB/s
Скорость (произвольная): 330 / 170 KIOPS
Официальная страница
Герой обзора
Со своими дружбанами — XG3 и XG4
Об NVMe и скорости записи
Некоторые боятся покупать диски NVMe — дескать технология ещё не дозрела, драйверы сырые. Но на самом деле это не так. Давайте разберемся с сутью проблемы.
Если быть точным, то проблемы-то и нет — она надуманна. Главное [ошибочное] утверждение гласит: виндовый драйвер NVMe дико тормозит при записи, нормально работает только самсунговский драйвер, а для всех остальных, чтобы получить высокую скорость записи, нужно в настройках диска отключить флаш буферизированного дискового кеша (т.е. сброс данных из буфера ОС непосредственно на диск).
Во-первых, отключать сброс кеша не рекомендуется, т.к. при внезапном отключении питания все несброшенные данные просто пропадут. А во-вторых, это и не нужно, потому что медленная скорость записи — проблема синтетическая, в реальной жизни она не встречается.
Так от чего же тогда эти низкие цифры в бенчмарках? Ответ — в неправильных бенчмарках. Разберем на примере AS SSD Benchmark. Но для начала немного теории.
NVMe диски поддерживают специальную команду FUA (Force Unit Access). При её отправке, запись на диск осуществляется минуя кеш самого диска, т.е. напрямую в NAND память. Эта операция ужасно неэффективна, и нужна только в очень редких случаях для серверов. Для обычных пользовательских систем она бесполезна и даже вредна(для скорости), если её использовать там, где не нужно. Одно из мест, где FUA использовать не нужно — это бенчмарки.
Бенчмарки создают большой файл на тестируемом диске, пишут в него данные, потом читают их оттуда, замеряя попутно скорость операций. Чтобы исключить влияние оптимизаций ОС (программный кеш и т.д.) на замеры скорости, бенчмарки открывают файл со специальными флагами, которые указывают ОС как вести себя с этим файлом при чтении/записи. Нам интересны 2 флага: FILE_FLAG_WRITE_THROUGH и FILE_FLAG_NO_BUFFERING. Первый подразумевает запись в постоянную память накопителя (persistent storage) — как раз то, что делает команда FUA. Второй подразумевает отключение кеширования чтения и записи ОС — как раз то, что нужно для получения честных скоростей диска.
Т.е. фактически FILE_FLAG_WRITE_THROUGH не нужен для бенчмарка. Так почему же тогда его использую в некоторых бенчмарках? Просто этот набор флагов (т.е. режим работы с диском) подбирался во времена, когда FUA ещё не было, и, соответственно, драйвер диска ничего не делал в этом плане — он просто писал данные на диск самым обычным способом. Т.е. флаг как бы игнорировался и всё работало нормально.
С появлением NVMe появился и более продвинутый драйвер для него, который стал более точно реагировать на запросы программы:
«Ты хочешь, чтобы я сбросил данные в физическую память, минуя аппаратный кеш диска и залип, ожидая ответа? ОК, сделаю как приказываешь. Жди...» — вот как ведёт себя NVMe диск при использовании флага FILE_FLAG_WRITE_THROUGH. Часть бенчмарков обновила код, исключив ненужный флаг, или добавив галочку в настройках, где его можно включить/выключить по желанию пользователя. AS SSD Benchmark — пример старого бенчмарка, где флаг прописан жестко и отключить его нельзя.
Но тогда возникает вопрос — почему драйвер Samsung даёт высокие скорости записи в любом бенчмарке. Ответ прост — он просто игнорирует и не выполняет команду FUA.
С похожей ситуацией я столкнулся при работе с диском Toshiba XG3. Это OEM диск, а розничная версия называется OCZ RD400. При установке драйвера XG3 скорость в старых бенчмарках оставалась низкой, а при установке драйвера RD400 скорость выросла как в случае с Samsung. Интересно то, что файл драйвера в обоих случая ставился один и тот же (что логично — ведь это один и тот же диск, просто с разными VID/PID). Тогда я полез в inf файл драйвера, и увидел интересную вещь: файл драйвера в обоих случаях один, но в случае XG3 в настройки драйвера устанавливался флаг StrictFUA=1, а в случае RD400 — StrictFUA=0. Т.е. как и в случае с Samsung, для RD400 команда FUA просто игнорировалась.
Кстати, ни сама Windows, ни программы в ней не используют этот флаг, поэтому никаких тормозов при записи в реальной жизни не наблюдается — вот почему я выше сказал, что проблема синтетическая.
Но довольно теории, перейдем к самому вкусному — тестам.
Я установил NVMe драйвер для Samsung 960 Pro, чтобы была возможность запустить старые бенчмарки.
Тестирование выполнялось «на живую», т.е. тестируемый диск являлся системным и с него была запущена OC, в которой проводилось тестирование, так что работающая с этого же диска ОС могла немного занизить показатели.
CrystalDiskInfo
CrystalDiskMark
ATTO
Anvil Storage Utils
AS SSD
Заключение
Диск мне понравился. Запаса по скорости хватит надолго. Запаса прочности — и того дольше — здесь используется трёхмерная MLC память: т.е. не просто MLC (которая и так выносливее современной TLC), но ещё и V-NAND (т.е. ёмкость увеличина за счёт многослойности, а ячейки памяти сделаны больше размером, что значительно увеличивает их ресурс).
Плюсы:
— Надёжность, огромный ресурс
— СКОРОСТЬ!!!
Минусы:
— Относительно высокая цена
Софтом от Adobe не пользуюсь (у меня немного другой профиль). Винда грузится бестрее, чем на SATA SSD, но не в 6 раз быстрее, т.к. инициализация BIOS/UEFI и загрузка/инициализация ядра (построение дерева устройств) от скорости диска не зависят, а именно они сжираю большую часть времени при загрузке, когда скорость диска перестаёт быть сдерживающим фактором.
А вобще там тоже помимо диска много чего завязано. В первой фазе установщик накатывает на раздел подготовленный генерализированный образ (install.wim) — тут как раз скорость диска играет роль(это несколько минут от силы). А после перезагрузки начинается фаза конигурации и там уже диск меньше влияет.
з.ы. с годного, быстрого носителя?
Ведь речь о чём — о скорости обработки единичных запросов по 4К, без предзагрузки очередью. Если SSD обрабатывает таких 10 запросов в секунду (возьмём круглые и понятные цифры для упрощения), значит время реакции на запрос у него 100мсек. Поставив два SSD в RAID, у каждого из них точно так же будут эти 100мсек. А значит отправив к RAID'у тот самый единичный запрос, ответ быстрее чем через 100мсек мы не получим, без разницы на какой из двух SSD он будет отправлен RAID'ом (и без разницы сколько там SSD, хоть 4-6-8 штук).
С ними-то проблем нет и с рейдом, и даже с одним SSD.
картинка из статьи, см. результат для 4KQ32T1.
А суть единичных (нижняя строка) в том, что не отправляем следующий запрос пока не получен результат предыдущего.
Прекрасно понимаю, что ворошить скисшее нехорошо и никто в своём уме не будет юзать фат на ссд, но, к примеру, в семействе файловых систем FAT директории расположены именно так, как я описал.
Не удивлюсь, если и в NTFS Майкрософт недалеко ушла :)
Но, повторюсь, проблема конкретно с фат и ссд высосана из пальца. Она тут просто как пример того, как, в принципе, может быть.
Насчёт оптимизаций — согласен.
но в целом тут никакой nvme не помошник — лимитирует флеш, а не интерфейс. nvme в основном дает снижение нагрузки на проц при огромных длинах очереди.
а если хочется (зачем?) большего — есть оптан.
а если сравнить его с OCZ RevoDrive 3 и RevoDrive 3 X2, что порекомендуете, а то у меня OCZ RevoDrive не хватает объема в 90 гигов, стоит ось на нём…
Я в ноут ставил 1TB XG3, там только M.2 был и память распаяна на мамке, так что за счет быстрого диска нивелировалась нехватка памяти (своппинг на таком диске незаметен).
Я тут не понял.
Но вещь отличная.
Система: Win10 Ent x64 1703, ASUS B350-M, Ryzen 1700, 64GB 2133MHz RAM
плюс на куче устройств m.2 имеет ключ B, так что данный ssd с ключём М туда тупо не вставить.
плюс даже у m.2 с ключём М часто подведено только две линии pci-e
ну и ко всему этому добавляется, что версия pci-e может быть и не 3.0, как у автора.
в итоге, у автора на pci-e 3.0 x4 получаем 3,1 Гбайт/с из теоретических 3,2 Гбайт/с, а, например, в моём случае на pci-e 2.0 x2 теоретических только 800 Мбайт/с, что ужо не так красиво по сравнению с моими же практическими 550 Мбайт/с на м6про на sata
Он стоит на 30% дороже, но емкость в 3 раза больше
оперативку отъедает конечно.
Вы вроде и не соврали, но не предоставив достаточно информации, вы вводите в заблуждение пользователей.
Для тех кто не в курсе: программа Samsung Magician имеет режим RAPID. Если его включить, она ставит специальный драйвер, который создает промежуточный кеш в памяти (1GB и больше), так что вся запись и последующее чтение осуществляется в памяти, и на диск сбрасывается только когда уж очень припекло.
а вообще здесь и сейчас — легко, 960pro называется.
SSD M.2 250GB Samsung 960 EVO
(R3200/W1500Mb/s, TLC 3D V-NAND, Polaris, PCIe NVMe, 2280) (MZ-V6E250BW)
И еще скорость работы зависит от объема диска. К примеру, модель на 512Гб работает быстрей, чем 256Гб. Причину не помню, но думаю, что-нибудь в канальное, как и с оперативной памятью. :)
SSD на SATA уже упирается. Скорости чтения не хватает )
А так да за такой скоростью будущее. Правда софт надо точить чтобы быстро грузился и мог использовать диск и многоядерный проц.
Взял мощный проц и много памяти — и можно просто виртуалки никогда не гасить)