Ssd тормозит при заполнении

Обновлено: 03.07.2024

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

Теперь вы можете спросить: разве SSD не должны быть быстрее? Короткий ответ: да, твердотельные накопители работают быстрее, чем традиционные жесткие диски с вращающимся диском. Однако существует проблема с производительностью из-за того, как работают эти новые технологии накопителей и NAND Flash. И Вам нужно знать на сколько можно заполнять SSD, чтобы проблем со скоростью не возникало.

SSD блоки и TRIM

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

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

Почему производительность твердотельного накопителя (SSD) снижается по мере заполнения

Если блоки не пусты, то твердотельный накопитель должен удалить данные внутри них, прежде чем информация может быть снова записана, что может добавить значительную задержку, влияющую на производительность. По мере того, как вы продолжаете хранить данные и заполняете хранилище, накопитель начинает исчерпывать блоки, а поскольку твердотельные накопители могут записывать данные только на страницах 4 КБ или 8 КБ внутри блока размером 256 КБ, вы заканчиваете блоками, которые не полностью заполнен.

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

Преодоление проблемы производительности SSD

Чтобы предотвратить снижение производительности твердотельных дисков, многие производители дисков добавляют дополнительное хранилище для каждого диска, который недоступен пользователю, но это помогает гарантировать, что твердотельные накопители не будут полностью заполнены, поддерживая скорости на более приемлемом уровне.

Другими словами, добавление дополнительного хранилища уменьшает необходимость изменения частично заполненного блока для добавления новых данных. Твердотельный накопитель будет иметь более частично заполненные блоки, но это гарантирует, что производительность не будет быстро снижаться.

Поддержание скорости SSD - заполнять не более 70%

В то время как твердотельные накопители по сравнению с традиционными вращающимися жесткими дисками смешны быстрее, они резко снижают производительность по мере их заполнения.

Основное правило - держать твердотельные накопители на максимальной скорости - никогда не заполнять их полностью. Чтобы избежать проблем с производительностью, вы никогда не должны использовать более 70% от общей емкости. Когда вы приближаетесь к 70% -ному порогу, вам следует подумать об обновлении SSD вашего компьютера на более жесткий диск. Если вы не справились с этой задачей, и вам нужно больше места для хранения.

Следует отметить, что на производительность твердотельных накопителей влияет не только объем данных, которые вы в них храните, но и производительность зависит от производителя, качества компонентов, функций и уровня комплектации.

Эта проблема наиболее актуальна для аппаратных RAID или firmware RAID (таких как Intel RST RAID 1/10/5/6) с непромышленными SSD.

Особенность SSD

SSD пишут и читают данные страницами, записать можно только на очищенные страницы, а очистить страницы можно только большими блоками. Например, у диска размер страницы 8 КБ, в блоке находится 128 страниц, таким образом, размер блока — 1024 КБ (здесь и далее, если не указано иного, КБ и МБ двоичные).

Например, если изменить 40 КБ в одном файле, то на физическом уровне это будет выглядеть так:




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

Чтобы скрыть физическую реализацию, диск поддерживает карту соответствия логических и физических номеров страниц (Flash Translation Layer).

Пока мы видим только один путь, которым физическая страница сможет стать снова очищенной — если на её логический адрес запишут новые данные. Дело в том, что контроллер диска работает на уровне страниц и не знает ничего о файловой системе, а операционная система никак не извещает диск об удалённых файлах, какие секторы могут быть очищены. Несложно видеть, что рано или поздно каждая страница диска будет занята и ему будет некуда писать данные.

Чтобы решить это проблему, была добавлена команда ATA TRIM (wiki). Операционная система посылает её диску с указанием секторов, которые могут быть очищены. Аналоги этой команды — SCSI UNMAP и CF ERASE. К сожалению, в некоторых случаях нет возможности послать её диску:
— если диск находится в 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 ГБ памяти, при этом доступно 1000215216 LBA секторов. Резерв составляет: 512 × 1024 × 1024 × 1024 — 1000215216 × 512 = 35 ГБ или 6,85 %. Доступная ёмкость диска при этом составляет (512 — 35) × 1024 × 1024 × 1024 = 512 × 10^9 = 512 ГБ, уже десятичных. Samsung SSD 850 Pro 128 ГБ имеет на борту 129 ГБ, пользователю доступно 128 ГБ десятичных, резерв — 7,6 %.

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

Пример худшей ситуации: писать некуда, хотя объём занятых страниц не превышает доступный пользователю без резерва.


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

Поэтому чем больше у диска есть свободного места для манёвров, тем выше скорость записи. Сборщик мусора в фоне занимается не только очисткой и дефрагментацией блоков, но и равномерным распределением циклов записи/очистки (P/E) по блокам, чтобы они изнашивались одинаково.

Есть популярный миф, что у современных дисков настолько хороший сборщик мусора, что им не нужен TRIM. Это совершенно не так, сборщик мусора и TRIM решают разные задачи.

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

Есть три способа:
— разметить диск таким образом, чтобы оставить некоторую часть неразмеченной области, после создания RAID,
— использовать команду ATA для создания Host protected area (howto), до создания RAID,
— настроить RAID контроллер, чтобы он использовал только часть объёма диска.


Прежде чем выделить свободную область, нужно дать знать диску, что эта область ничем не занята, одним из двух способов:
— подключить диск к другому контроллеру и послать команду ATA TRIM (или при помощи O&O Defrag — есть cli интерфейс, Windows 8 встроенный оптимизатор дисков или Anvil's Storage Utilities),
— сделать полную очистку таблицы FTL, послав команду ATA Secure Erase.

Есть версия, что также можно заставить диск понять, что блоки не используются, если туда записать 0x00 или 0xFF (так называемый метод «Tony TRIM»). Возможно, для каких-то контроллеров это работает, но мои тесты не показали изменений.

На практике

У меня есть два диска Samsung SSD 540 Pro 512 GB в Intel RST RAID 1, на которых установлена Windows 8.1. После года работы я измерил производительность и был неприятно удивлён. После проверки TRIM я увидел, что он не работает.

— Проверка TRIM под Windows,
— Проверка TRIM под Linux:
Колонки DISC-GRAN и DISC-MAX обе должны быть больше 0 для всех участвующих компонентов.

Альтернативный вариант:
После удаления файла на диске должны быть 0x00 или 0xFF, но это недостоверный способ: разные диски ведут себя по-разному.

TRIM в реальном времени включается опцией «discard» при монтировании диска:

TRIM для файловых систем на одиночных дисках и LVM поддерживается с ядра Linux 2.6.33. TRIM для mdraid поддерживается с ядра Linux 3.7. Но может быть портирован и на старые версии ядра, например, поддерживается в CentOS 6.

По-умолчанию Ubuntu делает TRIM по расписанию раз в неделю при помощи fstrim, но только для одиночных дисков (не mdraid) следующих производителей: Intel, Samsung, OCZ, SanDisk и Patriot и если установлен «hdparm».

— Проверка TRIM в FreeBSD:
ZFS по-умолчанию поддерживает TRIM начиная с версии FreeBSD 9.2:

GEOM RAID gmirror поддерживает TRIM с FreeBSD 9.1:
колонка «d/s» — BIO_DELETE/second.

Intel RST RAID поддерживает TRIM только для типа RAID 1, как исключение: для включения нужно убедиться, что драйвер Intel RST версии 11 и выше, и прошивка OROM (Legacy boot) или SataDriver (UEFI boot) версии 11 и выше, или старая версия, но пропатченная. TRIM поддерживается в Intel RSTe RAID 0/1/10 начиная с версии 3.7.0.1093.

Я решил создать неразмеченный раздел диска для over-provisioning.
1. При помощи Acronis Backup я снял образ диска. Также сохранил таблицу разделов (важно иметь первый сектор, последний сектор, GPT тип раздела, GPT уникальный идентификатор, имя раздела).

2. Перезагрузился в BIOS и сделал SSD Secure Erase. Если этого пункта нет в BIOS, то можно выполнить команду при помощи hdparam (или здесь и здесь, есть под Windows), HDDErase или HDAT2.

3. Собрал RAID 1 на двух дисках.

Здесь нужно сделать важное замечание: при инициализации массива RAID-контроллер считывает каждый сектор с одного диска и записывает его на второй. Теоретически это должно помешать всей нашей затее, и на одном диске не будет over-provisioning. Но тесты показали, что этот метод почему-то работает. У меня этому нет объяснений.

4. Загрузился с LiveCD и при помощи GPT fdisk создал нужную таблицу разделов: последний раздел на 104 ГБ меньше, чем раньше. Разделы нужно выравнивать (partition align) по размеру страницы диска, а не по размеру блока.

5. Восстановил из резервной копии каждый раздел.

После этого я полностью заполнил диск и запустил тесты. Это должно показать худший случай. Кеш Windows включён, регулярная запись кеша выключена, Inter RST write-back выключен, все тесты используют область диска фиксированного размера в 40 ГБ. Тестировать диски непросто, поскольку показатели могут меняться во времени. Ниже сведены показатели установившегося состояния.

Я сравню три состояния:
— Один диск без RAID, полностью заполненный, стандартная скрытая резервная область 6,58 %.
— Один диск без RAID, после запуска на нём TRIM свободного места.
— Два диска в RAID 1, полностью заполненные, стандартная скрытая резервная область 6,58 %.
— Два диска в RAID 1, полностью заполненные, over-provisioning 27,24 % (включая скрытую резервную область).






Анализ результатов:
— чтение с RAID 1 оказывается быстрее, чем с одного диска, невзирая на то, что у нас всего лишь firmware RAID.
— запись тем быстрее, чем больше нераспределенного пространства: на первом месте TRIM, на втором — наш самодельный over-provisioning.

Установившееся состояние не всегда достигается быстро. Посмотрим тест последней конфигурации (over-provisioning 27,24 %) в динамике и увидим худший случай:



Любопытный процесс идёт первые 400 секунд, после чего производительность возрастает и стабилизируется. Я думаю, параллельно с записью работает сборщик мусора, который дефрагментирует блоки и подготавливает их для записи. Такое поведение наблюдается не каждый раз, а время от времени. Видно, что последовательная запись проседает до 70 МБ/с, случайная запись — до 18000 IOPS. Эти показатели всё равно в два раза лучше, чем без over-provisioning (32 МБ/с и 7139 IOPS соответственно). Чтобы убедиться, что установившееся состояние на самом деле имеет такую высокую производительность, я также выполнил тест в течении 30 минут, при этом было записано на диск 490 ГБ со средним 69721 IOPS.

Кратко

— Если диск получает ATA TRIM от ОС, то беспокоиться не о чем, достаточно оставлять часть места на диске свободным.
— Если используются дорогие промышленные диски, то проверьте объём встроенной резервной области, если он достаточен, то проблем с записью не будет.
— В остальных случаях нужно оставить не размеченную область, чем больше её размер, тем меньше будет стандартное отклонение латентности записи.
— Иногда сборщик мусора не успевает подготовить чистые блоки и скорость записи может просесть и быть непостоянной.
— После over-provisioning установившаяся максимальная скорость записи повысилась с 7000 до 68000 IOPS, а средняя минимальная — с 6000 IOPS до 19000 IOPS.

Всем привет, дорогие друзья. Рад вас видеть! Сегодня я расскажу о нескольких способах, как сделать свой SSD медленнее. Ну это так, шутка. На самом деле, проверить несколько пунктов следует всем, чтобы убедиться, что ваш SSD работает на максимальной скорости. Давайте начнем по порядку.

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

От чего может тормозить SSD?

Способов замедлить диск достаточно много, но выделю основные: неправильный режим работы, интерфейс подключения, частое обращение системы к диску. Разберемся с каждым из них.

Загрузка диска на 100%

Это - самая распространенная проблема, с которой, с большой вероятность, сталкивались многие из вас. Дело в том, что винда - система сложная, поэтому тут периодически вылезают какие-либо баги, которые грузят железо компьютера.

Вот довольно распространенный пример: системный процесс грузит диск на 100% Вот довольно распространенный пример: системный процесс грузит диск на 100%

Прежде всего, нужно открыть диспетчер задач, чтобы понять - какой конкретно процесс загружает диск. Как только виновник найден, существует два пути:

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

Второй вариант . Удаляем файл, который грузит диск. В диспетчере устройств находим процесс, который грузит диск. Щелкаем ПКМ по нему, затем открываем расположение файла. Открывается папка, в которой уже выбран тот файл, что в данный момент выбран нами в диспетчере задач.

Теперь смотрим, что это за файл, в интернете, если это какой-то системный файл. Забегая вперед, скажу, что системные файлы удалять нельзя, и единственным выходом будет исправление ошибки. Если же систему грузит какой-то не особо важный файл, то его вполне можно и удалить, при условии, что этот файл - точно не повлияет на работу системы, то есть не является системным.

Но даже так, прежде чем удалять - надо разобраться в том, почему именно диск нагружается, поскольку нагрузка диска может быть и признаком вирусной тусовки на вашем компьютере. Всех случаев 100% загрузки диска в одной статье я не напишу, поэтому форма выглядит так: "*имя процесса* грузит диск на 100%". Нажимаем "поиск в Google, натыкаемся нна статьи, которые посвящена каждому отдельному случаю, коих очень немало.

Интерфейс подключения

Тут все тоже очень просто: интерфейс SATA 3 имеет полную совместимость с интерфейсом SATA 2, то есть диск с 3-й версией подключить к разъему второй версии - можно. В случае с жесткими дисками - не критично, ибо нынешние устройства только-только подбираются к пределам возможностей интерфейса IDE (150 мб/с, фактически меньше - около 120-130 мб/с, так что можно сказать, что его мы таки преодолели).

Но вот в случае с SSD - обязательно нужно подключать его к последней версии SATA, поскольку скорость SATA SSD уже подошла к пределам разъема SATA 3. При подключении к SATA 2 мы получим его предельную скорость, которая, в то же время, будет меньше предельной скорости работы SSD.

Однако зачастую, вызвать конкретные тормоза это не сможет. У нас упадет скорость работы, фактически - вдвое, но это все еще быстрее, чем почти все традиционные жесткие диски (покажите мне диск для ПК с интерфейсом SATA 3, который бы уперся в предел возможностей SATA 2 - это около 250 мб/с). Но если нужна скорость, то лучше все-таки подключить SSD к соответствующему порту.

Для этого нужно найти SATA 3 порты, они обычно как-то выделены на фоне остальных, например - имеют другой цвет, или расположены в другом месте. Некоторые говорят, что для этого нужен и SATA 3 кабель, но так как они полностью идентичны, при подключении SATA 3-SATA 3 через кабель SATA 2, скорость поменяться не должна. Хотя это может зависеть от каждого конкретного кабеля, но у меня с этим проблем не было.

Режим работы

Режим работы контроллера очень сильно влияет на производительность дисков, особенно - когда к ним требуется частый доступ (например, при записи кучи маленьких файлов). Посмотреть режим контроллера можно в BIOS или UEFI, хотя на почти всех более-менее актуальных сегодня железках, он уже с завода стоит в верном положении.

Кстати о "положениях" - их всего два. IDE и AHCI. Как вы понимаете, IDE - не наш вариант. Он нужен для тех устройств, которые по каким-то причинам, не могут использовать AHCI, хотя таких я вообще еще не видел. В любом случае, этот режим - самый простой, а значит - может пригодиться для каких-нибудь отладочных работ.

В то же время, как следует из названия, в этом режиме диски функционируют со скоростью IDE, то есть - около 120-130 мб/с, что для SSD диска - критично. Еще критичнее - скорость чтения и записи массива мелких фалов, которая очень сильно страдает. А ведь это - вроде как главное преимущество SSD перед HDD, которое в данном случае - полностью нивелируется.

Также причиной тормозов может быть и неисправность жесткого диска

Посыпавшийся жесткий диск будет работать гораздо медленнее исправного, поэтому также желательно проверить и его здоровье. Благо, каждый диск умеет проводить самодиагностику - S.M.A.R.T. Так что все, что нам нужно - просто считать данные из этого файла, после чего сделать выводы.

Близкий к мертвому HDD во время тестирования Victoria. Кстати, полностью сканировать диск она умеет не только из-под DOS, но и из-под виндовс Близкий к мертвому HDD во время тестирования Victoria. Кстати, полностью сканировать диск она умеет не только из-под DOS, но и из-под виндовс

Самой простой является утилита CrystalDiskInfo, которая показывает состояние диска прямо из-под ОС. В то же время, она не очень информативна - можно только просмотреть значения.

Для более детальной диагностики, нужно установить на чистую флешку утилиту HDD Victoria, а после в биосе (или уефи) выставить загрузку с флешки. Проверка займет довольно продолжительное время, однако программа делает опрос каждого сектора диска в реальном времени. И вот она уже даст более детальную картину здоровья жесткого диска. Хотя, как говорил выше, можно и из-под системы этой прогой просканировать диск.

К примеру, если много секторов с долгим откликом, но которые все-таки отвечают, то это не очень хороший признак, но в SMART такие сектора помечаются как "OK", поскольку. Ну, они же ответили.

Если статья понравилась - не забудь поставить лайк, подписаться на канал , а также на нашу группу ВК . До скорого!


Сам обзор сейчас найти не могу, это и не важно. Смысл в том, что за не большие деньги вы покупаете вполне реальный 240 гигабайтный SSD диск с не самыми высокими, но вполне нормальными параметрами. Долго думать не стал, деньги действительно не большие и решил я приобщиться к миру SSD. До этого опыта работы с ними у меня не было.

В одном из комментариев был совет о смене интерфейса работы жестких дисков. Вот он:


Сразу зашел в биос и поменял. Кабель сата был дома, но решил все таки купить новый, чтоб не думалось. Подключил в сата3. Windows 7 решил не переносить, а установить заново. Все заработало, загрузка стала быстрее, программы веселей запускаются. Казалось бы живи и радуйся. Но тут решил я померить скорость диска и тут бац!


Скорость чтения норм., а вот скорость записи не айс. По советам с инета отключил индексацию дисков. Отключил гибернацию. Отключил еще что-то, что точно не помню. Особо ситуацию это не поменяло.
Принудительно обновил все драйвера еще раз (точнее переустановил), опять не то. Немного поднялась скорость чтения, а скорость записи так и осталась на том же уровне.


Решил померить другой программой и получил вообще вот такой результат


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

Прод. — 120 мб/с это очень хорошая скорость.
Я — ВЫ СЕРЬЕЗНО?!
Прод. — Ну да. Это нормальная работа таких дисков.
Я — ?!
Прод. — Ну да, они все так работают

Блинство! На кого все это рассчитано? Они людей вообще за дебилов считают?

Поняв что разговаривать мне с ними не о чем, спросил адрес сервисного центра и поехал за консультацией туда. В сервисе мне ничего не посоветовали, а сказали принести диск на тест. На следующий день я принес им диск, они тупо проверили на битые секторы и не найдя их выдали мне заключение, что диск исправен. На мой вопрос: "Что со скоростью?" сказали, что скорость они не тестируют.

Собственно вопрос. Куда мне теперь копать? Возможно нужно поставить куда нибудь галочку или наоборот убрать? Что делать?

Комп у меня конечно не для полетов в космос, но со своими обязанностями вполне справляется, менять пока не хочу. Диск заполнем менее чем на четверть. Вот скрин системы:


Всем ответившим заранее спасибо!

п.с. Чуть не забыл. Когда принес диск я его протестировал из под старой виндовс, еще до переключения режимов работы жесткого диска. Размер соответствует:


Скорость чтения чуть ниже чем сейчас, а скорость записи гораздо выше. Тестировал 2 раза, скорость почему-то немного разная



С сайта Sandisk скачал программу. Обновил прошивку диска. Теперь скорость пришла в норму, чтение даже чуть выше заявленной в характеристиках.

Читайте также: