Хабрахабр

Поднимаем производительность SSD c колен, куда нажимать и зачем

На самом деле, речь сегодня пойдёт не только о бывших в использование какое-либо время накопителях, ведь проблема низкого быстродействия может затронуть даже только что принесённый из магазина SSD. Конечно, физику не обманешь – со временем все твердотельные накопители будут терять производительность. Но причиной этому может стать не только проблема именно самого SSD. Обеспечить грамотное взаимодействие комплектующих и программного обеспечения в системе – не совсем простая задача для простых пользователей, кто не хочет (или кому попросту не надо) хоть мало-мальски разобраться в теме и послушать советы грамотных в этом плане людей. Кому-то проще переустановить операционную систему или добавить в список используемых приложений какие-то сомнительные «твикеры». Но ведь вдумайтесь — к примеру, простое с нашей точки зрения удаление файла состоит из достаточно большого количества этапов, в которых завязаны сразу несколько участников. И, если хоть один из них отработал задачу некорректно, то это сказывается на производительности диска. Что это за этапы? Кем или чем они выполняются? Как обеспечить стабильную работу? Во всём этом мы сегодня и разберёмся. Просто и наглядно, чтобы понятно было всем. И тогда станет ясно, что лечение симптомов низкой производительности SSD не поможет.

Семь бед – один Deallocate

Многие слышали про команду TRIM. Те самые заветные четыре буквы, которые вызывают множество вопросов у рядового пользователя. TRIM – одна из команд ATA, отправляемая операционной системой с целью уведомления твердотельного накопителя о том, что данные с диска были удалены пользователем и занятые физические ячейки можно освободить. Стоит отдельно сказать про SSD с интерфейсом NVMe — эти диски обладают другим набором команд для работы, но аналог ATA команды TRIM там тоже существует — называется она Deallocate и, соответственно, является идентичной. Поэтому, далее при упоминании TRIM мы будем подразумевать и Deallocate тоже. К чему речь обо всём этом? Как раз именно проблемы с выполнением данных команд в подавляющем большинстве случаев и являются причиной низкой производительности накопителей. Конечно, другие проблемы мы тоже не оставим в стороне, но всему своё время.

То есть, сами данные остаются на месте, но область помечена на удаление. В тот момент, когда вы удаляете данные с вашего накопителя, по факту удаляется запись в главной таблице файловой системы. Таким образом производители добиваются снижения износа памяти и увеличивают производительность своих накопителей в определённых сценариях. Сама «зачистка ячеек» происходит в определенное время, например, в момент простоя накопителя, пока вы отошли за чаем. К слову, после её выполнения, восстановление данных практически невозможно. Именно очисткой этих ячеек и занимается контроллер, выполняя команду TRIM.

Напомним, что Secure Erase можно выполнить на накопителе только без файловой системы и при определённых условиях. Совсем недавно мы рассказывали про технологию Secure Erase, которая схожа с TRIM, но затрагивает не только основные ячейки, но и служебные области, возвращая накопитель в полностью исходное состояние. А технология TRIM как раз и требует наличие операционной системы со всеми вытекающими требованиями.

Объясним на пальцах, как раз их 20…

Когда вы создаёте файл, операционная система отправляет команду записи по адресу определенного логического блока. Когда вы удаляете данные с диска, эти блоки помечаются свободными.
При этом, данные останутся на диске пока контроллер не захочет их перезаписать.

Сначала мы удаляем файл В, а затем записываем файл С на наш диск. Перед нами часть памяти, в которой находятся файлы А и В разных размеров, занимающих, соответственно, разное количество блоков. Для наглядного представления ситуации, когда TRIM не работает, добавим простую иллюстрацию, в которой обозначены следующие состояния:

  1. Наличие файлов А и В.
  2. Удаление нашими руками файла В.
  3. Определённое время бездействия. Заметим, что помеченные на очистку блоки данных так и остались с данными в них.
  4. Запись файла С, но сначала – удаление файла В из ячеек.

К примеру, если представить (просто представить, да), что блок данных в виде квадратика составляет 1 МБ, то на этапе 4 контроллер сначала зачищает помеченные на удаление два блока данных с файлом В и только потом записывает файл С. Если пара мегабайт места – ещё мелочи, но при активной работе с накопителем таких блоков в сумме может быть гигабайты, что уже заметно повлияет на время выполнения операций записи.

Снова по этапам: А теперь что происходит, если TRIM работает.

  1. Наличие файлов А и В.
  2. Удаление нашими руками файла В.
  3. Определённое время бездействия, в которое помеченные на удаление блоки с файлом В очищаются.
  4. Запись файла С без каких-либо задержек в область, где был файл В.

Повторим пройденное — в момент удаления нами файла B отправляется команда TRIM, и, поскольку в SSD достаточно часто простаивает, он с радостью удаляет ненужные блоки практически сразу. То есть, логика работы совсем другая. И в момент того, как мы хотим записать файл С, то он сразу же записывается на диск, а не ждёт пока для него очистят блоки с мусором.

TRIM, а есть ли ты вообще? И, если есть, то работаешь ли?

Узнать, поддерживает ли SSD команду TRIM можно при помощи достаточно большого количества свободно распространяемого программного обеспечения. Возьмём, к примеру, CrystalDiskInfo:

Для начала пройдёмся по ситуациям, когда TRIM надо запускать хитрым способом или данная команда не работает вовсе. Но демонстрация поддержки – не есть работа. Конечно, со временем ситуация может поменяться, но пока дела обстоят следующим образом:

  1. Стандартные драйверы Windows не могут выполнять TRIM на RAID массивах. В зависимости от системы и типа RAID массива, проблему может решить драйвер от Intel под названием Rapid Storage. Поддерживаются массивы 0 и 1 с драйвером версии Enterprise.
  2. Поддержка TRIM в Windows начинается с версии операционной системы с цифрой 7. Vista и, тем более, XP не поддерживают TRIM на уровне ОС. Конечно, эта проблема решается сторонним программным обеспечением, но тут всё на ваш страх и риск – рекомендовать это мы не можем и не будем.
  3. Команда Deallocate (TRIM для NVMe SSD) поддерживается только с Windows 8 и новее.
  4. TRIM не работает на виртуальных дисках.
  5. TRIM работает только в режиме AHCI.
  6. TRIM не работает при подключении накопителя через USB переходники.
  7. TRIM не работает в с файловой системой FAT32 (и более «лохматых»).

Теперь проверим – а работает ли TRIM в системе?

В запущенной от имени Администратора командной строке или PowerShell вводим команду «fsutil behavior query disabledeletenotify» без кавычек и смотрим на результат. Для начала – попробуем это узнать прямо у операционной системы. Если «1», то функционал TRIM недоступен. Если в выводе значатся «0», то это хорошо – TRIM работает. Всё верно: ноль – включённая команда, 1 – выключенная команда.

Программа работает в два этапа, между которыми может пройти как несколько секунд, так и десятки минут – всё зависит от специфики работы конкретной модели SSD. К примеру, можно использовать простую в использовании программу trimcheck от Владимира Пантелеева. Эти адреса она сохраняет в JSON-файл в своей папке, после чего удаляет данные, что порождает отправку команды TRIM. Утилита записывает данные на диск и отмечает адреса виртуальных блоков, в которых они размещены. Их отсутствие означает, что контроллер принял команды TRIM к сведению и удалил данные. Утилита смотрит, находятся ли записанные ранее данные по сохраненным адресам. Если TRIM работает, то сообщение будет соответствующим:

Собственно, если вы получили сообщение о неработоспособности, то выполните в запущенной от имени Администратора командной строке или PowerShell команду «fsutil behavior set disabledeletenotify 0» без кавычек. В противном случае надпись будет гласить TRIM appears to be NOT WORKING. Если этого не произошло, а все требования выполнены, то придётся подумать о замене накопителя. Функция TRIM, если соблюдены все условия (поддерживаемая ОС, реализация в SSD и т.д.), должна включиться и работать.

Проблемы, проблемы вместо обеда

Само собой, речь идёт про Windows до версии 8. Самая распространённая проблема – наследование. Напоминаем, что TRIM доступен только в режиме ACHI. Например, когда пользователь ставит в старые системы SSD или переходят с HDD на SSD без изменения настроек BIOS (если это необходимо) или вообще путём клонирования разделов или диска целиком. Соответственно, если SSD подключён к такой плате именно в режиме IDE, то TRIM работать не будет. К примеру, у многих материнские платы могут работать в двух режимах AHCI и IDE. Казалось бы, ситуация может встречаться редко, но на самом деле – нет. Просто наличие режима AHCI не решает проблему – Windows установит драйверы согласно выбранному IDE. Сделать это можно в диспетчере устройств в разделе «Контроллеры IDE ATA/ATAPI»: Если с настройками BIOS вы не дружите, то хотя бы проверить режим работы надо.

