Коллега по работе упомянул, что посоветовал купить SSD своему знакомому, хотевшему ускорить работу ноутбука с Windows XP. Я отметил, что тому понадобится стороннее ПО для TRIM. «А что будет с диском без TRIM?», — спросил коллега. Ограничившись кратким ответом, я пообещал ему подробно осветить этот вопрос в блоге. Тем более, что тут есть возможность показать все очень наглядно.
Чтобы понять, в чем заключается смысл TRIM, нужно разобраться, как работает запись данных на диск.
[+] Сегодня в программе
- Примечание о Deallocate
- Как данные записываются и стираются с диска
- Как работает SSD без TRIM
- Как работает SSD с TRIM
- Сбор мусора и TRIM
- Нужна ли SSD дефрагментация
- Поддержка TRIM и Deallocate в Windows
- Как проверить, работает ли TRIM в Windows
- А у вас все нормально с TRIM?
Примечание о Deallocate
Статья была написана до появления на рынке накопителей с интерфейсом NVMe. В нем команда Deallocate является аналогом команды TRIM для ATA. Все написанное в статье в равной степени применимо к TRIM и Deallocate, но я не стал добавлять вторую команду в каждое предложение, чтобы не перегружать текст.
Как данные записываются и стираются с диска
Операционная система общается с жестким диском с помощью механизма адресации логических блоков (Logical Block Addressing, LBA). Например, когда вы сохраняете файл, ОС отправляет команду записи по адресу определенного логического блока. Когда вы удаляете данные с диска, их LBA помечаются свободными.
При этом данные никуда не пропадают до тех пор, пока они не будут перезаписаны новыми.
Этот же принцип работает и в твердотельных накопителях, с той разницей, что в них контроллер сопоставляет LBA со страницами во флэш-памяти. Однако есть одна проблема…
Как работает SSD без TRIM
Представьте гипотетический SSD, состоящий из одного блока в пять страниц по 8KB. Сначала вы создали два файла: книгу Excel и документ Word размерами соответственно 8KB и 16KB. Потом вы удалили первый файл и решили сохранить на диск картинку в формате JPEG размером 24KB.
При отсутствии TRIM весь процесс выглядит так.
Давайте разберем этапы процесса, держа в уме, что контроллер записывает данные в отдельные страницы памяти, но стирать может только целые блоки.
- Вы создали два файла и удалили один из них. Если TRIM не работает, накопитель узнает об удалении книги Excel только в тот момент, когда ОС прикажет ему перезаписать LBA, покрывающий ставший ненужным файл.
- Вы сохраняете изображение в формате JPEG размером 24KB. Операционная система знает, что на диске достаточно места (8+16-8+24=40KB), но контроллеру не хватает свободной страницы. Поэтому он считывает все содержимое блока и записывает его в кэш, которым может служить внешний модуль DRAM или собственный ресурс чипа (у SandForce).
- Контроллер модифицирует считанные данные, избавлясь от ставшей ненужной книги Excel.
- К оставшемуся документу добавляется картинка в формате JPEG.
- Контроллер стирает наш блок флэш-памяти, после чего записывает в него изображение и документ.
Вы просто сохранили изображение объемом 24KB, но при этом в рамках цикла «чтение — изменение — запись» контроллер прочел 24KB (этап 2) и записал 40KB (этап 5).
Получается, что в самый ответственный момент чип выполнял фактически двойную работу!
Чтобы активность системы и программ не загоняла контроллер в угол, производители SSD выделяют на диске резервную область, скрытую от системы. Но без TRIM она может лишь отсрочить неизбежную фрагментацию памяти, что возвращает нас к описанной выше ситуации. Со временем это выливается в снижение скорости записи.
Как работает SSD с TRIM
Заметьте, основная проблема в том, что контроллер заранее не в курсе, что файл уже не нужен, а точнее, что LBA уже свободен. Смысл команд TRIM и заключается в том, чтобы сообщить об этом контроллеру сразу по факту удаления файла.
Давайте рассмотрим тот же пример, но на сей раз с поправкой на TRIM.
Похоже на игру «найди в картинках N отличий»? Следите за руками контроллера, ибо тут он действует иначе:
- Вы создали два файла и удалили один из них. Операционная система сразу сообщила контроллеру об удалении книги Excel командой TRIM.
- Контроллер прочел данные из блока флэш-памяти в кэш.
- Обладая информацией о ненужности книги Excel, контроллер удалил ее.
- Контроллер очистил блок и вернул в него документ Word. В блоке доступно 24KB.
- Вы сохраняете изображение в формате JPEG размером 24KB. Контроллер просто записывает картинку в свободные страницы блока.
Да, чипу пришлось проделать лишнюю работу по считыванию 24KB в кэш (шаг 2), но это он делал в «свободное» время», равно как и запись нужного вам документа Word в очищенный блок.
Но когда поступил сигнал на сохранение картинки, контроллер записал ровно 24KB (шаг 5), поскольку ему уже не нужно было гонять килобайты между кэшем и NAND.
Однако TRIM не решает одну проблему SSD, у которых одно из основных отличий от HDD заключается в перезаписи файлов.
В описанном выше примере с единственным блоком памяти производительность все равно будет страдать при перезаписи файлов. Но когда есть свободная память, твердотельный накопитель выделяет другую страницу в NAND и помечает особым образом страницу с ненужными данными. Она очищается при стирании блока в рамках сбора мусора.
Сбор мусора и TRIM
На рисунке ниже представлен процесс записи и удаления файлов с точки зрения ОС и твердотельного накопителя на логическом и физическом уровне. Вы любите большие картинки? :)
Из диаграммы видно, что логически ОС и SSD смотрят на ситуацию одинаково — с точки зрения LBA. Но на физическом уровне TRIM играет большую роль. Получив команду об удалении файла, контроллер SSD исключает из рутинных операций страницы NAND, содержащие ненужные данные.
Благодаря TRIM, ненужные данные не считываются и не записываются в другие блоки памяти, поэтому производительность твердотельного накопителя не страдает во время операций записи. С другой стороны, снижается мультипликатор WA, т.е. продлевается срок службы SSD.
Отправляемые операционной системой команды TRIM не является приказами контроллеру, т.е. чип лишь принимает их к сведению. Данные, ставшие ненужными, удаляются во время сбора мусора, который может выполняться как одновременно с записью, так и во время бездействия.
Подход к сбору мусора определяется прошивкой контроллера, но реальная разница между стратегиями проявляется, пожалуй, лишь под непрерывной и агрессивной нагрузкой.
В этом случае активный сбор мусора помогает поддерживать пусть и не столь высокую, но зато стабильную производительность. Фоновый же сбор мусора может обеспечивать более высокую пиковую производительность, но обратной стороной медали будет существенное снижение скорости в худших сценариях.
Нужна ли SSD дефрагментация
Наверное, вы слышали, что она не нужна. Но ведь SSD фрагментируются! Представьте диск объемом 128GiB, на котором занято 100GiB. Оставшееся свободное пространство состоит из блоков, в каждом из которых есть занятые страницы памяти. Это называется фрагментация флэш-памяти.
Вы начали активно записывать данные, заполняя диск. Контроллер, который не убирался в своей квартире, столкнется с необходимостью перемещать данные туда-сюда, выполняя операции «чтение – изменение – запись».
Если бы контроллер заранее подсуетился, то смог бы просто писать данные, не отвлекаясь на уборку. Поэтому одной из важных его задач является дефрагментация памяти, алгоритмы которой закладываются в сбор мусора.
Заметьте, это задача контроллера, а операционная система тут вообще ни при чем! На диаграмме выше сопоставьте логический вид ОС и физический вид SSD. Операционная система видит логические блоки LBA, но при этом понятия не имеет, в каких блоках и страницах NAND хранятся данные!
Хотя контроллер оптимально разложил данные во флэш-памяти, с точки зрения ОС файлы могут быть разбросаны по диску. Это называется фрагментация файловой системы, но она не имеет значения для SSD.
Поэтому твердотельным накопителям не нужна дефрагментация средствами ОС или сторонних программ. Она вынуждает контроллер перемещать данные по диску без насущной необходимости. Теоретически ненужные операции записи снижают срок службы накопителя. Но на практике дефраг делается не так уж и часто, чтобы «убить SSD».
Обязательная ссылка: Почему Windows 8 дефрагментирует ваш SSD, и как этого избежать
Поддержка TRIM и Deallocate в Windows
TRIM — это команда ATA, которая может передаваться в режимах AHCI и IDE.1 В дисках NVMe команда Deallocate является эквивалентом TRIM в ATA, поэтому на практике разницы нет.
В ОС Microsoft TRIM поддерживается начиная с Windows 7. В Windows Vista и XP нужны костыли в виде стороннего ПО (читатель блога Виталий К. © так и не прислал обещанную инструкцию, но поисковики никто не отменял). Deallocate поддерживается в Windows 8 и новее.
Обычно, работу TRIM проверяют командой fsutil. На самом деле она показывает лишь то, что TRIM включен, т.е. ОС посылает команды контроллеру. Но утилита fsutil понятия не имеет, что происходит с ними потом.
Как проверить, работает ли TRIM в Windows
Вопрос, доходят ли команды TRIM до контроллера SSD, вовсе не такой праздный, как может показаться на первый взгляд. С одной стороны, обмен данными между ОС и чипом твердотельного накопителя ведется через контроллер SATA с помощью драйвера, а с другой – нельзя исключать дефект прошивки контроллера 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?
Напишите в комментариях, работает ли TRIM в вашем SSD, указав модель. Быстро ли выполняет уборку контроллер вашего SSD или ждет значительное время?
Следующая запись блога выйдет после майских «каникул».
Подборка ссылок, развенчивающих миф о том, что TRIM работает только в AHCI.↩
Андрей
В статье Вы писали:
«Подход к сбору мусора определяется прошивкой контроллера, но реальная разница между стратегиями проявляется, пожалуй, лишь под непрерывной и агрессивной нагрузкой.
В этом случае активный сбор мусора помогает поддерживать пусть и не столь высокую, но зато стабильную производительность. Фоновый же сбор мусора может обеспечивать более высокую пиковую производительность, но обратной стороной медали будет существенное снижение скорости в худших сценариях.»
Означает ли это, что команда TRIM является лишь командой, с помощью которой улучшается быстродействие ФС в «худших сценариях»? Ведь если уборка мусора вшита в контроллер, то он должен прибираться независимо от данной команды. Разница лишь в том, в какое время он прибирается. Это так? Например, если контроллер прибирается во время бездействия, а компьютер бездействует часто, то и команда в этой ситуации не нужна? Так ли это в тех ОС, в которых команды TRIM вообще нет (XP, Vista)? То есть осуществляется ли уборка в принципе, пусть только во время бездействия? И как это проверить?
Vadim Sterkin
Андрей, быстродействие ФС тут вообще ни при чем. Речь о скорости работы накопителя, что определяет контроллер. Да, разница в том, когда он убирается — с свободное время или когда вы начали писать данные на диск.
Но во время бездействия он прибирается только в случае, если получил команды TRIM и отложил уборку. Я же очень подробно расписал сценарии записи с TRIM и без. Подумайте сами, что может контроллер убирать во время бездействия, если TRIM не работает.
Виталий К. ©
Лучше добавьте, программ для этого куча.
Андрей
Vadim Sterkin,
Спасибо за ответ. Получается, что контроллер прибирается в любом случае. С той лишь разницей, что без TRIM он прибирается только в момент записи, что, конечно, существенно влияет на быстродействие.
Придется искать альтернативную программу, для ручной «уборки». Какие будут рекомендации в отношении того, как часто надо посылать эту команду? Не люблю засорять систему кучей установленных программ. В идеале научить бы саму систему работать с этой командой. Я так понимаю, добавлением параметров в реестр не обойдешься. Это программные возможности ОС. А жаль.
Vadim Sterkin
Андрей, достатчно Windows 7 и выше.
Григорий
Добрый день. Возможно ли включить TRIM на nForce 430 (MCP61, SSD — Silicon Power S55, ОС — Windows 8 32-bit)?
Здесь http://nvworld.ru/faq/nforce-ahci-support/ говорят, что AHCI не поддерживается данным чипсетом.
Значит ли это, что TRIM включить не удастя? Есть ли альтернатива?
Vadim Sterkin
Григорий, старье какое :) Смотрите в сторону стороннего ПО (гуглозапрос — trim XP)
Юрий
При старте TRIMcheck NIS 2014 ее » снес » , не разрешил исполнение, присвоив высокую степень угрозы…любопытно,раньше не реагировал
Виталий К. ©
Юрий,
Паранойя у вашего антивируса. Не понравилось ему, что ПО пытается считывать и писать на низком уровне, вот и всё. Забивайте в исключения и проверяйте.
Григорий
Vadim Sterkin,
Спасибо, Вадим.
Alex
INTEL 120
Работает ,быстро .
Григорий
Григорий,
После замены материнской платы на поддерживающую АHCI и включения оного в БИОСе, TRIM в Windows 8 заработал автоматически, c того же SSD без переустановки и правок реестра. Красота :)
Максим
Biostar TZ75B
W7 HP 64bit (драйвер 11.0.0.1032)
Plextor PX-64M3 1.04
работает
Alex
Crucial m4 256Gb
Работает
запустил через рекомендуемые 20 секунд — уже прибрался
Олег
Plextor M5Pro 128 на ASUS P5B-VM SE (G965)
Win7, драйвера MS — работает.
Сергей
Plextor M5S 128gb работает.Чипсет H77,Windows 7 64 Professoinal.
Максим
Поменял диск на самсунг 840 про 128Гб. Прошивка 00 (другой на самсунге нет). Trimcheck пишет что «disk space is too low» и отказывается выполнять запись временного файла. WTF?
Vadim Sterkin
Максим, 840 Pro (256GB) — все работает. Варианты в статье.
3in1
Трим работает
Win 8.1 х64
PX-128M5S
Андрей Артюк
А если SSD-диск подключен через USB-контроллер (USB 3.0), TRIM работать не будет?
Спасибо за ответ.
Vadim Sterkin
Андрей, я думаю, что TRIM работать не будет, потому что контроллер USB не поддерживает эту функцию. Другими словами, ОС будет отправлять команды, но до накопителя они не дойдут.
Вообще, в USB 3.0 много факторов, влияющих на производительность диска — с одной стороны, это контроллер USB в ПК, а с другой — контроллер в коробке, наводящий мост между SATA и USB. Чудес ждать не стоит, но работать будет все равно намного быстрее, чем флэшка или HDD.
Николай
Трим работает :)
Acer Aspire 5738 DZG, W7x64, SSD — M4-CT512M4SSD2 512,1 GB (crucial)
Александр
Intel 520 120 Gb работает уже год, команда TRIM работает!
Алексей
Samsung 840 pro series 128gb — РАБОТАЕТ
Николай
SSD: Samsunfg 840 EVO
MacBook pro, Windows 7 стоит на BootCamp.
TRIM кажется нормально работает!
«TRIM appears to be WORKING»
Владимир
Ноутбук: Asus G750JX
SSD: OCZ Vertex 450 128 GB. Хоть расшибись, но либо «indeterminate» либо «not working». Что на «родных» драйверах Windows, что на Intel(R) 8 Series Chipset Family SATA AHCI Controller 12.7.0.1036. Новой прошивки нет.
При этом на втором ssd, Samsung 840 EVO 750 GB, trim работает как часы на любых драйверах.
:(
Виталий
Как уже обсуждалось ранее — не удалось заставить работать TRIM на Kingston SNVP325S264. Когда только появился этот SSD, все обзоры аж визжали о его главном преимуществе — TRIM, в то время это был один из первых SSD c реализацией этой технологии.. Я только из-за трима переплатил и купил АЖ два таких накопителя )) Тестировал их вдоль и поперек, все программы в один голос твердили — ТРИМ РАБОТАЕТ!! Три года я спокойно засыпал и просыпался зная что всё сделал правильно и вот он — эпический провал, какое жесточайшее всемирное наи@алово — что я только не делал, перебрал массу дров, запускал SSDTweaker и принудительно тыркал выполнить трим, прога рисует бегающие проценты и категорично заявляет что трим СТОПУДОВ ОТРАБОТАЛ!! Но trimcheck не умалим — NOT WORKING!!!
Вадим, правильно ли я понимаю, что по итогам работы trimcheck можно смело подавать в суд на Kingston!? Походу они просто встроили в прошивку функцию отвечать утвердительно на все вопросы о трим, при этом не осуществляя никакой очистки!?
Vadim Sterkin
Виталий, у меня тот же ответ — если диски 3 года проработали, а вы ничего не заметили, у вас все ОК. И нечего тут сон терять.
Виталий
Vadim Sterkin,
В том то и дело, что всегда замечал как мой ноут деградирует спустя несколько месяцев работы, но это явление я связывал с усталостью винды )) через пол года его тупняк как правило достигал апогея и я переустанавливал винду с форматированием, после чего скорость работы меня радовала очередные несколько месяцев и все повторялось заново..
Немного изучив матчасть на иностранных форумах я выявил, что в то время многие производители SSD делали прошивки с агрессивным Garbage Collection ориентированным на ОС без поддержки TRIM (WinXP), т.е. контроллер каким-то образом сам определял когда и что ему чистить не обращая внимание на поступающую информацию от ОС. Но нигде не написано какие нужно создать условия (сколько минут/часов простоя или может наоборот нужно его нагрузить) что-бы он таки начал сбор мусора.. Я такие условия создать не смог — суток простоя не хватило для чистки следов от тримчека.. В качестве слабого утешения я прошелся ccleaner-ом и увидел таки заветную — TRIM apears to be WORKING.
Несмотря на высменную попытку замены TRIM-а ccleaner-ом на oszone-не, я задумался может всё-таки этот способ может послужить пинком под зад контроллеру SSD для наведения уборки? Может этот способ может стать альтернативой форматированию диска и переустановке ОС?
Vadim Sterkin
Виталий, а кто CCleaner высмеял на OSZone? :) Это не замена, конечно, но ваше предположение верно — удаление большого объема данных может породить GC.
Возможно, стоит посмотреть на стороннее ПО, которое реализует TRIM для XP. Предположу, что они быстро забивают диск данными под завязку, а потом сразу же удаляют их. Контроллеру волей-неволей приходится прибираться.
Иван
Здравствуйте,
SSD: CORSAIR Force LS CSSD-F60GBLS
MB: ASRock A75 Pro4
OS: Windows 8.1
TRIM работает… :)
проверял с помощью ОС — fsutil behavior query DisableDeleteNotify, ну и trimcheck-0.5 подтвердила и развеяла все сомнения…
Дмитрий
С помощью утилитки TRIMcheck я обнаружил что у меня не работает TRIM. Накопитель OCZ RevoDrive 3, драйвер при установке ОС был взят с сайта OCZ, но позже Windows 7 сама обновила его на более свежую версию. Что надо сделать, чтобы TRIM заработал? Как-то не очень хочется преждевременно угробить накопитель стоимостью в 15 000 рублей…
Vadim Sterkin
http://www.thg.ru/storage/ocz_revodrive_3_x2_obzor/ocz_revodrive_3_x2_obzor-01.html
azamat
У меня OCZ Vector 128Gb запустил утилиту Trimcheck как написано выше и получил ответ INDETERMINATE -НЕОПРЕДЕЛЕНО….что это может означать?
Vadim Sterkin
Ctrl+F — indet
Вячеслав
Corsair LS CSSD-F60GBLS работает, быстро
вомфида
Накопитель SSD 60 ГБ Kingston SSDNow V300 (SV300S37A/60G)
win 8.1
второй раз запустил сразу после первого… прога продублировала записи первого запуска. ни ошибки, ни айс. возможно, сам виноват, не закрыл, или хз. закрыл, секунд через 10 запустил — воркинг!
благодарю
Barton
Вадим, по вашему совету перехожу со своими баранами сюда:)
Прочитал статью, но вопрос остался. В контексте статьи его можно переформулировать так:
Как работает сборка мусора без trim? В самом первом примере (работа ssd без trim) вы рассматриваете крайний случай: свободного места на диске ровно столько, сколько необходимо для записи файла. В остальных случаях что помешает контроллеру, узнав об удалении книги Excel в тот момент, когда ОС прикажет ему перезаписать LBA, покрывающий ставший ненужным файл, пометить его для будущей сборки мусора (GC) и записать файл в другое свободное место?
Vadim Sterkin
Помешает отсутствие свободного места (страниц) в отдельных блоках. В отличие от ОС контроллер не знает, что эти блоки можно очистить (TRIM-то не прошел). Свободное место есть, но оно неэффективно распределено между блоками — в каждом понемногу, но недостаточно для записи целого файла. Фрагментация NAND разбиралась в статье.
И, если честно, я не понимаю, что вы хотите услышать в итоге.
Что без TRIM снижения производительности и срока службы не будет? Я такого не скажу, ибо это неверно. Вопрос снижения производительности — это вопрос условий эксплуатации и времени.
Что даже в таких условиях ваш SSD будет быстрее HDD? Да, но совершенно не исключаю, что в какой-то момент времени он станет даже медленнее.
Barton
Не понял. Для записи файла какого размера? 1000 мегабайт? 100? 10? 1? И как так получается, что его сразу нет? А свободное, ни разу не занятое ничем место? А резервное OP? Оно же есть? В любом случае оно есть сначала. Стало быть, есть возможность писать\переписывать в другое место, одновременно помечая старое место для дальнейшей работы сборщика мусора. Разумеется, работа сборщика будет эффективней с trim, но и без него она идет, как я понимаю. Или я совсем ничего не понимаю)
Понятно, что это должно сказываться и на производительности и на сроке службы. На производительности очевидно в большей степени, поскольку сборка мусора выполняется в любом случае, и без trim это делать сложнее, условно говоря.
Я тоже не исключаю, поэтому и спрашиваю тех, кто может знать больше, чем я. И тут мнения разделяются.
Vadim Sterkin
Знаете, я очень подробно объяснил все что я знаю в статье, и у меня редко получается сделать это лучше в комментариях. Я попробую, конечно.
Любого. Речь не об общем свободном месте на диске, а о фрагментации NAND и оседании удаленных системой данных в страницах NAND и блоках соответственно. Просто я показываю крайний случай, иначе это вообще не объяснить.
Поймите, что без TRIM контроллер узнает о ненужности данных только в том момент, когда ОС пишет в этот LBA. Посмотрите еще раз на большую картинку (средний столбец) — с TRIM контроллер не трогает удаленные системой данные, а просто помечает их для очистки во время GQ. Без TRIM он будет перезаписывать эти данные туда-сюда при каждом GQ — откуда ему знать, что они уже не нужны? Вот вам и сокращение ресурса накопителя.
GQ же постоянно происходит, а не только во время бездействия ОС. Да, какие-то контроллеры больше ориентированы на бездействие, но тот же SandForce или Samsung собирают мусор очень активно. Вы там пишете на диск, а он мусор собирает, ненужные данные туда-сюда гоняет. Вот вам и снижение производительности.
Сначала есть, да… Ну так я вам и говорю — производительность снижается со временем. Да, GQ есть и без TRIM, но он менее эффективен.
Надеюсь, так понятнее стало. Если нет, не обессудьте. Возможно, кто-то другой получше объяснит.
Barton
Vadim Sterkin,
Скорее, в тот момент, когда ОС хочет туда писать. А контроллер может писать при этом в свободное место, пометив блоки, о которых он только что узнал, как свободные — для последующей GC.
Соответственно, про какие-то блоки он наверное уже знает, пометив их в момент желания ОС писать туда. И да, конечно, это только какая-то их часть — остальные он мог бы тоже не перезаписывать, был бы trim — это я как-то упустил из виду, согласен.
Да. Плюс все-таки дополнительный износ ячеек, о чем я и спрашивал. Убедили, короче.
Теперь вопрос: как вы считаете, рационально ли использование современного недорогого ssd без trim под систему, или все-таки найти обычный hdd пошустрей?
Vadim Sterkin
ОС хочет и пишет в LBA, это одно понятие. А контроллер сопоставляет с ними страницы и блоки памяти на свое усмотрение. https://www.outsidethebox.ms/14789/#_Toc350509640
Я считаю, что если цель в ускорении, нужно покупать SSD и пользоваться программными решениями, которые позволяют извлечь из него преимущества.
Артюк Андрей
Vadim Sterkin,
А в этом изделии TRIM присутствует ?
SSD Transcend 128Gb ESD200 [TS128GESD200K] 2.5″ USB3.0
Если нет, то зачем производитель на это пошел?
Vadim Sterkin
Андрей,
1. Ctrl+F — usb
2. Спросите производителя.
Cl3r1k
Хорошая статья, все подробно и понятно.
В комментариях тоже бывает полезная информация, возьмем на заметку про работу TRIM на USB. Спасибо!
Artem
Здравствуйте, статья отличная, думал и мне поможет, но видно у меня не стандартная ситуация..
Материнская плата Asus P5N-D, пару дней назад приобрёл Kingston SDDnow 300v 120GB, мигрировал на него windows 7 х64. использовал указанную вами утилиту TRIMcheck — TRIM «не работает» в деспетчере пробовал обновить драйвера но контроллера с поддержкой AHCI не находит. Заходил на сайт производителя скачал утилиту Kingston Toolbox 2.0 для обновления с надеждой что что то изменится к лучшему, запустил и в ней должен был определится мой sdd и после обновится.. но программка его не видит. В биосе тоже нет возможности выставить AHCI.. Подскажите что можно сделать, так как не хочется угробить sdd
znakot
Plextor m5s
1. Работает.
2. Быстро ( 2 мин)
Ринат (Black_daw)
Samsung 840 EVO на контроллере Marvell 9128.
С драйвером от производителя — не работает.
Сменил драйвер на msahci — заработал.
Litvin
Аналогичная ситуация. Оставил драйвер msahci. Интересует вопрос, приведет ли в порядок диск работающий TRIM если раньше Trim был отключен? Спасибо.
Vadim Sterkin
Зависит от контроллера. Должен привести, но гарантирует только форматирование.
Алексей
А как перейти на AHCI в 8.1? В службе iastorv стоит start=0, службы msahci вообще нет.
Vadim Sterkin
Алексей, создайте тему в форуме Windows 8. И прежде чем в своем стиле скопипастить свой вопрос отсюда, прочтите его правила — я прослежу за этим.
Андрей
Здраствуйте, Вадим.
Хочу узнать ваше мнение по одному вопросу. Чисто теоретически, но вполне серьезно.
Представим себе ситуацию, когда, при использовании ХР у пользователя пока нет возможности перейти на семерку или приобрести коммерческий дефрагментатор (O&O например). И не важно, по каким причинам. Возможно планируется апгрейд, или смена компа. А пока нужно пожить так, как есть, на SSD.
Это понятно, что команда TRIM сообщает контроллеру, где прибраться, и он стирает в нули эти ячейки памяти. В Ccleaner тоже есть функция стирания (очистки) свободного места. Тоже забивает нулями свободное пространство. Это понятно, для чего предназначено. И это понятно, что перезаписывает все свободное пространство. Однако, как временное средство в крайних случаях разве не подойдет? Предположим, если зафиксировать тестовой программой снижение скорости записи? Или по времени, раз в месяц или в два?
Чисто теоретически, но вполне серьезно.
Vadim Sterkin
Делайте что угодно, просто отформатируйте в удобный момент. Но нули я бы не стал писать точно. Если и забивать диск, то последовательной записью больших файлов.
Добавлено позже.
1. Это не значит, что я вообще рекомендую это делать, поскольку увеличение объема записи снижает срок службы накопителя. Кроме того, зависит от контроллера — например, у SandForce производительность может даже снизиться.
2. У ряда производителей SSD (например, Intel, Samsung) есть фирменные утилиты, позволяющие выполнять TRIM.
Андрей
«Делайте что хотите, только отстаньте от меня» — такое ощущение, что смысл ответа таков.
Так что простите за назойливость. И все же. Форматирование вопрос не решает, так как предполагает переустановку Windows. Возможно, для кого-то не проблема переустановить, или даже семерку поставить, потому что все равно не лицензия. Кто-то в этом вопросе более принципиален. И пользоваться не лицензионной не собирается. Да и переустановка — геморрой. Зачем я это объясняю? Вы же и сами все понимаете! И ваши рекомендации в этом вопросе очень ценны! Тем более, что вариант развития событий, о котором я написал выше, далеко не редкость. Так посоветуйте! Подходит или не подходит по каким то причинам использование очистки свободного места в программе Ccleaner? Если подходит, какие будут рекомендации по частоте использования?
Vadim Sterkin
Андрей, я же вам ответил с технической точки зрения, перечитайте.
Андрей
Скорее всего вы не поняли сути моего вопроса. Либо недооцениваете важности вашего ответа на этот вопрос для некоторых читателей вашего блога.
В англоязычном интернете я нарыл программку, FreeSpaceCleaner, производства Microsoft, которая, по мнению некоторых пользователей, с включенной опцией FF прекрасно заменяет стандартную функцию Trim на XP или Vista. По крайней мере, один из таких пользователей писал, что, якобы он раньше работал в Microsoft, и эта утилита специально предназначена для технических специалистов компании, которые работали в XP на SSD. Но это не суть важно.
Скачав данную программу я провел эксперимент. С помощью программы trimcheck видно, что теперь trim действительно работает после операции очистки с помощью FreeSpaceCleaner. Вернее не trim работает, а данные стираются полностью. Конечно, хорошо было бы выяснить, как именно работает данная программа. Например, некто на форуме утверждал, что с включенной опцией FF эта программа не перезаписывает все пространство, а только те места, в которых что-то записано. Узнать, так ли это. Потому что если это так, то это почти идентично функции trim. Теперь можно вздохнуть свободно, и какое-то время пожить на старом компьютере, не опасаясь снижения производительности. И это вполне понятно, что данную программу не стоит использовать часто.
Уважаемый Вадим. Тема Trim еще долго не умрет. SSD только входят в моду. Все у большего и большего числа пользователей будут возникать проблемы, описанные здесь. Надеюсь, что мой опыт будет кому-то полезен.
Спасибо за ваш блог. Вы помогли мне разобраться в сути работы стирания данных, и подобрать альтернативу. Понятно, что это не панацея, но как временное средсвто — самое то. Лучше любого форматирования, или «последовательной записи больших файлов» :)
Успехов.
Vadim Sterkin
Андрей, я прекрасно понял суть вашего вопроса. Мой ответ очень простой.
Если вас заботит производительность накопителя:
1. Используйте современную ОС с поддержкой TRIM.
2. При нежелании или невозможности следовать п.1 приобретайте SSD производителей, реализующих поддержку TRIM фирменными утилитами.
Если же вы не собираетесь следовать этим двум пунктам, это ваш выбор. Но делая его и пытаясь получить «эффект TRIM», вы увеличиваете объем записи на диск, снижая срок службы накопителя. При этом вовсе не исключено, что ваши действия могут привести к деградации производительности.
Поэтому вы можете скачивать какие угодно утилиты, принцип работы которых вы не представляете (по вашим же словам), и проводить любые эксперименты над своим накопителем. Но не надо апеллировать к «множеству читателей, которым важен ответ на этот вопрос», пытаясь под этим соусом выдавить из меня какие-то сведения.
Я не даю вредных советов (это в сайдбаре написано), равно как мне неинтересны проблемы, которые люди намеренно создают себе сами.
Виталий К. ©
Забыли про реализацию трима сторонними утилитами, не связанными с производителем диска.
Vadim Sterkin
Виталий, не забыл. Они ведь действуют по тому же принципу — пишут файлы на диск, потом стирают.
Добавлено позже. Остается только надеяться, что они используют разреженные (sparse) файлы, что не увеличивает объем записи в отличие от всяких «нулей».
Виталий К. ©
Конечно. Но при этом не требуют диска определённой марки))
Vadim Sterkin
Но при этом увеличивают объем записи на диск, что я и сказал (и что вы удобно не упомянули в цитате). И вообще, мне странно все это слышать от человека, который грозился тут рассказать о TRIM в XP, но даже не сподобился на инструкцию из трех пунктов…
Виталий К. ©
За более чем год записано 2000 ГБ всего… Много?
Инструкцию писать поленился, признаю. Сейчас даже не вспомню, что я делал.
Vadim Sterkin
Это нормально, тем более SandForce. Я, кстати, вижу разницу в объемах записи (SMART) между SF и Samsung при тех же задачах.
Олег
Простите «чайника», но прочитав статью я так и не понял зачем нужны инструкции TRIM.
Точнее, почему диск не знает о том что что-то удаляется
Разве этого не достаточно контролеру для выполнения фоновых операций, аналогичных при поступлении инструкции TRIM?
Vadim Sterkin
Олег, мне редко удается объяснить в комментариях лучше, чем в статье. Поэтому попробую ассоциативно.
Представьте, что вы пришли оформлять паспорт — там электронная очередь, но кабинеты на другом этаже, надо на лифте подниматься. Вы взяли талончик с номером и сели ждать. Только там нет табло, сопоставляющего номера талончиков с кабинетами, и голосом ничего не объявляют. Зато есть охранники, которые в нужный момент толкают вас в спину — чего расселся, не видишь что-ли, кабинет свободен уже.
Вы — фрагмент данных
Кабинеты — LBA
Охранники — ОС
Табло — TRIM
Контроллер — система лифтов
Олег
Спасибо за ассоциацию. Она меня натолкнула на другую мысль, которая как мне кажется все объясняет:
«Для контролера нет команд удаления (пометки на удаления). Есть лишь запись. Удаление с точки зрения ОС — это запись определенного вида данных в определенные LBA. Для контролера это просто очередная порция данных на запись. Иными словами контролер в принципе не может отличить операцию записи файла от операции удаления файла, т.к. для него это абсолютно одинаковые вещи. Что-то куда-то записать»
Я правильно понял? :)
Vadim Sterkin
Это абсолютно не соответствует действительности.
Мне особо нечего добавить к статье, так что попробуйте прочесть объяснения на специализированных ресурсах. Возможно, они излагают лучше меня.