Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Особенности функционирования накопителей SSD. Команда TRIM.

Особенности функционирования накопителей SSD. Команда TRIM.

TRIM - это команда, позволяющая операционной системе сообщить твердотельному накопителю (SSD) о том, какие блоки данных больше не используются и могут быть очищены накопителем самостоятельно. Применение TRIM позволяет устройству SSD уменьшить влияние сборки мусора, которая в противном случае в дальнейшем выразится падением производительности операций записи в затронутые сектора. И тем самым значительно продлить срок эксплуатации SSD накопителя.

Характерной особенностью твердотельных накопителей является и то, что их производительность не постоянна, а зависит от многих факторов. В первую очередь от того, в каком состоянии – чистом или заполненном – находится их флеш память. Кроме того, влияние на скорость записи могут оказывать различные технологии кэширования, которые в последнее время стали широко использовать многие производители. Когда мы удаляем файл на HDD, то данные не стираются из ячейки (кластера). После того, как мы решили записать на диск другие файлы, то данные записываются в ячейки поверх удаленных.

Но этот вид записи на накопитель никак не подходит для SSD, так как они разработаны по другой технологии. Накопители используют flash-память и запись данных поверх удаленных данных здесь недопустима. В SSD сначала происходит копирование данных из кластера в кэш, потом кластер очищается, и начинается запись новой информации, на место старой.

Ячейки NAND-флеш-памяти могут быть непосредственно записаны лишь в том случае, когда они чисты. В случае, когда они хранят данные, содержимое ячеек должно быть очищено, прежде чем в них будут записаны новые данные.

В SSD накопителях операция записи может быть проделана только для страниц, однако из-за аппаратных ограничений команда удаления всегда выполняется на весь блок. Поэтому содержимое целого блока должно быть сохранено в кеше перед тем, как оно может быть удалено с накопителя, перезаписываемые данные модифицируются в кеше и только после этого целый блок (с обновленной страницей) записывается на накопитель. SSD пишут и читают данные страницами, записать можно только на очищенные страницы, а очистить страницы можно только большими блоками.

Например, у диска размер страницы 8 КБ, в блоке находится 128 страниц, таким образом, размер блока — 1024 КБ. Как только в блоке останутся исключительно пустые и готовые для очистки страницы, этот блок стирается и становится пустым целиком. Чтобы скрыть физическую реализацию, диск поддерживает карту соответствия логических и физических номеров страниц (Flash Translation Layer). Контроллер диска работает на уровне страниц и не знает ничего о файловой системе, а операционная система никак не извещает диск об удалённых файлах, какие секторы могут быть очищены. Несложно видеть, что рано или поздно каждая страница диска будет занята и ему будет некуда писать данные. Чтобы решить это проблему, и была добавлена команда ATA TRIM.

Твердотельные накопители и операционные системы обычно не находятся в состоянии тесного диалога. Когда вы удаляете файл, ОС отмечает пространство, которое занимают соответствующие данные, как свободное, но об этом ничего не известно самому накопителю. Спустя некоторое время образуется много свободного места (с точки зрения операционной системы), которое SSD рассматривает как по-прежнему занятое нужными данными. И лишь когда ОС даёт команду на запись информации на блок, который заполнен данными, SSD наконец-то выясняет, что эти данные уже не нужны. До определённого момента такие фрагменты данных раскиданы по всему объёму накопителя (так называемые "точки сборки мусора", garbage collection), замедляя работу накопителя и изнашивая свободные ячейки памяти NAND.

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

TRIM - это команда, позволяющая операционной системе сообщить твердотельному накопителю (SSD) о том, какие блоки данных больше не используются и могут быть очищены накопителем самостоятельно. Применение TRIM позволяет устройству SSD уменьшить отрицательное влияние сборки мусора, которая в противном случае в дальнейшем выразится падением производительности операций записи в затронутые сектора. И тем самым значительно продлить срок эксплуатации SSD накопителя.

Windows 7, Windows 8, Windows Server 2008, Linux, OpenSolaris, FreeBSD и OS X – все эти системы уже поддерживали TRIM. Но Apple позволяет использовать TRIM только на своих OEM-накопителях, тогда как при установке стороннего SSD после покупки компьютера Mac данная функция отключена.

Когда TRIM не поддерживается операционной системой, то существуют утилиты, позволяющие отправлять эту команду «вручную». Обычно такие программы с помощью ОС составляют список свободных блоков и передают его диску в виде последовательности команд TRIM. Такие продукты существуют как в виде универсальных утилит (hdparm версии 9.17 и выше), так и в виде ПО для отдельных дисков.

Но на практике в арсенале у любого накопителя есть внутренние продвинутые технологии, позволяющие сохранять высокую скорость работы. В моменты простоя современные SSD упреждающе освобождают выведенные из использования для хранения данных страницы флеш-памяти, что позволяет им поддерживать свою скорость на высоких значениях, свойственных новому SSD (технология TRIM тоже решает эту проблему, как только данные сотрутся, они удалятся и из ячеек, а потом произойдет запись новых данных).

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

- наличие накопителя, которые поддерживают TRIM;

- ОС, которая поддерживает TRIM (это есть уже в Windows 7);

- режим AHCI (AHCI - новый и современный режим подключения для SATA, который заменил IDE. AHCI позволяет ускорить передачу данных через соединение SATA. Это важный параметр в BIOS, так как он ускоряет передачу данных, если вы используете SSD-диск подключенный по SATA).

А еще нужно, чтобы был установлен драйвер Microsoft Storage, но обычно он устанавливается автоматически, конечно, если например, контроллер SATA поддерживает режим AHCI. Еще TRIM не будет работать, если активна функция восстановления системы и, если вы используете RAID-массивы. TRIM работает не только на Windows, но и на Linux (но необходимо наличие ядра версии 2.6.33 и выше).

Функция TRIM нужна для избежания падения производительности в SSD дисках, и появилась, уже начиная с версии ОС Windows 7. Операционная система посылает её диску с указанием секторов, которые могут быть очищены. К сожалению, в некоторых случаях нет возможности послать её диску:

- если диск находится в RAID с аппаратным контроллером (LSI, Adaptec и т. п.),

- если диски находится в firmware-RAID, в частности, Intel RST RAID 1/10/5/6,

- если диск подключен по USB (ограничение протокола),

- если диск зашифрован программно через TrueCrypt, dm-crypt, GELI и т. п. (может поддерживаться, но обычно не включается по соображениям безопасности).

Если в результате тестирования выясняется, что диск не получает команду TRIM, то вскоре для записи может остаться совсем мало свободных страниц. Но они будут так как каждый диск содержит некоторую зарезервированную область, которая служит как запас свободных страниц и запас блоков на замену полностью изношенным. Чтобы узнать размер этой области нужно посмотреть, какой физический объём памяти установлен на диске и сколько LBA указано в документации. Например, Samsung SSD 840 Pro 512 GB имеет 512 ГБ памяти, при этом резерв составляет 35 ГБ или 6,85 %. Samsung SSD 850 Pro 128 ГБ имеет резерв — 7,6 %.

Итак, если мы заполним весь диск, потом удалим все файлы, то без поддержки TRIM диск сможет писать только на какую-то часть от 6,85 % объёма диска. Часть, потому что этот резервный объём будет частично состоять из не полностью пустых блоков из-за фрагментации. Наличие этой области позволяет хоть как-то продолжать перезапись файлов на диске.

Пример худшей ситуации: писать некуда, хотя объём занятых страниц не превышает доступный пользователю без резерва. В этом случае одновременно с записью работает сборщик мусора, который будет читать блок в оперативную память, стирать блок на диске (долгая операция, стирание занимает 3000 мкс в сравнении с 900 мкс записи в пустую страницу) и записывать блок из оперативной памяти. Задержка происходит также из-за роста Write Amplification — на одну логическую операцию записи приходится 5-10 физических операций записи. Поэтому чем больше у диска есть свободного места для манёвров, тем выше скорость записи. Сборщик мусора в фоне занимается не только очисткой и дефрагментацией блоков, но и равномерным распределением циклов записи/очистки (P/E) по блокам, чтобы они изнашивались одинаково.

Промышленные диски часто имеют 50% и больше резервной области, поэтому для них отсутствие TRIM не очень критично. Остальные диски чаще всего вообще не имеют явно заявленной резервной области, или она недостаточна. Тесты показывают, что хороший эффект имеет объём over-provisioning 25-29% от общего объёма физической памяти (включая резервную область). Поэтому если у диска недостаточный объём резервной области, то нужно сделать over-provisioning самостоятельно.

Если диск получает TRIM от ОС, то беспокоиться не о чем, достаточно оставлять часть места на диске свободным. Если используются дорогие промышленные диски, то проверьте объём встроенной резервной области, если он достаточен, то проблем с записью не будет. В остальных случаях нужно оставить не размеченную область, чем больше её размер, тем меньше будет стандартное отклонение латентности записи. Иногда сборщик мусора не успевает подготовить чистые блоки и скорость записи может просесть и быть непостоянной.

Например, твердотельный накопитель Plextor M6e (PCI Express SSD) - его работа через протокол AHCI решает множество проблем с удобством применения. Для него не нужно никаких специальных драйверов – он видится любой сколь-нибудь современной операционной системой и так. Более того, все встроенные алгоритмы ОС, рассчитанные на обслуживание SSD, остаются полностью функциональными. Например, с M6e прекрасно работает команда TRIM. Нет никаких препятствий и на пути использования этого твердотельного накопителя в роли загрузочного диска: UEFI материнских плат определяет наличие PCI Express SSD в системе и добавляет его в список доступных дисковых устройств для запуска операционной системы.

Что же касается восстановления скорости работы за счёт фоновой сборки мусора без участия команды TRIM, то тут есть свои особенности. Накопители Plextor прошлого поколения обладали возможностью возвращать скорость своей работы без участия TRIM. В Plextor M6e эта технология сохранилась, но работает она не совсем полноценно.

Во-первых, скорость в результате сборки мусора возвращается не до первоначальных величин, она оказывается немного ниже, чем у свежего SSD.

Во-вторых, накопитель предварительно освобождает для последующих операций лишь порядка 9,5 Гбайт. То есть, с высокой скоростью после сборки мусора удаётся записать только такой объём данных, потом же производительность снова упадёт до следующего простоя. И это – не слишком впечатляющий результат, так как размер зарезервированного и недоступного для пользователя пространства у Plextor M6e 256 Гбайт превышает 17 Гбайт. Иными словами, в процессе фоновой сборки мусора вполне мог бы участвовать и более заметный объём флеш-памяти.

Поддержка и включение TRIM, позволяет полностью переложить заботу о «здоровье» вашего SSD на плечи операционной системы: она сама скажет вашему SSD где, когда и что «подчистить». При этом встроенные функции уборки мусора твердотельного накопителя становятся не особенно нужными и ими можно безболезненно пренебречь, оставив основные функции энергосбережения вашего компьютера включенными.

 

 


Лицензия