Поддержка твердотельных накопителей в Windows 7

Вокруг потенциально широкого внедрения твердотельных запоминающих устройств (далее – SSD) сегодня ведётся много разговоров, преисполненных надежд и энтузиазма. Предполагается, что они займут место НЖМД, особенно в портативных ПК и, как многие убеждены, в серверах. Как и в случае с любой другой новой технологией, одного лишь факта её существования недостаточно для внедрения – необходимо пересмотреть работу всех узлов системы (операционная система, низкоуровневая поддержка устройств, приложения), чтобы получить ожидаемый эффект в повседневном использовании. В этой статье мы увидим, как Windows 7 подготовили к современному поколению SSD. Эта область сегодня бурно развивается, и , скорее всего, так и будет продолжаться, и мы и дальше будем оптимизировать Windows для продуктивной работы с этими устройствами. Мы полагаем, что технология SSD продолжит своё развитие, – возможно, впереди у нас новые компромиссы и ограничения, связанные с реализацией низкоуровневой поддержки. Автор этой статьи, Майкл Фортин (Michael Fortin), надеется, что она поможет многим из тех, кто работает над вопросами хранения данных и другими фундаментальными аспектами функционирования системы. – Стивен

Многие современные SSD обещают улучшение производительности, увеличение скорости реакции на запросы, лучшее время автономной работы для портативных ПК, непревзойдённую отказоустойчивость, ускоренную загрузку ОС и приложений, уменьшение шума и вибраций. Поскольку цены на устройства постоянно снижаются, многие эксперты-аналитики предполагают, что всё больше и больше компьютеров будет продаваться с такими дисками вместо традиционных НЖМД.

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

Произвольное чтение: отличный шанс для SSD

SSD показывают хорошие результаты в тестах на произвольное чтение. Многие из них существенно обходят традиционные НЖМД, поскольку механизму требуется время на позиционирование считывающей головки. В результате SSD осуществляют произвольное чтение 4 Кб данных в 100 раз быстрее обычного НЖМД (0,1 мс вместо 10).

Последовательное чтение и запись: хорошие результаты

Операции последовательных чтения и записи выполняются на уровне от «очень хорошо» до «превосходно». Поскольку микросхемы в накопителе соединены параллельным интерфейсом и данные равномерно распределяются между ними, сегодня лучшие SSD выполняют эти операции со скоростями свыше 200 Мб/с, что почти вдвое больше того, что может обеспечить НЖМД со скоростью вращения шпинделя 7200 об/мин. Некоторые устройства осуществляют последовательное чтение намного быстрее обычных жёстких дисков, а большинство их очень достойно выдерживают соревнование. На рынке, однако, представлены SSD-устройства с весьма отличными характеристиками производительности последовательных операций. Некоторые оставляют традиционные винчестеры далеко позади, некоторые слегка проигрывают НЖМД, а кое-какие просто не выдерживают никакого сравнения.

Произвольная запись и перезапись: результаты существенно разнятся

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

Что это означает – произвольная запись требует больше времени? Обычному НЖМД требуется от 7 до 15 мс, чтобы переместить блок данных в 4 Кб на вращающемся носителе информации. Доказано, что многие считают такую скорость неприемлемо медленной. Поэтому большинство НЖМД имеют кэш от 8 и более Мб. Когда запись кэшируется, ответ на запрос ОС приходит, хотя данные ещё не записаны на диск как таковой. Обычно эта запись происходит в течение нескольких сотен микросекунд (мкс) (что в 10 – 20 раз быстрее, нежели запись непосредственно на диск). Если посмотреть на общую статистику – миллионы записей в тысячах тестов – мы увидим, что в 92% случаев блок данных в 4 Кб или меньше записывается менее, чем за 1 мс, в 80% – менее чем за 600 мкс, и в 48% – менее, чем за 200 мкс. Кэширование работает!

Иногда НЖМД испытывают проблемы с пакетным режимом произвольной записи и перезаписи. Если диск кэширует слишком много в течение слишком большого времени, то последующая одномоментная запись всего ранее кэшированного на диск может быть затруднена. Это, наряду с сопутствующими операциями ввода/вывода, может существенно замедлить время реакции устройства. Некоторым из них, по нашим наблюдениям, требовалось от половины до целой секунды для завершения одной-единственной операции ввода/вывода и десятки секунд для того, чтобы вернуться в состояние, когда его реакция становится приемлемой. Для пользователя это выглядит как весьма неприятное ожидание, пока устройство оживёт. Только представьте себе: скачок времени выполнения одной задачи – от 200 до 1 000 000 мкс (1 секунда).

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

Произвольная запись и перезапись: почему это так сложно?

Многим трудно поначалу понять, почему SSD испытывают с проблемы произвольной записью, с которые традиционные НЖМД расправляются на раз-два. Ведь SSD не нужно шуршать головками и вертеть шпиндель для того, чтобы найти нужный блок информации. Так в чём же дело, почему всё так ужасно? Однако с точки зрения теории в этом нет ничего необычного.

Чтобы ответить на этот вопрос, необходимо кое-что пояснить, и статья Ананда раскрывает многие детали. Если у вас достанет любопытства, пожалуйста, найдите время прочесть её, а также документацию USENIX. Чтобы не повторяться, мы укажем лишь на несколько важнейших моментов.

  • Большинство SSD собраны из отдельных чипов памяти, выполненных по технологии SLC или MLC. В принципе, возможно построение SSD на чипах DRAM. Это сделает накопитель очень быстрым, но в то же время дорогим и неэкономичным. Поскольку такие устройства не слишком распространены, остановимся на популярных SSD на основе чипов NAND. SSD будущего, вероятно, смогут использовать преимущества иных технологий энергонезависимой памяти перед обычной флэш-технологией.
  • Ячейка флэш-памяти – это клетка, ловушка для электронов, которым, конечно же, не нравится сидеть в клетке. Представьте себе следующее. Предположим, наличие в клетке 100 электронов означает, что значение бита равно 0, а меньшее число – 1. Логика контроллера должна установить границы толерантности: например, в диапазоне от 80 до 120 электронов значение бита всё ещё равно 0. Диапазон толерантности необходим, поскольку некоторые электроны могут ускользнуть из ловушки, а некоторые могут просочиться из ячеек, расположенных поблизости – и т.д. В результате требуется довольно сложная логика коррекции ошибок для обеспечения целостности данных.
  • Чипы флэш-памяти обычно собирают в сложные структуры: блоки, кристаллы, линейки и пакеты. Размер, расположение, соединение, износ, внутрисхемные контакты и скорость передачи данных могут различаться ‑ и различаются ‑ весьма значительно.
  • Ячейку перед записью необходимо стереть. Вы просто не можете положиться на то, что в ней нет лишних электронов, поэтому перед заполнением её новой порцией межатомных странников требуется гарантированная очистка «помещения». Стирают ячейки обычно не поодиночке, а целым блоком (как правило, 128 Кб). Время удаления довольно длительное ‑ около 1 мс или больше.
  • Флэш-память имеет конечное количество циклов записи. В какой-то момент ячейка просто перестаёт работать в качестве ловушки для электронов. Если часто обновляемые данные (например, журнал состояния системы) постоянно записывать в одни и те же ячейки, эти ячейки подвергнутся износу быстрее тех, что содержат данные для чтения. Распределение износа – необходимая функция для контроллера накопителя, он должен уметь так располагать запись данных, чтобы износ ячеек был более или менее равномерным. Если всё сделано как надо, большинство устройств способны при нормальной нагрузке работать годами в качестве накопителя для ПК или ноутбука.
  • Для того, чтобы накопитель быстро и безошибочно улавливал электроны и чтобы при этом не выходил внезапно из строя, нужны отличные специалисты-физики и инженеры в области твердотельной электроники. Далеко не все производители SSD располагают нужными кадрами в достаточном количестве.

Падение производительности со временем, износ и подстройка

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

Разумеется, производители оборудования и Microsoft стремятся обеспечить наивысшие характеристики производительности накопителей. Лучшие из поставщиков пытаются преодолеть проблемы старения ячеек путём предварительного стирания блоков, так что падение производительности в обычных условиях эксплуатации становится незаметным; другим методом может быть выделение дополнительного пространства для коротких циклов записи и удаления. Создаваемые для корпоративного использования SSD-накопители могут иметь до 50% зарезервированного пространства для обеспечения желаемой продолжительности поддержания высокого уровня производительности при перезаписи.

Кроме того, производители и Microsoft разработали специальную процедуру подстройки. Если Windows 7 получает от накопителя сведения, что он поддерживает функцию подстройки в наборе команд интерфейса АТА, файловая система NTFS потребует от драйвера АТА, чтобы при удалении файлов с устройства и отсутствии опасности потери данных ячейки и блоки были очищены. Получив эту информацию, накопитель может планировать стирание соответствующих блоков в специальном – «неторопливом» – режиме, чтобы при последующей записи пакетная очистка ячеек не требовалась, поскольку ячейки уже и так готовы к новому циклу.

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

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

Краткий обзор улучшений в Windows 7 и поведения системы

Как говорилось выше, современным SSD нужно выполнить значительное количество операций для осуществления успешной записи и перезаписи. Windows 7 будет хорошо работать с такими накопителями, поскольку мы осуществили целый ряд инженерных усовершенствований для уменьшения циклов записи/перезаписи. Это положительно отразится и на традиционных НЖМД, но особенно выиграют именно современные SSD-накопители.

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

По умолчанию на SSD-накопителях с высокой производительностью произвольных чтения, записи и перезаписи будут также отключены технологии Superfetch, ReadyBoost и Рrefetch для операций загрузки ОС и программ. Все эти функции были разработаны для традиционных НЖМД, где произвольное чтение может быть узким местом.

Поскольку SSD показывают наилучшие результаты, когда системные разделы созданы так, чтобы учитывать особенности накопителей, все инструменты для создания разделов под Windows 7 работают соответствующим образом.

Часто задаваемые вопросы по твердотельным накопителям

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

В: Будет Windows 7 поддерживать подстройку?

О: Да. Выше об этом уже говорилось.

В: Будет ли дефрагментация по умолчании отключена для SSD?

О: Да. Автоматический запуск задачи дефрагментации не будет включать разделы, созданные на SSD или определяющих себя как таковые. Кроме того, если системный раздел покажет производительность операций произвольного чтения выше, чем 8 Мб/с, он тоже будет исключён из списка для дефрагментации. Уровень производительности был определён в результате внутреннего тестирования.

Тест уровня пороговой производительности был добавлен в окончательную версию в связи с тем, что лишь некоторые из имеющихся на рынке SSD определяют себя в системе именно как SSD. 8 Мб/с – это довольно скромно. Производительность SSD находится в диапазоне от 11 до 130 Мб/с. Мы проверили 182 НЖМД, и только 6 из них превысили планку в 2 Мб/с в тесте на произвольное чтение. Результаты остальных 176 лежат между 0,8 и 1,6 Мб/с.

В: Будет ли Superfetch отключён для SSD?

О: Да, для большинства компьютеров с SSD. Если накопитель представляет собой SSD, и если он показывает адекватные результаты при произвольной записи/перезаписи, тогда Superfetch, Рrefetch для загрузки и запуска приложений, ReadyBoost and ReadуDrive будут отключены.

Первоначально эти возможности должны были быть отключены для всех SSD, но мы обнаружили, что на некоторых системах это приводит к снижению производительности. Исследуя возможные причины такой ситуации, мы установили, что некоторые ранние модели SSD имеют серьёзные проблемы с произвольной записью, в конечном счёте ведущие к тому, что считывание с диска останавливается вообще и на длительный срок. Со включёнными Superfetch и Рrefetch производительность при повседневном использовании снова заметно возросла.

В: Рекомендуется ли сжатие для файлов и каталогов в файловой системе NTFS на SSD?

О: Сжатие файлов помогает сэкономить место на диске, но требует дополнительных мощностей процессора на сжатие и распаковку, что ведёт к повышенному расходу энергии на портативных ПК. Строго говоря, для папок и файлов, используемых очень редко, сжатие может послужить хорошим инструментом экономии дорогого на SSD места – в случае, если свободное пространство действительно так уж необходимо.

Однако, мы не рекомендуем пользоваться сжатием в случаях, когда папки и файлы постоянно используются. Ваши папки «Документы» и файлы в них проблемой не являются, а вот временные интернет-папки и почтовые каталоги сжимать не стоит, поскольку в них постоянно происходит запись и перезапись большого количества файлов в пакетном режиме.

В: Отличается ли работа индексатора поиска Windows на SSD?

О: Нет.

В: Оптимизирована ли процедура шифрования по протоколу Bitlocker для работы с SSD?

О: Да, на NTFS. Когда Bitlocker впервые конфигурируется для определённого раздела, он считывается целиком, шифруется и записывается обратно. Как только это произойдёт, файловая система выдаст команду осуществить подстройку, которая оптимизирует работу накопителя.

Мы призываем всех пользователей, озабоченных сохранностью и защитой своих данных, задействовать Bitlocker на своих дисках, включая SSD.

В: Производит ли Media Center какие-либо специальные действия при конфигурации на SSD?

О: Нет. Хотя SSD имеют преимущества перед традиционными НЖМД, цена за 1 Гб для твердотельных накопителей всё ещё существенно выше, чем для обычных дисков. Для большинства пользователей оптимизированный для мультимедийного контента НЖМД остаётся пока лучшим вариантом, поскольку такое содержимое предполагает значительную записывающую и воспроизводящую нагрузку, которая имеет характеристики последовательного чтения/записи.

В: Имеет ли смысл кэширование записи для SSD и как Windows 7 помогает поддержке кэширования записи, если SSD-накопитель её поддерживает?

О: Некоторые производители устанавливают на свои устройства чипы RAM не только для работы контроллеров; они должны, как и в случае с традиционными дисками, кэшировать считывание и по возможности запись. Для накопителей, которые кэшируют запись в быстрой энергонезависимой памяти, Windows 7 предполагает, что наличие команд на перезапись и очерёдность записи будет не менее эффективной, чем для НЖМД. Кроме того, Windows 7 предполагает, что пользовательские настройки, отключающие кэширование, будут трактоваться SSD-накопителем так же, как если бы он был обычным диском.

В: Имеет ли смысл настраивать RAID для SSD?

О: Да. Надёжность и производительность, приобретаемые с помощью конфигурирования RAID на традиционных дисках, сохраняются и при использовании SSD.

В: Нужно ли располагать файл подкачки на SSD?

О: Да. Основные операции с файлом подкачки ‑ это произвольная запись небольших объёмов или последовательная запись крупных массивов данных. Оба типа операций отлично выполняются на SSD.

Анализируя телеметрию, сосредоточенную на оценке записи и считывания для файла подкачки, мы обнаружили, что:

  • чтение из Pagefile.sys превалирует над записью в pagefile.sys в сочетании 40:1,
  • блоки считывания для Pagefile.sys обычно довольно малы, 67% из них меньше или равны 4 Кб, а 88% – меньше 16 Kб.
  • блоки записи в Pagefile.sys довольно велики, 62% из них больше или равны 128 Kб и 45% – почти точно 1 Mб.

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

В: Существуют ли какие-либо ограничения для использования режима гибернации с SSD?

О: Нет, hiberfile.sys записывается и считывается последовательно большими блоками, и может располагаться как на SSD, так и на НЖМД.

В: Какие изменения внесены в Windows Experience Index, чтобы правильно отражать параметры производительности SSD?

О: В Windows 7 это новые критерии оценки произвольной записи, перезаписи и считывания. Лучшие образцы могут получить индекс от 6.5 до 7.9. Чтобы попасть в этот диапазон, накопители должны иметь выдающиеся характеристики по указанным типам операций и быть устойчивыми к тяжёлым нагрузкам такого типа.

Во время бета-тестирования Windows 7 были случаи, когда индекс варьировался от 1.9 до 2.9, или как будто диск (SSD или НЖМД) вообще не работал, как положено, при выполнении оценки производительности. Мы получили очень много откликов по этой проблеме, большинство возражало против таких низких оценок. В результате мы просто запретили SSD с потенциальными проблемами производительности участвовать в соревновании за оценки уровня 6.0+ и 7.0+, добавленные совсем недавно. SSD, которые не относятся к фаворитам такого рода гонок, получат индексы примерно такие же, какие они имели бы в Windows Vista, не приобретая особых преимуществ от роста производительности произвольной записи в Windows 7.

Майкл Фортин (Michael Fortin),

программный менеджер команды Fundamentals