String.trim метод
Содержание:
- Особенности работы твердотельных накопителей
- Аппаратная поддержка
- Поддержка TRIM и Deallocate в Windows
- Включение TRIM в Linux
- Что такое TRIM
- Как включить TRIM для SSD в Windows
- Как работает SSD, или почему TRIM так полезна?
- Слабое место SSD дисков
- Примечания
- Как проверить, работает ли TRIM в Windows
- Проверяем, включаем и взаимодействуем с TRIM под Windows
- Сбор мусора и TRIM
Особенности работы твердотельных накопителей
На уровне файловых систем
Ввиду особенностей методов удаления, обычно применяемых в файловых системах, накопители «не знают», какие секторы/страницы действительно используются, а какие могут считаться незанятыми. Операции удаления обычно ограничиваются пометкой блоков данных как «неиспользуемых» в файловой системе. В отличие от, например, операции перезаписи, удаление не приведёт к физической записи в затрагиваемые секторы, содержащие данные. Поскольку накопитель не имеет доступа к структурам файловой системы — таким как список неиспользуемых кластеров — накопитель остаётся в неведении об освобождении блоков. Хотя это часто позволяло восстановить удалённые данные на традиционных HDD, несмотря на то, что они были отмечены как «удалённые» операционной системой, также это означало, что когда позже операционная система произведёт операцию записи в один из секторов, считающихся свободным местом, эта операция будет считаться операцией перезаписи с точки зрения накопителя. Для традиционных жёстких дисков эта операция никак не отличается от записи в незанятый сектор, для SSD из-за выравнивания износа перезапись данных существенно отличается от записи в незанятый сектор (каждая запись в тот же логический сектор будет произведена в разные физические секторы), потенциально ухудшая производительность дальнейших операций записи.
На физическом уровне памяти
SSD хранят данные в ячейках флеш-памяти, сгруппированных (в SSD) в «страницы» (обычно по 4 Кбайт каждая), которые, в свою очередь, сгруппированы в блоки (обычно 128 страниц или 512 Кбайт суммарно). Ячейки -флеш-памяти могут быть непосредственно записаны лишь в том случае, когда они чисты. В случае, когда они хранят данные, содержимое ячеек должно быть очищено, прежде чем в них будут записаны новые данные. В SSD накопителях операция записи может быть проделана только для страниц, однако из-за аппаратных ограничений команда удаления всегда выполняется на весь блок. В результате, запись на SSD-носитель выполняется очень быстро до тех пор, пока существуют чистые страницы, но значительно замедляется, если необходимо очищать предварительно записанные страницы. Так как очистка ячеек в странице необходима перед тем, как в них можно будет записывать снова, но только целый блок может быть очищен, процесс перезаписи инициирует цикл чтение-очистка-модификация-запись: содержимое целого блока должно быть сохранено в кеше перед тем, как оно может быть удалено с накопителя, перезаписываемые данные модифицируются в кеше и только после этого целый блок (с обновленной страницей) записывается на накопитель. Это явление известно как усиление записи (англ.).
На уровне контроллера SSD
В своих SSD-контроллерах производители используют различные техники для оптимального распределения операций записи по всему флеш-накопителю. Это делается не только для того, чтобы оптимизировать скорость путём минимизации усиления записи, но также для увеличения продолжительности жизни флеш-ячеек (выравнивание износа (англ.)), так как обычные MLC-флеш-ячейки выдерживают 3000-5000 циклов записи. Другой подход заключается в том, чтобы использовать лишнюю (резервную) память, не задекларированную операционной системе и даже BIOS, для предоставления чистых страниц для операций записи как можно дольше перед тем, как начать перезаписывать другие страницы.
Эффективность этих методов по большей части зависит от обмена информацией между ОС и контроллером SSD о том, какие страницы могут считаться занятыми, а какие — свободными. Традиционно большинство ОС не информируют накопители об удаленных секторах/страницах, что не позволяет контроллерам SSD оптимально распределять свободное пространство. Команда Trim была введена чтобы это, очищая неиспользуемые ячейки до того, как в них будет произведена запись, таким образом уменьшая время доступа.
Так как команда полностью стирает данные в ячейках, восстановить из них данные обычно не представляется возможным.
Trim не всегда поддерживается в RAID-массивах.
Аппаратная поддержка
ATA
Спецификация команды TRIM была стандартизирована как часть стандарта интерфейса AT Attachment (ATA) под руководством Технического комитета T13 Международного комитета по стандартам информационных технологий (INCITS). TRIM реализуется командой DATA SET MANAGEMENT (код операции 06h) проекта спецификации ACS-2. Стандарт ATA поддерживается как параллельным (IDE, PATA), так и последовательным (SATA) оборудованием ATA.
Недостатком исходной команды ATA TRIM является то, что она была определена как команда без очереди, и поэтому ее нельзя было легко смешать с обычной рабочей нагрузкой операций чтения и записи в очереди. SATA 3.1 представила команду TRIM в очереди, чтобы исправить это.
Существуют различные типы TRIM, определяемые словами SATA 69 и 169, возвращаемыми командой ATA IDENTIFY DEVICE:
- Недетерминированный TRIM: каждая команда чтения по адресу логического блока (LBA) после TRIM может возвращать разные данные.
- Детерминированная TRIM (DRAT): все команды чтения LBA после TRIM должны возвращать одни и те же данные или становиться детерминированными.
- Детерминированный ноль чтения после TRIM (RZAT): все команды чтения LBA после TRIM должны возвращать ноль.
В слове SATA 105 содержится дополнительная информация, которая описывает максимальное количество 512-байтовых блоков на команду DATA SET MANAGEMENT, которую может поддерживать диск. Обычно это значение по умолчанию составляет 8 (или 4 КБ), но многие диски уменьшают это значение до 1, чтобы соответствовать требованиям к оборудованию Microsoft Windows для TRIM, время выполнения этой команды не должно превышать 20 мс или 8 мс × (количество записей диапазона LBA), в зависимости от того, что больше и всегда должно быть меньше 600 мс.
Отдельный диапазон LBA называется записью диапазона LBA и представлен восемью байтами. LBA выражается первыми шестью байтами записи диапазона LBA, а длина диапазона — это счетчик с отсчетом от нуля (например, 0 = 0 и 1 = 1), представленный оставшимися двумя байтами. Если длина двухбайтового диапазона равна нулю, то запись диапазона LBA должна быть отброшена как заполнение. Это означает, что для каждого 512-байтового блока диапазонов TRIM, поддерживаемых устройством, максимум составляет 64 диапазона по 32 МБ или 2 ГБ. Если устройство поддерживает SATA Word 105 на 8, то оно должно иметь возможность обрезать 16 ГБ с помощью одной команды TRIM (УПРАВЛЕНИЕ НАБОРОМ ДАННЫХ).
SCSI
SCSI предоставляет команду UNMAP (полный аналог TRIM) и команду WRITE SAME (варианты 10 и 16) с установленным флагом UNMAP.
SD / MMC
Команда MultiMediaCard и SD ERASE (CMD38) обеспечивает аналогичные функции с командой ATA TRIM, хотя требует, чтобы стертые блоки перезаписывались нулями или единицами. eMMC 4.5 дополнительно определяет подоперацию «отбрасывать», которая более точно соответствует ATA TRIM в том смысле, что содержимое отброшенных блоков может считаться неопределенным (т. е. «безразлично»).
NVM Express
В наборе команд NVM Express есть общая команда управления набором данных , которая указывает на намерение хоста для устройства хранения в наборе диапазонов блоков. Одна из его операций, deallocate, выполняет обрезку. Он также имеет команду Write Zeroes, которая дает подсказку об освобождении и позволяет диску обрезать и возвращать нули.
Поддержка TRIM и Deallocate в Windows
TRIM — это команда ATA, которая может передаваться в режимах AHCI и IDE. В дисках NVMe команда Deallocate является эквивалентом TRIM в ATA, поэтому на практике разницы нет.
В ОС Microsoft TRIM поддерживается начиная с Windows 7. В Windows Vista и XP нужны костыли в виде стороннего ПО (читатель блога Виталий К. так и не прислал обещанную инструкцию, но поисковики никто не отменял). Deallocate поддерживается в Windows 8 и новее.
Обычно, работу TRIM проверяют . На самом деле она показывает лишь то, что TRIM включен, т.е. ОС посылает команды контроллеру. Но утилита fsutil понятия не имеет, что происходит с ними потом.
Включение TRIM в Linux
Примечание. В Ubuntu, начиная с версии 14.04, TRIM включать вручную уже не нужно!
Во-первых для использования TRIM, необходимо, чтобы файловая система была ext4.
Во-вторых включение команды TRIM указывается в опции монтирования для раздела ext4 в файле fstab. Конкретно это опция discard
Кроме этого, для раздела на SSD диске можно добавить опции noatime (или realtime) и nodiratime — это снижение нагрузки по записи, не будут обновляться даты доступа к файлам и папкам.
Также можно добавить опцию commit и указать значение допустим 60 секунд — отложенные операции записи будут выполняться на раздел раз в 60 секунд. Но эту опцию можно добавлять только в том случае если у вас есть UPS (ИБП), или на ноутбуке!
Таким образом примерная строка fstab
может выглядеть таким образом:
UUID=aeade6fd-2b24-4e59-bc8c
/ext4 noatime,discard,errors=remount-ro,commit=60 0 1 В Linux можно выполнить команду TRIM и вручную:
sudo fstrim / -v
В этом примере команда применяется к корневой файловой системе.
Что такое TRIM
У электронных (SSD) дисков есть отличие от магнитно-механических (HDD) которое влияет на скорость записи. В HDD дисках запись выполняется «поверх» старых данных. Блоки диска, которые ранее содержали данные, а затем эти данные были удалены, просто помечаются как свободные. И когда нужно выполнять запись, контроллер HDD сразу записывает новые данные в эти свободные блоки.
Но при использовании флэш-памяти, блоки которые ранее содержали какую-то информацию, перед записью должны быть очищены. Это приводит к тому, что при записи в ранее использованные блоки скорость записи сильно падает, ведь контроллеру нужно их подготовить для записи (очистить).
Проблема в том, что операционные системы традиционно не работают с файловой системой таким образом, что при удалении файлов очищается содержание блоков на диске. Ведь на дисках HDD в этом не было необходимости.
Поэтому при использовании SSD дисков возникает эффект «деградации сборщика мусора». А эта подпрограмма обрабатывает все сектора из списка.
Сборщик мусора работает в те моменты, когда диск простаивает. То есть, когда операционная система не присылает запросы на чтение или запись данных. Поэтому с момента получения команды TRIM, до фактического удаления этих секторов проходит некоторое время.
Если в очереди на тримеризацию много секторов, их очистка может занять продолжительное время. Например, если выполнить быстрое форматирование целого раздела, то TRIM такого объема может быть длительным.
Однако нет необходимости сидеть и ждать когда процесс закончится. Даже если диск будет выключен, то обработка очереди возобновится после его включения.
Как включить TRIM для SSD в Windows
TRIM – это важная функция (команда), позволяющая значительно продлить срок службы твердотельного накопителя SSD. Если функция TRIM задействована и работает, то при удалении файлов с SSD происходит полная очистка данных с неиспользуемых ячеек памяти. При простом же удалении данных пользователем ячейки просто помечаются как неиспользуемые, но фактически остаются заполненными.
Как правило, поддержка TRIM для SSD задействована в операционных системах Windows (включая Windows 7 / 8 / 10) по умолчанию. Но иногда случается так, что по тем или иным причинам эта опция может быть и не активирована. Поэтому для поддержания производительности и продления срока службы вашего SSD-накопителя всё же лучше проверить, работает ли функция TRIM.
Как это сделать, а также о том, как включить TRIM в Windows, если функция не работает, читайте в этой краткой инструкции.
Как работает SSD, или почему TRIM так полезна?
А вот сейчас будет кусок теории, в которой я позволю себе утверждать, что TRIM не полезна… Она строго обязательна. SSD – это устройство, куда понапихана куча чипов памяти. Операционной системе необходимо иметь постоянный к ним доступ с целью читать, записывать и стирать данные с этих чипов. И самому диску это дело нужно как-то организовывать. И изначально вся попадающая на диск информация разбивается на блоки данных. Которые, в свою очередь, делятся на страницы или листы данных. Диск – это, по сути, привычная со школьной скамьи библиотека. Школьная, студенческая, городская, областная… И аналогия с объёмами данных здесь та же. Но смысл един – куча полок с кучей книг на каждой. Однако, в отличие от библиотечной, книги здесь на полке лежат стопками. Одну книгу не взять: диску SSD, чтобы страницу памяти удалить, приходится удалять сначала блок полностью, выбранное затирать, а оставшееся копировать и вставлять обратно
И не важно, толстая ли “книга” или их совсем немного: сначала диску нужно перелопатить весь блок памяти полностью, чтобы удалить (пусть даже крохи) информацию. И в качестве виртуального библиотекаря в нашем случае используется буфер памяти (временное хранилище)
В общем, система далека от эффективности: ведь всякая операция по перемещению файлов на SSD диск моментально привязывается к производительности системы в части скорости записи на носитель. Ведь SSD, в отличие от HDD, НЕ ПОНИМАЕТ КАКИЕ СЕКТОРА ДИСКА ИСПОЛЬЗУЮТСЯ, и что такое “свободное пространство”. И TRIM SSD нужна именно для этого. Как воздух. Кроме того, встаёт вопрос о физическом износе чипов памяти. Для некоторых этот вопрос почему-то всегда спорный, однако поверьте – подобные частые пертурбации по записи-удалению гарантийно снижают срок работы любого устройства. Именно TRIM и заставляет SSD работать с меньшими по объёму кластерами памяти. И даже более того, как только появляется команда на удаление файлов, SSD автоматически посылает trim-команду на освобождение необходимого дискового пространства. И здесь показатели записи на диск пользователя приятно удивляют.
Слабое место SSD дисков
О преимуществах ССД дисков перед HDD наслышаны многие. И я уверен, что каждый из владельцев ПК был бы не прочь поменять в своей машине медленные жужжащие винчестеры на тихую и быструю память. Однако не все знают о таком малоприятном свойстве твердотельных дисков, как ощутимое подтормаживание, обнаруживаемое после многочисленных циклов стирания-записи очередной информации.
Дело в том, что в HDD этот процесс происходит «безболезненно». Получив уведомление о удалении файла, система отмечает адреса кластеров, которые он занимает. И новые данные при сохранении просто записываются поверх старых в это зарезервированное место.
К сожалению, в твердотельных накопителях все происходит совершенно по-другому. Для хранения информации в них используются MLC и TLC флеш-память (в недорогих), разбитая на «страницы» размером в 4 Кбайта. Группа из 128 страниц образует блок, объемом 512 Кбайт. При этом система управления информацией на MLC SSD имеет такие особенности:
- Запись производится только в предварительно очищенные ячейки;
- Данные могут сохраняться в отдельные «страницы»;
- Удаление информации выполняется только для всего блока;
Абсурд!
Логически мыслящие читатели сразу увидят в этом абсурдность ситуации. И спросят: «Как быть, если часть «страниц» в блоке занято нужными файлами, а в остальные нужно произвести запись?». Технологический секрет состоит в использовании кэш-памяти твердотельного диска, где вышеперечисленные ограничения не действуют. Система в этом случае работает по такому алгоритму:
- Имеется информация о блоке, в котором часть страниц не используется (там физически хранятся данные с логически удаленного файла);
- Для записи в это место новой информации данный блок полностью копируется в кэш, после чего удаляется с флеш памяти диска;
- В кэше ненужные страницы стираются (здесь это уже можно осуществлять);
- Подчищенный блок записывается назад, на свое место;
- Теперь в свободные страницы блока можно сохранить новую информацию.
Как вы понимаете, такой процесс занимает определенное время. Это выражается в заметном торможении при сохранении объемных файлов на SSD. На который уже многократно что-то записывалось и стиралось.
С целью сохранения высокой скорости записи твердотельных накопителей, разработчики предусмотрели в системе функцию Trim SSD. Что с английского означает «подрезать». Суть ее заключается в том, чтобы заранее постирать ненужную информацию с предназначенных для записи страниц флеш-памяти.
Способ очистки, такой же как и описанный выше. Но происходит он в фоновом, режиме, не создавая дополнительной нагрузи на работу процессора, диска, ОС и не влияя на запущенные приложения.
Такая возможность предусмотрена во многих современных операционных системах, работающих на ПК, серверах, смартфонах и других устройствах.
Трим не работает с виртуальными дисками, образами и с большинством RAID-массивов. Поскольку Trim является частью интерфейса ATA, то внешние накопители, подключаемые через USB, так же не поддерживают данную опцию. Исключение составляют некоторые «эсэсдэшники» работающие через Thunderbolt.
Примечания
- (англ.). INCITS T13. INCITS. Дата обращения: 8 июля 2009.
- Shimpi, Anand Lal. (англ.). AnandTech.com (18 March 2009). Дата обращения: 19 июня 2010.
- ↑ Shimpi, Anand Lal. (2009-03-18). p. 10.
- Shimpi, Anand Lal. (2009-03-18). p. 11.
- ↑ Savill, John. (англ.). WindowsITPro (21 April 2009). Дата обращения: 19 июня 2010.
- ↑ Shimpi, Anand Lal. (2009-03-18). p. 7.
- ↑ Shimpi, Anand Lal. (2009-03-18). p. 5.
- Shimpi, Anand Lal. (2009-03-18). p. 8.
- ↑ Shimpi, Anand Lal. (2009-03-18). p. 6.
- (англ.). TechGage. TechGage (5 March 2010). Дата обращения: 16 апреля 2010.
- Gareth Halfacree. (англ.). bit-tech.net (23 March 2010). Дата обращения: 2 ноября 2010.
- (англ.). MSDN (9 May 2009). Дата обращения: 2010-08-12].
- (англ.). Microsoft downloads. Microsoft Corporation (12 November 2008). Дата обращения: 8 июля 2009.
- (англ.) (недоступная ссылка). Windows IT Pro. Дата обращения: 1 сентября 2010.
- (англ.) (недоступная ссылка). Kernel Newbies. Дата обращения: 1 сентября 2010.
- (29 июля 2010).
- (29 декабря 2010).
- (23 сентября 2012).
- (недоступная ссылка) (5 мая 2011).
- Daniel Eran Dilger. (англ.). appleinsider.com (4 March 2011). Дата обращения: 7 марта 2011.
- . . Дата обращения: 7 января 2021.
- (рус.). fullhub.ru. Дата обращения: 7 января 2021.
- (англ.) (pdf). Intel Corporation. Дата обращения: 23 января 2010.
- (англ.). XtremeSystems. Дата обращения: 23 января 2010.
- .
Как проверить, работает ли TRIM в Windows
Вопрос, доходят ли команды TRIM до контроллера SSD, вовсе не такой праздный, как может показаться на первый взгляд. С одной стороны, обмен данными между ОС и чипом твердотельного накопителя с помощью драйвера, а с другой – нельзя исключать дефект прошивки контроллера SSD.
Утилита TRIMcheck
Недавно волны Интернета вынесли к берегу маленькую утилиту TRIMcheck, с помощью которой проверить работу TRIM очень просто. (Примечание. По сообщениям читателей, утилита не сработает, если диск сжат (флажок в свойствах диска.)
- Запустите утилиту с диска, на котором хотите проверить работу TRIM, и нажмите Enter.
- Закройте окно, подождите пару минут и повторно запустите утилиту.
На рисунке показано сообщение, подтверждающее работу TRIM.
Вкратце, принцип работы утилиты при этих запусках таков:
- Утилита записывает данные на диск и отмечает адреса виртуальных блоков, в которых они размещены. Эти адреса она сохраняет в JSON-файл в своей папке, после чего удаляет данные, что порождает отправку команды TRIM.
- Утилита смотрит, находятся ли записанные ранее данные по сохраненным адресам. Их отсутствие означает, что контроллер принял команды TRIM к сведению и удалил данные.
Что будет при следующем запуске? Пока файл JSON лежит рядом с утилитой, она сверяется с ним. Удаление файла возвращает вас к шагу 1, а чтение сообщений утилиты снимает лишние вопросы.
Что делать, если TRIM «не работает»
Надо понимать, что контроллер SSD вовсе не обязательно бросится удалять данные по факту получения команды, особенно если он склонен к сбору мусора при бездействии. У меня в ноутбуке накопитель на SandForce прибрался сразу, а в планшете SanDisk на собственном контроллере отреагировал с солидной задержкой по времени.
Если утилита указывает на неработающий TRIM, перед следующим ее запуском:
- перезагрузите ПК (это рекомендует и автор программы)
- (в Windows 8) отправьте набор команд TRIM из оптимизатора дисков
- оставьте ПК в покое, позволив ему перейти в режим бездействия
Допустим, и на следующий день вы обнаружили, что данные до сих пор не удалены. Либо контроллер до сих пор не выполнил сбор мусора, либо у него проблема с TRIM.
1. Установите драйвер SATA последней версии
В свойствах контроллера вы можете посмотреть, используется стандартный драйвер (msahci.sys) или сторонний, как показано на рисунке ниже.
Обновление стороннего драйвера до последней версии – хорошая идея! Если вы не можете найти ее на сайте поставщика, нажмите здесь. После установки драйвера перезагрузитесь и заново выполните тест TRIMcheck.
2. Переключитесь на стандартный драйвер от Microsoft
Если у вас самый свежий сторонний драйвер, переход на msahci — это хороший способ исключить переменную драйверов из уравнения.
- В диспетчере устройств щелкните правой кнопкой мыши по контроллеру SATA и выберите в меню “Обновить драйвер”.
- Выполнить поиск драйверов на этом компьютере
- Выбрать драйвер из списка установленных драйверов
- Стандартный контроллер SATA/AHCI, как показано ниже.
После перезагрузки будет использоваться драйвер msahci.sys.
3. Обновите прошивку SSD
Если пляски с драйверами не помогают, можно попробовать обновить прошивку накопителя. Вы найдете ее в разделе поддержки (Support) на сайте производителя.
Проверяем, включаем и взаимодействуем с TRIM под Windows
Если Вы пропустили, то напомним, что TRIM, — это такая технология контроллера, которая существенно ускоряет работу накопителя, методом уведомления оного о блоках, которые уже не содержатся в файловой системе и каковые можно очистить, так сказать, физическим путём. В общем говоря, нужна для скорости и стабильности работы.
Дабы проверить включен ТРИМ в системе или нет, собственно, нам потребуется консоль, она же командная строка.
Чтобы запустить командную строку, нажмите сочетание клавиш Win+R и в появившемся окне «Выполнить» введите cmd. Сама утилита командной строки лежит обычно в папке C:\Windows\System32\cmd.exe и её можно запустить оттуда (желательно методом «Правая кнопка мышки -> Запуск от имени администриратора»).
В появившейся консоли необходимо ввести команду:
fsutil behavior query DisableDeleteNotify
Ответом будет одна или две строки со значением 0 / 1 в качестве результирующего параметра.
Первая строка (которая NTFS) отвечает, как ни «странно», за файловую систему NTFS, вторая за серверную файловую систему ReFS. Если Вы не находитесь за Windows Server, то Вас должна интересовать только первая строка.
Что к чему:
- 0, — значит всё в порядке и TRIM включен;
- 1, — TRIM выключен на уровне системы.
В случае, если у Вас многострадальная единичка, рекомендуется, собственно, включить TRIM, дабы ускорить работу SSD на порядок-другой. Чтобы это сделать введите команду:
fsutil behavior set disabledeletenotify NTFS 0
..или..
fsutil behavior set disabledeletenotify ReFS 0
Соответственно, для той или иной файловой системой (ну вдруг Вы правда за сервером сидите или каким-то волшебным образом зачем-то отформатировали диск в этом формате?).
Если получите ошибку «Отказано в доступе», то повторите процедуру, запустив консоль от имени администратора (выше написано как это делается). После включения или выключения лучше сделать перезагрузку.
Но мало включить или выключить TRIM на уровне системы, важно, чтобы контроллер поддерживал функционал технологии и он исправно работал, для чего это неплохо бы проверить, что мы сейчас и сделаем
Скачайте программку TRIMcheck для 32-х или 64-х битной версии системы (в зависимости от того какая у Вас Windows), поместите файл программы на соответствующий SSD (который хотите проверить), запустите его (лучше тоже от имени администратора) и нажмите Enter.
Дождитесь окончания работы скрипта и еще раз нажмите в Enter. После чего обязательно подождите от 20 секунд до нескольких минут (лучше больше, чем меньше) и запустите программу повторно.
Результат будет, либо как на скриншоте выше (т.е to be WORKING!) и значит, что всё отлично и прекраснейшим образом работает, либо как на скриншоте ниже:
Тобишь, to be NOT WORKING, что значит, что ТРИМ нифига не работает и всё очень грустно. В последнем случае Вам надо будет сделать следующее:
- Проверить, что в BIOS режим контроллера SATA находится в положении ACHI, а не IDE, RAID или каком-либо еще;
- Проверить, как это мы делали выше, что в Windows включен TRIM и даже, если Вы это делали, то выключить и включить повторно (перезагрузившись при каждом из действий);
- Попробовать скачать SSD Mini Tweaker, распаковать и запустить соответствующую версию (лучше тоже от имени администратора), где попробовать насильно включить TRIM и ACHI режим в операционной системе, не забыв тыкнуть в кнопку «Применить изменения» и потом перезагрузить компьютер:
- Обновить драйвера на Вашу мат.плату и в, особенности, на ACHI-контроллер, что можно сделать с сайта производителя или, в крайнем случае, используя DriverPack Solution;
- Перепрошить Ваш SSD на последнюю версию прошивки (как это сделать можно узнать на сайте производителя).
Пожалуй, на этом всё. Можно переходить к послесловию.
Сбор мусора и TRIM
На рисунке ниже представлен процесс записи и удаления файлов с точки зрения ОС и твердотельного накопителя на логическом и физическом уровне. Вы любите большие картинки? 🙂
Из диаграммы видно, что логически ОС и SSD смотрят на ситуацию одинаково — с точки зрения LBA. Но на физическом уровне TRIM играет большую роль. Получив команду об удалении файла, контроллер SSD исключает из рутинных операций страницы NAND, содержащие ненужные данные.
Отправляемые операционной системой команды TRIM не является приказами контроллеру, т.е. чип лишь принимает их к сведению. Данные, ставшие ненужными, удаляются во время сбора мусора, который может выполняться как одновременно с записью, так и во время бездействия.
В этом случае активный сбор мусора помогает поддерживать пусть и не столь высокую, но зато стабильную производительность. Фоновый же сбор мусора может обеспечивать более высокую пиковую производительность, но обратной стороной медали будет существенное снижение скорости в худших сценариях.