Неосознанные ошибки при использовании SSD-накопителей могут сильно омрачить первоначальное впечатление пользователя. Особенно, если речь заходит о высокопроизводительном SSD. Каких нюансов в эксплуатации стоит избегать? Разбираемся в этом материале.
Заполнение данными под «завязку»
Одна из самых распространенных ошибок при использовании SSD-накопителей — его полное заполнение. Установив накопитель, первым делом хочется перенести на него все-все рабочие файлы и игры. Особенно, если вы обладаете целой коллекцией игр и хотите получать к ним доступ постоянно, не удаляя и скачивая заново. А современные игры весят довольно внушительно. Но заполнять SSD полностью не стоит, и на это есть веская причина — снижение скоростных характеристик.
У накопителя всегда должен оставаться некоторый резерв пустого пространства в виде незадействованных блоков, чтобы поддерживать высокую производительность накопителя. Производители зачастую резервируют часть памяти SSD по умолчанию, делая ее недоступной для использования. Что, в свою очередь, позволяет иметь свободные блоки при любых условиях. Пользователю доступно и самостоятельное контролирование свободного места. Можно попросту не записывать больше данных после определенного заполнения объема или заранее зарезервировать процент неиспользуемого пространства. Выполнить это можно и средствами Windows через «Управление дисками» и фирменным ПО накопителя. Как правило, это около 10 % от общей емкости SSD.
Чрезмерная забота о ресурсе перезаписи
Разнообразные мифы преследуют SSD-накопители с момента их появления. Особенно популярный миф — низкая живучесть устройства из-за его перезаписи. Следуя множеству различных «оптимизаций» для сохранения ресурса SSD, пользователи зачастую переносят файл подкачки на HDD или отключают его вовсе, что делать совсем не стоит. Это может снизить производительность системы, а некоторые программы не будут запускаться. Перенести файл подкачки можно в крайнем случае — при острой нехватке места и малом количестве оперативной памяти. В остальных же случаях практического смысла в этом нет. Windows в приоритете использует доступную оперативную память, которой в современных ПК с запасом, ОС сама контролирует размер файла подкачки и нечасто его задействует.
Благодаря «умному» ПО и начинке у современных SSD-накопителей их довольно трудно довести до исчерпания ресурса перезаписи в обычных бытовых условиях. Конечно, если не впадать в крайности, делая из малоемкого бюджетного SSD «торрент-качалку» для каждодневного скачивания крупных файлов. Среднестатистический SSD скорее морально устареет от нехватки объема в связи с растущим весом приложений, чем выйдет из строя из-за перезаписи. Гораздо важнее побеспокоиться не о ресурсе SSD, а о его правильной эксплуатации — отсутствия внезапных отключений питания, так как они очень вредны для данного типа устройств.
Всегда сохраняйте резервные копии своих ценных файлов. Особенно, если оригиналы находятся на SSD.
В отличие от HDD, который выходит из строя постепенно и из него можно успеть извлечь информацию, SSD помирает мгновенно, забирая с собой всю информацию. В редких случаях некоторую информацию можно восстановить, но процесс этот дорогостоящий, в подавляющих же ситуациях она не подлежит восстановлению вовсе.
Переплата за NVMe
«Скорость записи и чтения намного выше, чем у SATA» — типичный аргумент, который вводит в заблуждение пользователя, когда он сравнивает при покупке NVMe и SATA накопители. Конечно, ничего плохого в использовании только NVMe накопителей в ПК нет. Но есть ли смысл использовать их под все задачи? Резонно нет. Домашний архив из фото и видео, а также игры можно хранить с тем же успехом на SATA SSD, как и ОС. Разница в скорости загрузки находится на уровне погрешности. В свою очередь, SATA SSD обладают меньшей ценой за мегабайт.
Огромная разница в тестах между NVMe и SATA на деле сводится к показателям скорости работы со случайными блоками. Где преимущество NVMe тает на глазах. А на них приходится основная часть активности накопителя при бытовом использовании. Видеоредакторы, проектирование и другие профессиональные задачи, которые требуют перекачивания большого объема данных — стезя NVMe, где они будут, не просто полезны, а зачастую необходимы. Для домашнего ПК рациональным решением будет связка NVMe+SATA, где на NVMe накопителе будет храниться ОС и рабочие программы, а на более емком SATA игры и медиаархив. Вот здесь можно подробнее познакомиться с NVMЕ.
Дефрагментация
Функция дефрагментации весьма полезна, если дело касается HDD — снижается время на обработку операций с файлами. Но в отношении SSD данная функция не только не дает никакого положительного эффекта, а наоборот — лишь расходует его ресурс. При работе с SSD-накопителями современные версии Windows отключают дефрагментацию по умолчанию, используя взамен функцию TRIM. Функция TRIM позволяет полноценно удалять данные из неиспользуемых ячеек памяти, что экономит время при дальнейшей записи в ту же ячейку. Проверить, включена ли функция TRIM можно следующим путем: «Пуск ->Командная строка ->Запуск от имени администратора». Далее ввести команду «fsutil behavior query disabledeletenotify».
Значение «0» напротив файловой системы указывает, что функция включена. Соответственно, «1» — о ее деактивации.
Проверить состояние функции дефрагментации или отключить ее можно следующим путем: «Локальный диск ->Свойства ->Оптимизировать ->Изменить параметры». Остается выбрать конкретное устройство и снять с него галочку.
Перегрев
Миниатюрный размер и энергопотребление сильно влияют на нагрев SSD в форм-факторе M.2. Особенно, если это скоростной NVMe-накопитель. «Душный» корпус с плохой вентиляцией, близкое расположение к горячей видеокарте, отсутствие радиатора и долгая рабочая нагрузка накопителя — основные причины перегрева. Перегрев SSD ведет к его троттлингу, следствием которого является снижение производительности накопителя.
Поэтому стоит периодически измерять температуру накопителей, а также обеспечить хорошую вентиляцию в корпусе и при необходимости озаботиться радиатором для SSD. Для контролирования температуры можно воспользоваться программой CrystalDiskInfo. Кроме стандартного отображения текущего значения, можно задать критический порог температуры, при достижении которого программа будет сигнализировать пользователю.
Использование старой прошивки и разъемов
При эксплуатации SSD-накопителей важны не только стандартные драйвера Windows и чипсета, но и актуальная прошивка устройства. Зачастую пользователи забывают или пренебрегают установкой фирменного ПО от производителя SSD. А оно, в свою очередь, позволяет обновлять микропрограмму накопителя, внося улучшения в работу и обеспечивая оптимальную производительность.
Отдельно стоит отметить используемые разъемы для накопителей. Старые по современным меркам порты SATA II будут урезать скорость накопителей форм-фактора 2.5 вдвое. Нюанс ограничением скорости, как ни странно, актуален и для разъемов современных NVMe-накопителей. Виной тому могут быть лишь две выделенные линии, отведенные на разъем, используемая линейка процессоров или чипсет платы. Очередное подтверждение того, что стоит более тщательно подходить к выбору SSD-накопителя.
Дефрагментация SSD: есть ли в этом смысл?
Обычный жесткий диск имеет головку для записи и чтения. Она постоянно перемещается туда-сюда, чтобы найти нужные данные, разбросанные по разным местам. Информация на HDD всегда записываются туда, где есть свободное место. После удаления она исчезает, и в «ровном строю» файлов появляются пробелы. Дефрагментация упорядочивает эти данные, располагая их рядом. Таким образом, дефрагментация не только ускоряет работу жесткого диска, но и увеличивает срок его службы за счет снижения износа.
Твердотельный накопитель (SSD) не имеет такой головки для записи и чтения, поэтому дефрагментация не имеет смысла. В SSD данные хранятся на чипах памяти, поэтому могут быть извлечены значительно быстрее. Дефрагментация также приведет к упорядочению файлов, но это не поможет им быстрее запускаться. Поскольку во время дефрагментации выполняется множество операций записи, накопитель работает интенсивнее. Таким образом, частая дефрагментация не только не поможет, но и сократит срок службы SSD.
Windows: отключение дефрагментации SSD
Начиная с Windows 8, дефрагментация SSD-дисков отключается автоматически. Однако в более старых операционных системах настройки могут быть неправильными. Даже если вы собрали свой компьютер самостоятельно, советуем проверить этот параметр.
- Одновременно нажмите клавиши [Windows] и [E], чтобы открыть проводник.
- Щелкните правой кнопкой мыши на SSD-диск и выберите в меню пункт «Свойства».
- Перейдите на вкладку «Сервис» в верхней части и нажмите кнопку «Выполнить дефрагментацию» или «оптимизировать».
- Нажмите кнопку «Настроить расписание» и задайте необходимые параметры для отмены автоматической дефрагментации. Убедитесь, что ваш SSD деактивирован, а затем снова закройте окна.
Читайте также:
- От чего зависит время автономной работы смартфона=«content_internal_link»>
- Секреты быстрого интернета: чем отличаются Wi-Fi 4, Wi-Fi 5, Wi-Fi 6=«content_internal_link»>
Редактор направлений «Мобильные устройства» и «Техника для дома»
В этой публикации, друзья, затронем тему, нужна ли дефрагментация современным накопителям SSD. Тема эта — отголосок из прошлого, её как производную в принципе темы жёстких дисков HDD, как я полагал, мы давно закрыли. HDD – это свалка истории IT, настоящее и будущее, по крайней мере ближайшее – это SSD, твердотельные накопители. Эти устройства давно стали реальностью для массового пользователя и в плане цены, и в плане технической доступности. Эти устройства внутри собственного типа успели пройти уже несколько этапов эволюции. И все прекрасно знают, что SSD нельзя дефрагментировать, про это трубят из всех щелей в IT-пространстве. И какового же было моё удивление, когда относительно недавно на сайте задали вопрос – нужна ли дефрагментация SSD, ибо утверждение о необходимости проведения этой операции именно для дисков SSD значилось в описании работы некоторой программы для дефрагментации. Что же, давайте разбираться в этой теме.
Друзья, дефрагментация – это операция по оптимизации работы механических жёстких дисков HDD, устройств, где информация хранится на магнитных пластинах, а её запись и считывание осуществляется головками.
Головки постоянно перемещаются по разным участкам магнитных пластин, какую-то информацию записывают, какую-то считывают. Упрощённо — нечто схожее с работой патефона. Запись информации производится туда, где есть свободное место, но этого места не всегда достаточно для линейной (последовательной) записи одного файла или нескольких файлов, которые будут считываться в едином каком-то процессе. В таких случаях диску HDD приходится записывать часть данных на другой участок магнитной пластины. А для этого и в процессе записи, и в процессе считывания головка должна перемещаться. Перемещение головок с участка на участок приводит к задержке операций записи и чтения. Это, собственно, и есть причина низкой скорости HDD в условиях нелинейной (непоследовательной, рандомной) обработки данных. Дефрагментация – это операция, которая собирает в одном месте части одного файла или нескольких файлов, принадлежащих одному процессу. Т.е. размещает их на одном участке магнитной пластины. Чтобы головки при считывании этих данных не производили перемещений и считывали информацию линейно. А, соответственно, с большей скоростью. Для этого в процессе дефрагментации содержимое диска анализируется, и производится перезапись данных с целью их более эффективного размещения на пластинах. Помимо этого, из-за того, что дефрагментация убирает лишние перемещения головок HDD, эта операция ещё и в какой-то мере снижает их износ.
Но у дефрагментации есть нюансы:
- Эта операция возможна только тогда, когда она возможна. А возможна она не всегда;
- Проводимая основательно она может длиться очень долго, на один только раздел может уйти несколько часов. В процессе проведения дефрагментации диск HDD загружен максимально. И если у нас операционная система установлена на диске, который дефрагментируется, мы если и сможем пользоваться компьютером, то минимально и с жуткими тормозами;
- Её эффект может быть мало заметен, ибо работает только на считывание данных;
- Её эффект может быть мало заметен, если у нас хороший современный HDD с большим числом головок и большим кешем;
- Её эффект может быть мало заметен конкретно в работе операционной системы и программ, если у нас немалый объём оперативной памяти. Ибо здесь будет работать технология кеширования данных в оперативную память;
- Эффективность дефрагментации вместе со всеми взятыми методами оптимизации HDD, включая даже создание производительного RAID-массива, будет ничтожно мала в сравнении с работой SSD. В сравнении даже с самым дешёвым SSD — с SATA-интерфейсом, с плохим контроллером и медленной флеш-памятью.
Так что, друзья, дефрагментация – это неоднозначная операция даже для дисков HDD. А чтобы понять, как она влияет на SSD, давайте разберёмся с его обустройством.
Твердотельный накопитель SSD – это устройство хранения информации с принципиально иным механизмом, с эволюционно иным механизмом. У него нет никаких магнитных пластин и головок, это не механическое, а электронное устройство. SSD хранит данные в электронном виде в микросхемах флеш-памяти.
Запись данных в эти микросхемы и считывание из них данных происходит значительно быстрее, чем запись в магнитные пластины и считывание с них. Как и HDD, SSD также зависим от фактора линейности или рандомности записи данных. Линейно данные SSD записывает и считывает с огромнейшей скоростью, порой даже избыточной, если говорить о современных SSD с интерфейсом PCI-E 3.0 и 4.0. Рандомная скорость записи и считывания файлов у SSD ниже, но она в десятки раз превышает рандомную скорость HDD, это во-первых. Во-вторых, при рандомной обработке мелких данных SSD-накопители могут крыть своим преимуществом в виде многопоточности выполнения операций. SSD имеют многоканальный контроллер, благодаря чему могут формировать множественные очереди команд, которые контроллер будет обрабатывать в параллельном режиме. Вот почему SSD редко когда бывает загружен на 100%, тогда как для диска HDD – это обычное явление, когда идёт активная запись данных в процессах типа установки обновлений Windows.
Взгляните, друзья, на тесты скорости HDD и SSD двух разных типов – с интерфейсом SATA и PCI-E 4.0. В последовательной скорости чтения и записи данных (первый тест SegQ1M Q8T1):
- SSD SATA быстрее HDD и в записи, и в чтении в 3.5 раз;
- SSD PCI-E 4.0 быстрее HDD в записи в 18 раз, а в чтении – в 43 раза.
В рандомной однопоточной обработке данных (четвёртый тест Rnd4K Q1T1):
- SSD SATA быстрее HDD в записи в 43 раза, в чтении – в 49 раз;
- SSD PCI-E 4.0 быстрее HDD в записи в 78 раз, в чтении – в 88 раз.
И обратим особое внимание на тест многопоточной (32 потока) рандомной обработки мелких данных, который обведён красным маркером на скриншоте ниже (Rnd4K Q32T1). В этом тесте:
- SSD SATA быстрее HDD в чтении в 80 раз, в записи – в 86 раз;
- SSD PCI-E 4.0 быстрее HDD в чтении в 182 раза, в записи – аж в 216 раз.
Результаты этого теста у HDD не имеют существенных отличий от рандомного однопоточного теста (Rnd4K Q1T1). Ни в одном, ни в другом тесте HDD не может выйти за предел скорости 3 Мб/с. А вот у обоих типов SSD при многопоточном тесте (Rnd4K Q32T1) наблюдается увеличение скоростей от 2 до 6 раз.
Если дефрагментировать SSD, то технически мы получим бо́льшую скорость чтения данных, но мы вряд ли сможем ощутить эту скорость. Скорость многопоточного рандомного чтения и так высока, она больше линейной скорости чтения HDD. Ощутить в принципе разность скоростей при использовании SSD можно только на контрасте очень плохого SSD SATA и хорошего SSD PCI-E 3.0 или 4.0. Но при дефрагментации SSD мы получаем лишний объём перезаписи данных, а в этих устройствах информации ресурс перезаписи ограничен. Ячейки флеш-памяти SSD подвержены износу по итогу определённого цикла перезаписи данных. Многие производители SSD указывают для своих устройств максимальный объём перезаписи данных в Тб в качестве гарантированного ресурса накопителя. Этого ресурса при обычном домашнем использовании компьютера может хватить на долгие годы, но его не стоит гробить абсолютно ненужными операциями. Друзья, дефрагментация для SSD не только не нужна, она даже вредна.
О том, что дефрагментация не нужна SSD, прекрасно знает операционная система Windows. Она различает типы устройств информации, и к каждому типу применяет свои методы оптимизации. В штатной утилите оптимизации дисков такой критерий состояния диска, как процент фрагментации, указывается только для HDD. И системная операция дефрагментации в рамках фонового комплексного обслуживания Windows проводится исключительно для дисков HDD. Для SSD эта операция не проводится.
Дефрагментация – это скорее редкая точечная операция для исключительных случаев сильной фрагментации HDD. Конечно, разработчикам программ для дефрагментации, продвигающим свои продукты, нет резона говорить правду — что то, что они предлагают, в большинстве случаев будет как мёртвому припарка. Но вбивать в головы неофитов идею о том, что SSD нужна дефрагментация – это уже чересчур. А вот серьёзные разработчики программного обеспечения для дефрагментации дисков – типа компании Piriform, создателя известной программы CCleaner, наоборот, продвигают в массы истину. В программе Defraggler, если мы запустим дефрагментацию SSD, нам будет выдано предупреждение, что дефрагментация может уменьшить срок службы SSD.
Так что, друзья, давайте оставим дефрагментацию в прошлом, где, собственно, остались и сами HDD. Если у вас есть HDD, у него должна быть одна судьба – спокойно дожить свою жизнь в качестве хранилища данных типа медиа или бэкапов. Вся же серьёзная работа должна проводиться на SSD, который не нужно терзать никакими оптимизациями.
Время на прочтение
7 мин
Количество просмотров 78K
Несомненно, вопрос, вынесенный в заголовок статьи, не нов, поднимался не раз и по нему достигнут консенсус «не особо нужна, и даже может быть вредна».
Однако недавнее обсуждение в комментариях заставило меня ещё раз задуматься.
Со временем любой SSD всё равно сильно фрагментируется (внутри, в FTL)… Свежезаписанный SSD при линейном чтении даст высокую скорость, а уже поработавший — гораздо ниже, потому что линейными оно будет только для вас.
Да, обычно такое не должно происходить: или мы пишем «понемногу» в мелкие файлы/небольшие блоки метаинформации ФС (скорость линейного чтения которых нас не особо волнует), либо же мы пишем «помногу» в большие файлы и всё будет хорошо. Бывает и дозапись мелкими блоками в большие файлы — логи, например, однако они относительно короткоживущие и особой проблемы я тут не вижу.
Но легко представился вполне реальный сценарий, при котором всё-таки внутренняя фрагментация SSD может проявиться: файл базы данных, в который идёт достаточно активная случайная запись. Со временем он (оставаясь нефрагментированным на уровне операционной системы) окажется физически очень даже фрагментированным, что может существенно снизить скорость seq scan, резервного копирования и т.п.
Для проверки я написал скрипт и провёл тесты.
Спойлер: проблема присутствует (существенно влияет на производительность) только на одной из попавшихся под руки моделей (и та позиционируется производителем не как datacenter, а как десктопная/ноутбучная).
Про что тут вообще речь? Какая ещё фрагментация внутри SSD?
Если в двух словах, SSD устроен очень непросто. В NAND flash можно писать (точнее стирать) только большими блоками. А операционная система видит SSD как набор 512-байтовых (или 4096-байтовых) секторов, каждый из которых может быть адресован независимо.
Чтобы как-то это совместить, придумана такая вещь, как FTL (flash translation layer): данные во flash-памяти лежат не последовательно, а (очень условно) в том порядке, в котором они были записаны, что-то вроде log-структурированных файловых систем.
Такие структуры очень хорошо обрабатывают случайную запись, превращая её в последовательную, но, увы, ничто не бывает бесплатно — в результате зачастую последовательное чтение превращается в случайное.
Алгоритмы, по которым работают FTL, закрыты, однако, насколько мы можем судить, у разных производителей они могут кардинально различаться. Соответственно, кардинально может различаться и поведение накопителей под нагрузкой.
Именно это мы и будет исследовать.
Идея скрипта: создаём файл на несколько гигабайт, заполненный случайными данными, замеряем скорость последовательного чтения.
Далее используя случайный доступ переписываем часть тестового файла и снова измеряем скорость линейного чтения. Если наши подозрения верны, то теперь чтение из файла будет идти медленнее.
После каждой записи делаем по три операции чтения с задержкой между ними на случай, если какой-то накопитель в фоне производит дефрагментацию и потом скорость чтения улучшится.
Немного о том, почему нужно заполнять SSD перед тестированием
Не раз встречал обзоры, в которых запускают чтение с нового накопителя, получают какие-то фантастические цифры и, ничтоже сумняшеся, публикуют их. Через какое-то время тест повторяют уже на не столь девственном диске, и вдруг оказывается, что время доступа выросло, а скорость, соответственно, упала.
Дело в поддержке TRIM: контроллер внутри SSD может «знать», что в конкретном блоке нет полезных данных, информация об этом хранится в FTL. И при запросе на чтение из такого блока он не обращается к медленной NAND flash, а сразу возвращает нули. На новом накопителе все блоки помечены как неиспользуемые, соответственно, в тестах на чтение он готов ставить рекорды. Только нас же интересует с какой скоростью SSD умеет отдавать не нули, а данные.
Кроме этого, некоторые накопители умеют сжимать данные, и на хорошо сжимаемых тестовых данных могут показывать не совсем те результаты, которые будут в реальной жизни.
Поэтому, перед тестированием стоит заполнять SSD несжимаемыми данными (в linux хорошим источником может служить /dev/urandom
).
шелловский скрипт
тестовый файл создаётся в текущем каталоге.
тестировал только под linux c dash, coreutils и fio из debian buster, с другими дистрибутивами навряд ли будут проблемы, а вот под freebsd и другие операционные системы скорее всего скрипт придётся «допиливать».
echo preparing...
dd if=/dev/urandom of=testfile bs=1M count=4096 status=none
sync
for A in 1 2 3; do
sleep 10
dd if=testfile of=/dev/null bs=1M iflag=direct
done
for A in 50 200 800 4000; do
echo fio: write ${A}M...
fio --name=test1 --filename=testfile --bs=4k --iodepth=1 --numjobs=1 --rw=randwrite --io_size=${A}M --randrepeat=0 --direct=1 --size=4096M > /dev/null
sync
for B in 1 2 3; do
echo sleep ${B}0
sleep ${B}0
dd if=testfile of=/dev/null bs=1M iflag=direct
done
done
echo sleep 3600
sleep 3600
dd if=testfile of=/dev/null bs=1M iflag=direct
Обнаружилось, что NVMe-накопители intel у меня сейчас только на серверах с windows; пришлось с помощью гугла, stackexchange и какой-то матери слепить вариант и под винду
вариант на ps
Из внешних зависимостей только fio
; путь к exe-файлу и временному файлу указывается в первых строчках скрипта.
$testfile = "c:\temp\testfile"
$fio = "c:\temp\fio-3.18-x64\fio"
echo "preparing..."
$filestream = New-Object System.IO.FileStream($testfile, "Create")
$binarywriter = New-Object System.IO.BinaryWriter($filestream)
$out = new-object byte[] 1048576
For ($i=1; $i -le 4096; $i++) {
(new-object Random).NextBytes($out);
$binarywriter.write($out)
}
$binarywriter.Close()
For ($i=1; $i -le 3; $i++) {
sleep 10
$time = Measure-Command {
Invoke-Expression "$fio --name=test1 --filename=$testfile --bs=1M --iodepth=1 --numjobs=1 --rw=read --direct=1 --size=4096M" *>$null
}
$seconds = $time.Minutes*60+$time.Seconds+$time.Milliseconds/1000
echo "read in $seconds"
}
foreach ($A in 50,200,800,4000) {
echo "fio: write ${A}M..."
Invoke-Expression "$fio --name=test1 --filename=$testfile --bs=4k --iodepth=1 --numjobs=1 --rw=randwrite --io_size=${A}M --randrepeat=0 --direct=1 --size=4096M" *>$null
For ($i=10; $i -le 30; $i+=10) {
echo "sleep $i"
sleep $i
$time = Measure-Command {
Invoke-Expression "$fio --name=test1 --filename=$testfile --bs=1M --iodepth=1 --numjobs=1 --rw=read --direct=1 --size=4096M" *>$null
}
$seconds = $time.Minutes*60+$time.Seconds+$time.Milliseconds/1000
echo "read in $seconds"
}
}
rm $testfile
Получил следующие результаты:
- фоновой дефрагментации в тестируемых моделях не обнаружено: скорость чтения не повышается через некоторое время после записи, в том числе длительный «отстой» (час и даже более суток) ничего не меняет, поэтому в таблице ниже привожу просто лучший результат из трёх запусков;
- под windows почему-то время чтения менее стабильно и оказалось выше ожидаемого (впрочем, возможно, дело в том, что эти сервера оказались более нагружены);
- продолжение записи сверх указанного в скрипте (перезапись файла более одного раза) не влияет на производительность.
Время чтения (в секундах) файла размером 4Гб для разных дисков:
Жирным отмечены DC модели (остальные — десктопные/ноутбучные); где SATA, а где NVMe, думаю, видно без пояснений.
Мы видим, что по мере случайной записи в файл у самсунга PM981 скорость чтения падала и в итоге упала вдвое (но осталась, правда, достаточно неплохой), а у единственной тошибы в таблице — вовсе в 3.5 раза, фактически сравнявшись с таковой у SATA устройств.
С другой стороны, у большинства устройств случайная запись или вовсе не повлияла на производительность, или повлияла незначительно.
Моя интерпретация этих результатов: скорость линейного чтения у SSD действительно может деградировать со временем, однако деградация, вызванная внутренней фрагментацией, не носит совсем уж фатального характера на большинстве дисков (на дисках intel, например, она вовсе незаметна; на дисках samsung если и заметна, всё равно скорость чтения остаётся вполне приемлемой).
Остаётся открытым вопрос деградирует ли скорость чтения со временем по другим причинам (например, из-за износа NAND flash).
Могу сказать про тошибу XG5: разницы в поведении между диском, на который по SMART было записано >>150Тб, и новым диском я не заметил — или 300-400 перезаписей недостаточно, чтобы износ flash стал заметен, или он вовсе не влияет на производительность SSD.
По поводу падения производительности после случайной записи: у меня как раз на такой тошибе хранится достаточно нагруженная БД mysql размером около 100Гб. Действительно, в полном соответствии с изложенными выше теорией и измерениями, скорость чтения «боевых» таблиц mysql оказалась достаточно низкой (около 600Мб/с), скорость же чтения других крупных файлов с той же файловой системы гораздо выше (>2Гб/с).
Как бороться с внутренней фрагментацией SSD
Если хочется побороть, то можно воспользоваться одним из первых методов дефрагментации: делаем бэкап, удаляем файлы, восстанавливаем из бэкапа. Недостаток этого метода в том, что он достаточно долгий и подразумевает downtime (а через некоторое время данные во флеш-памяти снова окажутся фрагментированными и всё придётся повторять сначала). Так что проще или смириться, или выбирать диски, которые не подвержены этой проблеме.
Придумал относительно быстрый способ избавиться от внутренней (и только от внутренней) фрагментации SSD:
sync
fsfreeze -f /mountpoint
dd if=/dev/nvme0n1p2 of=/dev/nvme0n1p2 bs=512M iflag=direct oflag=direct status=progress
fsfreeze -u /mountpoint
Не должно приводить к потере данных, но я не тестировал на боевых системах, ничего не гарантирую!
Есть ещё одно «но»: я не уверен на 100%, что все SSD правильно обрабатывают ситуацию «пишем нули в область, для которой до этого делали TRIM» (то есть с точки зрения накопителя области ФС, на которые ранее делали TRIM, могут теперь считаться не свободными, а занятыми данными).
В целом, рекомендация «забить смириться или выбирать диски» остаётся в силе.
Резюме: дефрагментация может быть полезна для некоторых SSD, однако не совсем такая (совсем не такая?) как для HDD. Нам важно не только то, что файл расположен в непрерывной цепочке секторов, но и то, что запись в эти секторы шла последовательно.
P.S. был бы благодарен, если бы читатели запустили скрипт у себя и привели цифры для своих SSD, так как моя выборка накопителей достаточно однобокая.
Поговорим о том, как настроить SSD для Windows 10. Начну просто: в большинстве случаев какой-либо настройки и оптимизации твердотельных накопителей для новой ОС не нужно. Более того, со слов сотрудников поддержки Microsoft, самостоятельные попытки оптимизации могут навредить как работе системы, так и самого диска. На всякий случай, для случайно зашедших: Что такое SSD и в чем его преимущества.
Однако, некоторые нюансы все-таки следует учесть, а заодно и прояснить вещи, связанные с тем, как в Windows 10 работают SSD диски, о них и поговорим. В последнем разделе статьи также присутствует информация более общего характера (но полезная), имеющая отношение к работе твердотельных накопителей на аппаратном уровне и применимая и к другим версиям ОС.
Сразу после выхода Windows 10, в Интернете появилось множество инструкций по оптимизации SSD, подавляющее большинство из которых представляют собой копии руководств к предыдущим версиям ОС, без учета (и, по всей видимости, попыток разобраться в них) появившихся изменений: например, продолжают писать, что нужно запустить WinSAT для того, чтобы система определила SSD или отключить автоматическую дефрагментацию (оптимизацию) по умолчанию включенную для таких накопителей в Windows 10.
Настройки Windows 10 для SSD накопителей по умолчанию
Windows 10 по умолчанию настроена на максимальную производительность для твердотельных дисков (с точки зрения Microsoft, которая близка точке зрения производителей SSD), при этом она определяет их автоматически (без запуска WinSAT) и применяет соответствующие настройки, каким-либо образом инициировать это не требуется.
А теперь по пунктам о том, как именно Windows 10 оптимизирует работу SSD при их обнаружении.
- Отключает дефрагментацию (об этом будет далее).
- Отключает функцию ReadyBoot.
- Использует Superfetch/Prefetch — функция, которая изменилась со времен Windows 7 и не требует отключения для SSD в Windows 10.
- Оптимизирует питание твердотельного накопителя.
- Функция TRIM по умолчанию включена для SSD.
Что осталось неизменным в настройках по умолчанию и вызывает разногласия в части необходимости настройки при работе с SSD: индексирование файлов, защита системы (точки восстановления и история файлов), кэширование записей для SSD и очистка буфера кэша записей, об этом — после интересной информации об автоматической дефрагментации.
Дефрагментация и оптимизация SSD в Windows 10
Многие заметили, что по умолчанию автоматическая оптимизация (в предыдущих версиях ОС — дефрагментация) включена для SSD в Windows 10 и кто-то кинулся отключать ее, кто-то изучать происходящее при процессе.
В общих чертах — Windows 10 не выполняет дефрагментацию SSD, а оптимизирует его, выполняя очистку блоков посредством TRIM (или, вернее, Retrim), что не вредно, а даже полезно для твердотельных накопителей. На всякий случай, проверьте, определила ли Windows 10 ваш диск как SSD и включила ли TRIM.
Некоторые написали объемные статьи на тему того, как работает оптимизация SSD в Windows 10. Процитирую часть такой статьи (только самые важные для понимания части) от Скотта Хансельмана (Scott Hanselman):
Я покопался поглубже и поговорил с командой разработчиков, работающих над реализацией накопителей в Windows, и этот пост написан в полном соответствии с тем, что они ответили на вопрос.
Оптимизация накопителей (в Windows 10) производит дефрагментацию SSD раз в месяц, если включено теневое копирование тома (защита системы). Это связано с влиянием фрагментации SSD на производительность. Здесь имеет место неправильное представление о том, что фрагментация не является проблемой для SSD — если SSD будет сильно фрагментирован, вы можете достичь максимальной фрагментации, когда метаданные не смогут представлять больше фрагментов файлов, что приведет к ошибкам при попытках записи или увеличения размера файла. Кроме этого, большее количество фрагментов файлов означает необходимость обработать большее количество метаданных для чтения/записи файла, что приводит к потерям производительности.
Что касается Retrim, эта команда выполняется по расписанию и необходима в связи с тем, каким образом выполняется команда TRIM в файловых системах. Выполнение команды происходит асинхронно в файловой системе. Когда файл удаляется или место освобождается другим образом, файловая система ставит запрос на TRIM в очередь. В связи с ограничениями на пиковую нагрузку, эта очередь может достигнуть максимального количества запросов TRIM, в результате чего последующие будут проигнорированы. В дальнейшем, оптимизация накопителей Windows автоматически выполняет Retrim для очистки блоков.
Подводя итог:
- Дефрагментация выполняется только если включена защита системы (точки восстановления, история файлов использующие VSS).
- Оптимизация дисков используется для того, чтобы пометить неиспользуемые блоки на SSD, которые не были помечены при работе TRIM.
- Дефрагментация для SSD может быть нужна и при необходимости автоматически применяется. При этом (это уже из другого источника) для твердотельных накопителей используется иной алгоритм дефрагментации по сравнению с HDD.
Тем не менее, если вы хотите, можно отключить дефрагментацию SSD в Windows 10.
Какие функции отключить для SSD и нужно ли это
Любой, кто задавался вопросом настройки SSD для Windows, встречал советы, связанные с отключением SuperFetch и Prefetch, отключением файла подкачки или его переносом на другой диск, отключением защиты системы, гибернации и индексирования содержимого диска, переносом папок, временных файлов и прочего на другие диски, отключением кэширования записи на диск.
Часть этих советов пришли еще из Windows XP и 7 и не применимы к Windows 10 и Windows 8 и к новым SSD (отключение SuperFetch, кэширования записи). Большая же часть этих советов действительно способна уменьшить количество данных, записываемых на диск (а у SSD имеется ограничение по общему количеству записанных данных за весь срок службы), что в теории приводит к продлению срока его службы. Но: путем потери производительности, удобств при работе с системой, а в некоторых случаях и к сбоям.
Здесь отмечу, что несмотря на то, что срок службы SSD считается меньшим, чем у HDD, с большой вероятностью купленный сегодня твердотельный накопитель средней цены при обычном использовании (игры, работа, интернет) в современной ОС и при наличии резервной емкости (для отсутствия потери производительности и продления срока службы стоит держать 10-15 процентов места на SSD свободными и это один из советов, который является актуальным и верным) прослужит дольше, чем вам требуется (т.е. будет заменен в итоге на более современный и емкий). На скриншоте ниже — мой SSD, срок использования год. Обратите внимание на графу «Всего записано», гарантия 300 Tb.
А теперь по пунктам о различных способах оптимизации работы SSD в Windows 10 и целесообразности их использования. Отмечу еще раз: эти настройки могут лишь незначительно увеличить срок службы, но не улучшат производительность.
Примечание: такой способ оптимизации, как установка программ на HDD при наличии SSD я рассматривать не стану, так как тогда не ясно, зачем вообще приобретался твердотельный накопитель — не для быстрого ли запуска и работы этих программ?
Отключение файла подкачки
Самый частый совет — отключить файл подкачки (виртуальную память) Windows или перенести его на другой диск. Второй вариант послужит причиной падения производительности, так как вместо быстрого SSD и оперативной памяти будет использоваться медленный HDD.
Первый вариант (отключение файла подкачки) — очень спорный. Действительно, компьютеры с 8 и более Гб оперативной памяти во многих задачах могут работать с отключенным файлом подкачки (но некоторые программы могут не запуститься или обнаруживать сбои при работе, например, из продуктов Adobe), тем самым сохраняется резерв твердотельного накопителя (происходит меньше операций записи).
Одновременно с этим, нужно учитывать, что в Windows файл подкачки используется именно таким образом, чтобы обращаться к нему как можно меньше, в зависимости от размера доступной оперативной памяти. По официальной информации Microsoft соотношение чтения к записи для файла подкачки при обычном использовании составляет 40:1, т.е. значительного количества операций записи не происходит.
Тут же стоит добавить, что производители SSD, такие как Intel, Samsung рекомендуют оставлять файл подкачки включенным. И еще одно примечание: некоторые тесты (двухлетней давности, правда) показывают, что отключение файла подкачки для непроизводительных дешевых SSD может приводить к повышению их производительности. См. Как отключить файл подкачки Windows, если вдруг все-таки решите попробовать.
Отключение гибернации
Следующая возможная настройка — отключение гибернации, которая также используется для функции быстрого запуска Windows 10. Файл hiberfil.sys, записываемый на диск при выключении (или переводе в режим гибернации) компьютера или ноутбука и используемый для последующего быстрого запуска занимает несколько гигабайт на накопителе (примерно равный занятому объему оперативной памяти на компьютере).
Для ноутбуков отключение гибернации, особенно если она используется (например, автоматически включается через некоторое время после закрытия крышки ноутбука) может быть нецелесообразным и привести к неудобствам (необходимость выключать и включать ноутбук) и снижению времени автономной работы (быстрый запуск и гибернация позволяют сэкономить заряд по сравнению с обычным включением).
Для ПК отключение гибернации может иметь смысл, если требуется сократить объем данных, записываемых на SSD при условии, что функция быстрой загрузки вам не требуется. Есть также способ оставить быструю загрузку, но отключить гибернацию, сократив размер файла hiberfil.sys в два раза. Подробнее об этом: Гибернация Windows 10.
Защита системы
Автоматически создаваемые Windows 10 точки восстановления, а также История файлов при включении соответствующей функции, разумеется, записываются на диск. В случае SSD некоторые рекомендуют отключить защиту системы.
Среди некоторых — Samsung, рекомендующая сделать это и в своей утилите Samsung Magician и в официальном руководстве по работе с SSD. При этом указывается, что резервное копирование может вызывать выполнение большого количества фоновых процессов и снижение производительности, хотя по факту защита системы работает лишь при внесении изменений в систему и во время простоя компьютера.
Intel для своих SSD такого не рекомендует. Так же, как и Microsoft не рекомендует выключать защиту системы. И я бы не стал: значительное число читателей этого сайта могли бы исправить проблемы с компьютером в разы быстрее, если бы у них была включена защита Windows 10.
Подробнее о включении, выключении и проверки состояния защиты системы в статье Точки восстановления Windows 10.
Перенос файлов и папок на другие диски HDD
Еще один из предлагаемых вариантов оптимизации работы SSD — перенос пользовательских папок и файлов, временных файлов и других компонентов на обычный жесткий диск. Как и в предыдущих случаях, это может сократить количество записываемых данных с одновременным снижением производительности (при переносе места хранения временных файлов и кэша) или удобства при использовании (например, при создании миниатюр фотографий из пользовательских папок, перенесенных на HDD).
Однако, при наличии отдельного емкого HDD в системе может иметь смысл хранить действительно объемные медиа-файлы (фильмы, музыка, какие-то ресурсы, архивы), к которым не нужен частый доступ именно на нем, высвобождая тем самым место на SSD и продлевая срок службы.
Superfetch и Prefetch, индексация содержимого дисков, кэширование записей и очистка буфера кэша записей
С этими функциями есть некоторые неясности, разные производители дают разные рекомендации, с которыми, думаю, следует ознакомиться на официальных сайтах.
По информации Microsoft, Superfetch и Prefetch успешно используются и для SSD, сами функции претерпели изменение и работают иначе в Windows 10 (и в Windows при использовании твердотельных накопителей. А вот Samsung считает, что эта функция не используется SSD-накопителями. См. Как отключить Superfetch.
Про буфер кэша записи в целом рекомендации сводятся к «оставить включенным», а вот по очистке буфера кэша разнится. Даже в рамках одного производителя: в Samsung Magician рекомендуется отключить буфер кэша записи, а на их же официальном сайте по поводу этого сказано, что рекомендуется держать его включенным.
Ну а насчет индексирования содержимого дисков и службы поиска я даже не знаю, что написать. Поиск в Windows — очень эффективная и полезная вещь для работы, однако, даже в Windows 10, где кнопка поиска на виду, им почти никто не пользуется, по привычке выискивая нужные элементы в меню пуск и многоуровневых папках. В контексте же оптимизации SSD отключение индексации содержимого диска не является особенно эффективным — это больше операции чтения, чем записи.
Общие принципы оптимизации работы SSD в Windows
До этого момента речь в основном шла об относительной бесполезности ручных настроек SSD в Windows 10. Однако есть некоторые нюансы, в равной степени применимые ко всем маркам твердотельных накопителей и версиям ОС:
- Для улучшения характеристик и срока службы SSD полезно иметь на нем около 10-15 процентов свободного места. Связано это с особенностями хранения информации на твердотельных накопителях. Все утилиты производителей (Samsung, Intel, OCZ и др.) для настройки SSD имеют опцию выделения этого места «Over Provisioning». При использовании функции, на диске создается скрытый пустой раздел, который как раз и обеспечивает наличие свободного пространства в нужном количестве.
- Убедитесь, что ваш SSD работает в режиме AHCI. В режиме IDE часть функций, влияющих на производительность и срок службы не работают. См. Как включить режим AHCI в Windows 10. Посмотреть текущий режим работы можно в диспетчере устройств.
- Не критично, но: при установке SSD на ПК рекомендуется подключать его к портам SATA 3 6 Гб/сек, не использующих сторонних чипов. На многих материнских платах присутствуют SATA-порты чипсета (Intel или AMD) и дополнительные порты на сторонних контроллерах. Подключать лучше к первым. Информацию о том, какие из портов являются «родными» можно найти в документах к материнской плате, по нумерации (подписи на плате) они являются первыми и обычно отличаются по цвету.
- Иногда заглядывайте на сайт производителя вашего накопителя или используйте фирменную программу для проверки обновления прошивки SSD. В некоторых случаях новые прошивки заметно (в лучшую сторону) сказываются на работе накопителя.
Пожалуй, пока все. Общий итог статьи: ничего делать с твердотельным накопителем в Windows 10 в общем-то не нужно без явной на то необходимости. Если вы только что приобрели SSD, то возможно вам будет интересна и полезна инструкция Как перенести Windows с HDD на SSD. Однако, более уместной в данном случае, на мой взгляд, будет чистая установка системы.