Решения этой проблемы существуют (даже от самой Microsoft), но рекомендовать их не стоит. Помните, что просто так после установки Windows переключить режим работы с IDE на AHCI (и обратно) без дополнительных манипуляций не выйдет – операционная система попросту не загрузится. Требуется изменение параметров реестра, добавление нужного драйвера и готовность к переустановке ОС в случае неудачи.

Включение TRIM указывается опцией discard в файле fstab. Что касается Linux-систем, то обязательным условием, помимо аппаратной составляющей, является файловая система ext4. Сама же команда TRIM запускается при помощи программы fstrim – «fstrim / -v» без кавычек и с правами рута. Дополнительными полезными опциями для раздела станут noatime (realtime или nodiratime), которые снизят запись путём отключения обновления времени последнего доступа к файлам и директориям.

Восстановить производительность этой функцией можно. Вспомним ещё про Secure Erase. Особенно, если вы быстро забиваете свой накопитель новыми данными. Только вот вряд ли надолго. Так что как временное решение – пойдёт, но оно всегда будет оставаться временным.

Невысокая скорость записи большого количества файлов (или больших файлов) после определённого порога не проблема, а особенность работы. Ещё добавим про SLC-кеширование, которое достаточно часто используется у многих SSD-накопителей без привязки к интерфейсу. Когда выделенная высокоскоростная память заканчивается, то данные начинают записываться непосредственно в память на заметно сниженной скорости – от 50 до 150 МБ/с. Суть кеширования состоит в том, что сначала записываемые данные попадают в специальную область памяти, а уже затем записываются в основную память в фоновом режиме. Это совершенно нормальный режим работы накопителей с SLC-кешом, поэтому здесь ничего сделать невозможно от слова совсем.

Что хорошо, а что плохо?

Если функция TRIM работала с самого начала, то сама по себе никуда она деться не может. Но совсем другое дело, если вы увлекаетесь разного рода твикерами, сторонними драйверами или прошивками, а также сборками операционных систем, якобы улучшенных. Все эти программы и сборки могут только навредить, если речь идёт о Windows 8 и, тем более Windows 10 – в этих ОС всё продумано как надо. В «семёрке» они могут чем-то помочь, но это скорее исключение из множества проблем, которые они могут принести.

Приобретая высокоскоростной SSD, в ваших глазах должны отражаться полученные в бенчмарках заявленные скоростные показатели. Отдельно надо сказать несколько слов про NVMe накопители и драйверы для них. Установил и забыл, как говорится, наслаждаясь его высокими скоростями. Часто это так и есть, например – с накопителями Kingston. Тут уже не отсутствие Deallocate является причиной недостаточного быстродействия, а стандартный NVMe драйвер. Но с SSD других производителей это может быть не всегда так, что, очевидно, расстроит любого. Да-да, при покупке NVMe SSD некоторых производителей обязательно приходится отправляться на сайт его сайт и скачивать соответствующий драйвер – разница со стандартным может превышать двукратную!

Вот теперь, вроде, всё.

Как оказалось – не всё так страшно, как выглядело не первый взгляд. От пользователя требуется выполнение всего нескольких рекомендаций, чтобы система работала корректно и радовала производительностью твердотельного накопителя долгое время. Повторим их напоследок – чистый дистрибутив операционной системы, актуальные драйверы и прошивки от производителя, а также отсутствие сторонних «настройщиков» системы, которые, по заверению их разработчиков, увеличивают производительность на 146%. Если проблема не аппаратная, то никаких нареканий к диску у вас не будет в течение всего срока жизни вашей системы. Так что никакого длинного заключения-словоблудства не будет – всё, что надо было сказать уже сказано. Ёмких вам SSD, их высоких скоростей и стабильной работы!

Для получения дополнительной информации о продуктах HyperX и Kingston обращайтесь на сайты компаний.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть